{"version":3,"sources":["webpack:///./node_modules/chart.js/src/plugins/plugin.legend.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/km.js","webpack:///./node_modules/chart.js/src/helpers/helpers.options.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/chart.js/src/core/core.animation.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/eo.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/lt.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/nn.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ms.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/lb.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/me.js","webpack:///./node_modules/chart.js/src/core/core.defaults.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/tr.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/sv.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/az.js","webpack:///./node_modules/chart.js/src/controllers/controller.line.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/gd.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/it.js","webpack:///./node_modules/chart.js/src/platforms/platform.basic.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/uk.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/fr.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/en-ie.js","webpack:///./src/doctor-app/service/DoctorScheduleService.ts","webpack:///./node_modules/chart.js/src/core/core.plugin.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/is.js","webpack:///./node_modules/chart.js/src/core/core.datasetController.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ky.js","webpack:///./node_modules/chart.js/src/core/core.element.js","webpack:///./node_modules/chartjs-color/node_modules/color-convert/conversions.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ta.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ro.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/vi.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/si.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ss.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/sq.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/pt.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/gl.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/yo.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/fy.js","webpack:///./node_modules/chart.js/src/charts/Chart.Bar.js","webpack:///./node_modules/chart.js/src/elements/element.point.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/cs.js","webpack:///./node_modules/chartjs-color/node_modules/color-convert/index.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/mr.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/el.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/bo.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/chart.js/src/charts/Chart.Bubble.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/se.js","webpack:///./node_modules/chart.js/src/scales/scale.time.js","webpack:///./node_modules/chart.js/src/helpers/index.js","webpack:///./node_modules/chart.js/src/helpers/helpers.canvas.js","webpack:///./node_modules/chart.js/src/charts/Chart.Scatter.js","webpack:///./node_modules/chart.js/src/charts/Chart.Doughnut.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/fi.js","webpack:///./node_modules/chart.js/src/helpers/helpers.core.js","webpack:///./node_modules/color-name/index.js","webpack:///./node_modules/core-js/modules/_object-to-array.js","webpack:///./node_modules/chart.js/src/core/core.layoutService.js","webpack:///./node_modules/chart.js/src/elements/element.line.js","webpack:///./src/doctor-app/service/DoctorAppointmentService.ts","webpack:///./node_modules/chart.js/node_modules/moment/locale/pa-in.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/eu.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/kk.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/tzl.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/de-ch.js","webpack:///./node_modules/chart.js/src/chart.js","webpack:///./node_modules/chart.js/src/controllers/controller.doughnut.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/sl.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/my.js","webpack:///./node_modules/chart.js/src/elements/element.arc.js","webpack:///./node_modules/chart.js/src/scales/scale.linear.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/chart.js/src/scales/scale.logarithmic.js","webpack:///./node_modules/chart.js/src/controllers/controller.bar.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/en-au.js","webpack:///./node_modules/chart.js/src/controllers/controller.radar.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ru.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/mi.js","webpack:///./node_modules/chart.js/src/controllers/controller.bubble.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/et.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/da.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/id.js","webpack:///./node_modules/chart.js/src/core/core.scale.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/bn.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/be.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/sk.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/sw.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ar.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/cy.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ja.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/bg.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/dv.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/af.js","webpack:///./node_modules/chart.js/src/core/core.ticks.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/tlh.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/sr.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/th.js","webpack:///./node_modules/chart.js/src/platforms/platform.js","webpack:///./node_modules/chart.js/src/charts/Chart.Radar.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/de.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/mk.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/nl-be.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/hu.js","webpack:///./node_modules/chartjs-color-string/color-string.js","webpack:///./node_modules/chart.js/src/plugins/plugin.title.js","webpack:///./node_modules/chart.js/src/core/core.interaction.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/lv.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/te.js","webpack:///./node_modules/chart.js/src/core/core.helpers.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/en-nz.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/tzm.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/uz.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/chart.js/src/scales/scale.linearbase.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/pl.js","webpack:///./node_modules/chart.js/node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./node_modules/chart.js/node_modules/moment/locale/bs.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/nl.js","webpack:///./node_modules/chart.js/src/charts/Chart.PolarArea.js","webpack:///./node_modules/chart.js/src/platforms/platform.dom.js","webpack:///./node_modules/core-js/modules/web.dom.iterable.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ka.js","webpack:///./node_modules/chart.js/src/core/core.scaleService.js","webpack:///./node_modules/chart.js/src/helpers/helpers.easing.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ms-my.js","webpack:///./node_modules/chart.js/src/plugins/plugin.filler.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/fo.js","webpack:///./node_modules/chart.js/src/elements/index.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ca.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/es-do.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/lo.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/de-at.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/sd.js","webpack:///./node_modules/chart.js/src/core/core.tooltip.js","webpack:///./node_modules/chart.js/src/core/core.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ko.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/hi.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ne.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/fa.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/hr.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/he.js","webpack:///./src/doctor-app/views/home/Home.vue?e411","webpack:///./src/doctor-app/views/home/TodayDashboard.vue?a496","webpack:///./src/doctor-app/views/home/TodayDashboard.vue","webpack:///./src/doctor-app/views/home/TodayDashboard.vue?ba8c","webpack:///./src/doctor-app/views/home/TodayDashboard.vue?2d11","webpack:///./src/doctor-app/views/home/MonthlyAppointments.vue?eecc","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/vue-chartjs/es/mixins/index.js","webpack:///./node_modules/vue-chartjs/es/BaseCharts.js","webpack:///./src/doctor-app/views/home/MaChart.ts","webpack:///./src/doctor-app/views/home/MonthlyAppointments.vue","webpack:///./src/doctor-app/views/home/MonthlyAppointments.vue?4327","webpack:///./src/doctor-app/views/home/MonthlyAppointments.vue?fbe8","webpack:///./src/doctor-app/views/home/Home.vue","webpack:///./src/doctor-app/views/home/Home.vue?5120","webpack:///./src/doctor-app/views/home/Home.vue?50de","webpack:///./node_modules/chart.js/node_modules/moment/locale/en-ca.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/cv.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/hy-am.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/chart.js/src/elements/element.rectangle.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/tet.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/nb.js","webpack:///./node_modules/chart.js/src/controllers/controller.scatter.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/en-gb.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/br.js","webpack:///./node_modules/chart.js/src/controllers/controller.polarArea.js","webpack:///./node_modules/chart.js/src/core/core.controller.js","webpack:///./node_modules/chartjs-color/index.js","webpack:///./node_modules/chart.js/src/charts/Chart.Line.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/kn.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/es.js","webpack:///./node_modules/chart.js/src/scales/scale.category.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ur.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/ml.js","webpack:///./node_modules/chart.js/src/scales/scale.radialLinear.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/pt-br.js","webpack:///./node_modules/chart.js/node_modules/moment/moment.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/jv.js","webpack:///./node_modules/core-js/modules/es7.object.entries.js","webpack:///./node_modules/chart.js/node_modules/moment/locale/fr-ca.js"],"names":["defaults","Element","helpers","_set","legend","display","position","fullWidth","reverse","weight","onClick","e","legendItem","index","datasetIndex","ci","this","chart","meta","getDatasetMeta","hidden","data","datasets","update","onHover","labels","boxWidth","padding","generateLabels","isArray","map","dataset","i","text","label","fillStyle","backgroundColor","isDatasetVisible","lineCap","borderCapStyle","lineDash","borderDash","lineDashOffset","borderDashOffset","lineJoin","borderJoinStyle","lineWidth","borderWidth","strokeStyle","borderColor","pointStyle","legendCallback","push","id","length","join","module","exports","Chart","layout","layoutService","noop","getBoxWidth","labelOpts","fontSize","usePointStyle","Math","SQRT2","createNewLegendAndAttach","legendOpts","Legend","ctx","options","configure","addBox","extend","initialize","config","legendHitBoxes","doughnutMode","beforeUpdate","maxWidth","maxHeight","margins","me","beforeSetDimensions","setDimensions","afterSetDimensions","beforeBuildLabels","buildLabels","afterBuildLabels","beforeFit","fit","afterFit","afterUpdate","minSize","isHorizontal","width","left","right","height","top","bottom","paddingLeft","paddingTop","paddingRight","paddingBottom","legendItems","callback","filter","item","opts","globalDefault","global","valueOrDefault","defaultFontSize","fontStyle","defaultFontStyle","fontFamily","defaultFontFamily","labelFont","fontString","hitboxes","font","lineWidths","totalHeight","textAlign","textBaseline","each","measureText","vPadding","columnWidths","totalWidth","currentColWidth","currentColHeight","itemHeight","itemWidth","max","draw","lineDefault","elements","line","legendWidth","cursor","fontColor","defaultFontColor","drawLegendBox","x","y","isNaN","save","defaultColor","isLineWidthZero","setLineDash","radius","offSet","centerX","centerY","canvas","drawPoint","strokeRect","fillRect","restore","fillText","textWidth","halfFontSize","xLeft","yMiddle","beginPath","moveTo","lineTo","stroke","handleEvent","type","changed","lh","hitBox","call","native","beforeInit","mergeIf","removeBox","afterEvent","factory","moment","km","defineLocale","months","split","monthsShort","weekdays","weekdaysShort","weekdaysMin","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","s","m","mm","h","hh","d","dd","M","MM","yy","week","dow","doy","toLineHeight","value","size","matches","match","toPadding","t","r","b","l","isObject","resolve","inputs","context","ilen","undefined","zhHk","ll","lll","llll","meridiemParse","meridiemHour","hour","meridiem","minute","isLower","hm","dayOfMonthOrdinalParse","ordinal","number","period","animation","duration","easing","onProgress","onComplete","Animation","currentStep","numSteps","render","onAnimationProgress","onAnimationComplete","animationService","frameDuration","animations","dropFrames","request","addAnimation","lazy","animating","requestAnimationFrame","cancelAnimation","findIndex","splice","requestAnimFrame","window","startDigest","startTime","Date","now","framesToDrop","floor","advance","endTime","count","min","Object","defineProperty","prototype","get","set","eo","isPM","input","charAt","toLowerCase","hours","minutes","units","translateSeconds","withoutSuffix","key","isFuture","translateSingular","forms","special","translate","result","lt","format","standalone","isFormat","weekdaysParseExact","nn","ms","processRelativeTime","processFutureTime","string","substr","indexOf","eifelerRegelAppliesToNumber","processPastTime","parseInt","lastDigit","firstDigit","lb","monthsParseExact","day","translator","words","correctGrammaticalCase","wordKey","lastWeekDays","scope","values","merge","suffixes","1","5","8","70","80","2","7","20","50","3","4","100","6","9","10","30","60","90","tr","a","c","sv","output","az","test","showLines","spanGaps","hover","mode","scales","xAxes","yAxes","lineEnabled","showLine","controllers","DatasetController","datasetElementType","Line","dataElementType","Point","reset","custom","getMeta","points","lineElementOptions","scale","getScaleForId","yAxisID","getDataset","tension","lineTension","_scale","_datasetIndex","_children","_model","fill","steppedLine","stepped","cubicInterpolationMode","pivot","updateElement","updateBezierControlPoints","getPointBackgroundColor","point","pointBackgroundColor","valueAtIndexOrDefault","getPointBorderColor","pointBorderColor","getPointBorderWidth","pointBorderWidth","yScale","xScale","xAxisID","pointOptions","pointRadius","hitRadius","pointHitRadius","getPixelForValue","NaN","getBasePixel","calculatePointY","_xScale","_yScale","_index","skip","ds","dsMeta","sumPos","sumNeg","stacked","stackedRightValue","Number","getRightValue","rightValue","model","controlPoints","area","chartArea","capControlPoint","pt","splineCurveMonotone","splineCurve","previousItem","nextItem","controlPointPreviousX","previous","controlPointPreviousY","controlPointNextX","next","controlPointNextY","capBezierPoints","clipArea","unclipArea","setHoverStyle","hoverRadius","pointHoverRadius","hoverBackgroundColor","pointHoverBackgroundColor","getHoverColor","hoverBorderColor","pointHoverBorderColor","hoverBorderWidth","pointHoverBorderWidth","removeHoverStyle","gd","it","acquireContext","getContext","plural","word","num","relativeTimeWithPlural","weekdaysCaseReplace","nounCase","processHoursFunction","str","uk","fr","enIe","GetListByUser2","DrScheduleListByUser","GetListByChamber","DrScheduleListByChamber","GetWeeklyScheduleList","DrChamberScheduleWeeklyListById","GetScheduleList","chamberId","startDate","DrChamberScheduleList","toISOString","GetScheduleListById","doctorId","DrChamberScheduleListById","GetScheduleListByDate","DrChamberScheduleListByDate","insert","schedule","post","DrChamberScheduleInsert","JSON","stringify","UpdateSchedule","DrChamberScheduleUpdate","getDelete","delete","DrScheduleDelete","GetListByUser","plugins","_plugins","_cacheId","register","p","concat","forEach","plugin","unregister","idx","clear","getAll","notify","hook","args","descriptor","params","method","descriptors","apply","cache","clone","pluginService","PluginBase","n","is","arrayEvents","listenArrayEvents","array","listener","_chartjs","listeners","configurable","enumerable","toUpperCase","slice","base","Array","arguments","res","object","unlistenArrayEvents","stub","linkScales","addElements","updateIndex","scaleID","destroy","_data","createMetaDataset","_chart","createMetaData","metaData","addElementAndReset","element","buildOrUpdateElements","resyncElements","transition","easingValue","elementOpts","numMeta","numData","insertElements","start","onDataPush","onDataPop","pop","onDataShift","shift","onDataSplice","onDataUnshift","inherits","0","40","ky","color","interpolate","view","ease","actual","origin","target","c0","c1","keys","hasOwnProperty","valid","mix","rgbString","isFinite","configuration","_view","_start","tooltipPosition","hasValue","isNumber","rgb2hsl","rgb","g","delta","rgb2hsv","v","rgb2hwb","w","rgb2cmyk","k","rgb2keyword","reverseKeywords","rgb2xyz","pow","z","rgb2lab","xyz","rgb2lch","lab2lch","hsl2rgb","hsl","t1","t2","t3","val","hsl2hsv","hsl2hwb","hsl2cmyk","hsl2keyword","hsv2rgb","hsv","hi","f","q","hsv2hsl","sl","hsv2hwb","hsv2cmyk","hsv2keyword","hwb2rgb","hwb","wh","bl","ratio","hwb2hsl","hwb2hsv","hwb2cmyk","hwb2keyword","cmyk2rgb","cmyk","cmyk2hsl","cmyk2hsv","cmyk2hwb","cmyk2keyword","xyz2rgb","xyz2lab","xyz2lch","lab2xyz","lab","y2","hr","atan2","PI","sqrt","lab2rgb","lch2lab","lch","cos","sin","lch2xyz","lch2rgb","keyword2rgb","keyword","cssKeywords","keyword2hsl","keyword2hsv","keyword2hwb","keyword2cmyk","keyword2lab","keyword2xyz","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","symbolMap","numberMap","ta","preparse","replace","postformat","separator","ro","vi","gomLatn","frCh","si","ss","sq","arTn","gl","yo","monthsShortWithDots","monthsShortWithoutDots","fy","month","Bar","xRange","mouseX","vm","yRange","mouseY","inRange","inLabelRange","inXRange","inYRange","getCenterPoint","getArea","errMargin","round","alpha","cs","monthsParse","_monthsParse","RegExp","shortMonthsParse","_shortMonthsParse","longMonthsParse","_longMonthsParse","conversions","convert","Converter","func","arg","pair","exec","from","to","convs","routeSpace","space","getValues","setValues","vals","fspace","relativeTimeMr","mr","isFunction","Function","toString","el","monthsNominativeEl","monthsGenitiveEl","momentToFormat","substring","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","bo","srCyrl","Bubble","se","MIN_INTEGER","MIN_SAFE_INTEGER","MAX_INTEGER","MAX_SAFE_INTEGER","INTERVALS","millisecond","common","steps","second","quarter","year","UNITS","sorter","arrayUnique","items","hash","out","buildLookupTable","timestamps","distribution","time","pos","prev","curr","table","lookup","mid","i0","i1","lo","skey","sval","tkey","range","span","offset","momentify","parser","isValid","parse","isNullOrUndef","startOf","valueOf","determineStepSize","unit","capacity","factor","interval","milliseconds","ceil","determineUnitForAutoTicks","minUnit","determineUnitForFormatting","ticks","diff","as","determineMajorUnit","generate","timeOpts","minor","major","stepSize","unitStepSize","weekday","isoWeekday","majorTicksEnabled","enabled","first","last","add","computeOffsets","upper","lower","ticksFromTimestamps","majorUnit","defaultConfig","bounds","displayFormat","displayFormats","autoSkip","source","TimeScale","Scale","Error","mergeTicksOptions","console","warn","rawValue","determineDataLimits","j","jlen","timestamp","sort","endOf","_horizontal","_table","_timestamps","buildTicks","getLabelCapacity","_unit","_majorUnit","_offsets","getLabelForIndex","tooltipFormat","tickFormatFunction","tick","formatOverride","formats","minorFormat","majorFormat","majorTime","majorTickOpts","tickOpts","formatter","userCallback","convertTicksToLabels","getPixelForOffset","getPixelForTick","getTicks","getValueForPixel","pixel","getLabelWidth","ticksOpts","tickLabelWidth","angle","toRadians","maxRotation","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","innerWidth","scaleService","registerScaleType","clearRect","roundedRect","rx","ry","quadraticCurveTo","rect","style","edgeLength","xOffset","yOffset","drawImage","arc","closePath","leftX","topY","sideSize","clip","flip","bezierCurveTo","drawRoundedRectangle","Scatter","Doughnut","numbersPast","numbersFuture","verbalNumber","fi","uid","defaultValue","fn","thisArg","loopable","len","arrayEquals","a0","a1","v0","v1","klen","_merger","tval","_mergerIf","sources","merger","setFn","extensions","ChartElement","constructor","Surrogate","__super__","callCallback","fromIndex","getValueOrDefault","getValueAtIndexOrDefault","DESCRIPTORS","getKeys","toIObject","isEnum","isEntries","O","filterByPosition","where","sortByWeight","_tmpIndex_","boxes","layoutItem","prop","props","layoutOptions","leftPadding","rightPadding","topPadding","bottomPadding","leftBoxes","rightBoxes","topBoxes","bottomBoxes","chartAreaBoxes","chartWidth","chartHeight","chartAreaWidth","chartAreaHeight","verticalBoxWidth","horizontalBoxHeight","maxChartAreaWidth","maxChartAreaHeight","minBoxSizes","getMinimumBoxSize","maxHorizontalLeftPadding","maxHorizontalRightPadding","maxVerticalTopPadding","maxVerticalBottomPadding","horizontalBox","getPadding","boxPadding","verticalBox","totalLeftBoxesWidth","totalRightBoxesWidth","totalTopBoxesHeight","totalBottomBoxesHeight","fitBox","box","finalFitVerticalBox","leftPaddingAddition","topPaddingAddition","newMaxChartAreaHeight","newMaxChartAreaWidth","placeBox","horizontal","minBoxSize","findNextWhere","minBox","scaleMargin","globalDefaults","current","currentVM","globalOptionLineElements","lastDrawnIndex","_loop","refreshAptScheduleSubject","refreshAptSchedule","refresh","getAptScheduleRefresh","asObservable","appoit","DrAppointmentInsert","insertDr","DrAppointmentInsertAdmin","varify","DrAppointmentVerification","reSendCode","appointmentId","DrAppointmentReSendCode","approvedUnApproved","appointment","DrAppointmentAppUnApp","GetAppoitmentByCurrentUser","DrAppointmentGetListByUser","GetAppoitmentByDrId","DrAppointmentGetListByDrId","GetAppoitmentByDate1","DrAppointmentGetListByAppointmentDate","GetAppoitmentByDate","fromDate","toDate","DrAppointmentGetByAppointmentDate","GetAppoitmentByCurrentDoctor","DrAppointmentGetListByDoctor","DrAwardDelete","cancel","DrAppointmentCancel","daysOfMonth","DrAppointmentDaysOfMonth","getChartDate","DrAppointmentChartData","getByAppointmentDate","appointmentDate","getChamberCountByAppointmentDate","DrAppointmentGetChamberCountByAppointmentDate","getChamberWeeklyCountByAppointmentDate","DrAppointmentGetChamberWeeklyCountByAppointmentDate","getAppointmentSearch","phone","patientId","patientName","dob","DrAppointmentSearch","getAppointmentById","DrAppointmentById","paIn","eu","kk","tzl","deCh","Interaction","platform","canvasHelpers","animateRotate","animateScale","arcOpts","bw","cutoutPercentage","rotation","circumference","tooltips","callbacks","title","tooltipItem","dataLabel","doughnut","pie","Arc","getRingIndex","ringIndex","availableWidth","availableHeight","startAngle","endAngle","end","contains0","contains90","contains180","contains270","cutout","getMaxBorderWidth","outerRadius","innerRadius","radiusLength","getVisibleDatasetCount","offsetX","offsetY","total","calculateTotal","animationOpts","calculateCircumference","abs","arcs","hoverWidth","tzmLatn","my","chartX","chartY","pointRelativePosition","getAngleFromPoint","distance","betweenAngles","withinRadius","halfAngle","halfRadius","centreAngle","rangeFromCentre","sA","eA","Ticks","formatters","linear","LinearScale","LinearScaleBase","DEFAULT_MIN","DEFAULT_MAX","IDMatches","hasStacks","stack","valuesPerStack","positiveValues","negativeValues","relativePoints","valuesForType","minVal","maxVal","handleTickRangeOptions","getTickLimit","maxTicks","maxTicksLimit","handleDirectionalChanges","innerDimension","ticksAsNumbers","webpackPolyfill","deprecate","paths","children","logarithmic","LogarithmicScale","minNotZero","log10","generationOptions","generators","tickValues","newVal","categoryPercentage","barPercentage","gridLines","offsetGridLines","axis","rectangle","borderSkipped","yLabel","datasetLabel","xLabel","bar","Rectangle","rects","_ruler","getRuler","rectangleOptions","updateElementGeometry","vscale","getValueScale","ruler","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","center","getValueScaleId","getIndexScaleId","getIndexScale","getStackCount","stacks","getStackIndex","stackCount","pixels","imeta","ivalue","controller","leftSampleSize","rightSampleSize","leftCategorySize","rightCategorySize","fullBarSize","stackIndex","barThickness","maxBarThickness","Infinity","rectangleElementOptions","horizontalBar","enAu","radar","pointElementOptions","pointPosition","getPointPositionForValue","xCenter","yCenter","ru","monthsRegex","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex","mi","dataPoint","bubble","_resolveElementOptions","dsIndex","getPixelForDecimal","_options","dataIndex","et","da","labelsFromTicks","getLineValue","lineValue","drawBorder","drawOnChartArea","drawTicks","tickMarkLength","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","lineHeight","beginAtZero","minRotation","mirror","autoSkipPadding","labelOffset","computeTextSize","longestText","parseFontOptions","family","parseLineHeight","_ticks","longestTextCache","beforeDataLimits","afterDataLimits","beforeBuildTicks","afterBuildTicks","beforeTickToLabelConversion","afterTickToLabelConversion","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","tickFont","labelRotation","originalLabelWidth","labelWidth","tickWidth","angleRadians","scaleLabelOpts","gridLineOpts","isFullWidth","scaleLabelLineHeight","scaleLabelPadding","deltaHeight","largestTextWidth","tallestLabelHeightInLines","numberOfLabelLines","lineSpace","tickPadding","longestLabelWidth","labelHeight","firstLabelWidth","lastLabelWidth","handleMargins","finalVal","innerHeight","decimal","valueOffset","getBaseValue","_autoSkip","skipRatio","shouldSkip","optionTicks","tickCount","labelRotationRadians","longestRotatedLabel","optionMajorTicks","isRotated","tickFontColor","majorTickFontColor","majorTickFont","tl","scaleLabelFontColor","scaleLabelFont","itemsToDraw","xTickStart","xTickEnd","yTickStart","yTickEnd","lineColor","tx1","ty1","tx2","ty2","x1","y1","x2","labelX","labelY","zeroLineIndex","labelYOffset","xLineValue","aliasPixel","labelXOffset","isLeft","yLineValue","glWidth","glColor","glBorderDash","glBorderDashOffset","itemToDraw","rotate","scaleLabelX","scaleLabelY","halfLineHeight","bn","arDz","be","sk","sw","pluralForm","plurals","pluralize","u","ar","cy","ja","bg","last2Digits","dv","af","dataRange","spacing","niceRange","niceNum","niceMin","niceMax","almostWhole","numSpaces","almostEquals","exp","significand","tickVal","endExp","endSignificand","lastTick","tickValue","logDelta","tickString","numDecimal","toFixed","remain","toExponential","numbersNouns","translateFuture","translatePast","numberNoun","numberAsNoun","hundred","ten","one","tlh","zhCn","sr","th","basic","dom","implementation","_enabled","releaseContext","addEventListener","removeEventListener","Radar","de","mk","arKw","xPseudo","nlBe","weekEndings","hu","colorNames","getRgba","abbr","hex","rgba","per","parseFloat","getHsla","getHwb","getRgb","getHsl","hsla","getAlpha","hexString","hexDouble","rgbaString","percentString","percentaString","hslString","hslaString","hwbString","reverseNames","name","createNewTitleBlockAndAttach","titleOpts","Title","titleBlock","lineCount","textSize","titleX","titleY","titleFont","getRelativePosition","parseVisibleItems","handler","getIntersectItems","getNearestItems","intersect","distanceMetric","minDistance","POSITIVE_INFINITY","nearestItems","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","indexMode","modes","single","nearest","sizeA","sizeB","ret","intersectsItem","relativeTimeWithSingular","relativeSeconds","lv","te","parseMaxStyle","styleValue","node","parentProperty","valueInPixels","parentNode","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","document","defaultView","constrainedNode","getComputedStyle","constrainedContainer","hasCNode","hasCContainer","infinity","configMerge","scaleMerge","getScaleDefaults","slen","collection","filterCallback","filtered","arrayToSearch","startIndex","currentItem","findPreviousWhere","epsilon","rounded","reduce","NEGATIVE_INFINITY","sign","log","LN10","degrees","toDegrees","radians","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","distanceBetweenPoints","pixelWidth","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","loop","niceFraction","exponent","fraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","setTimeout","evt","originalEvent","currentTarget","srcElement","boundingRect","getBoundingClientRect","touches","clientX","clientY","getStyle","currentDevicePixelRatio","getConstraintWidth","getConstraintHeight","getMaximumWidth","container","clientWidth","cw","getMaximumHeight","clientHeight","ch","property","currentStyle","getPropertyValue","retinaScale","forceRatio","pixelRatio","devicePixelRatio","pixelSize","arrayOfThings","gc","garbageCollect","longest","thing","nestedThing","gcLen","numberOfLines","CanvasGradient","error","colorValue","CanvasPattern","saturate","darken","enNz","tlPh","tzm","uz","zhTw","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","numericGeneratorOptions","fixedStepSize","monthsNominative","monthsSubjective","pl","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","bs","nl","PolarArea","EXPANDO_KEY","CSS_PREFIX","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","initCanvas","renderHeight","getAttribute","renderWidth","initial","displayWidth","aspectRatio","displayHeight","supportsEventListenerOptions","supports","eventListenerOptions","passive","createEvent","nativeEvent","fromNativeEvent","event","throttled","ticking","createResizer","resizer","createElement","cls","maxSize","cssText","className","innerHTML","expand","childNodes","shrink","_reset","scrollLeft","scrollTop","onScroll","bind","watchForRender","expando","proxy","renderProxy","animationName","reflow","offsetParent","classList","unwatchForRender","remove","addResizeListener","insertBefore","firstChild","removeResizeListener","removeChild","injectCSS","css","_style","setAttribute","getElementsByTagName","appendChild","createTextNode","keyframes","getElementById","removeAttribute","proxies","addEvent","removeEvent","$iterators","redefine","hide","Iterators","wks","ITERATOR","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","NAME","explicit","Collection","proto","ka","constructors","scaleConstructor","scaleDefaults","getScaleConstructor","updateScaleDefaults","additions","addScalesToLayout","effects","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easingEffects","msMy","filler","propagate","mappers","visible","boundary","decodeFill","computeBoundary","scaleBottom","scaleTop","scaleZero","getBasePosition","resolveTarget","visited","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","doFill","mapper","p0","p1","d0","d1","afterDatasetsUpdate","$filler","beforeDatasetDraw","fo","ca","monthsShortDot","esDo","deAt","days","sd","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","cornerRadius","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","activeElement","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","mergeOpacity","colorString","opacity","pushOrConcat","toPush","createTooltipItem","getBaseModel","tooltipOpts","xAlign","yAlign","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","getTooltipSize","tooltip","body","combinedBodyLength","bodyItem","before","lines","after","titleLineCount","footerLineCount","widthPadding","maxLineWidth","determineAlignment","lf","rf","olf","orf","yf","midX","midY","getBackgroundPoint","alignment","paddingAndSize","radiusAndPadding","Tooltip","_lastActive","getTitle","getBeforeBody","getBody","bodyItems","getAfterBody","getFooter","existingModel","active","_active","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","positioners","_eventPosition","itemSort","dataPoints","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","drawBody","xLinePadding","fillLineOfText","drawColorBoxes","textColor","drawFooter","drawBackground","hasTooltipContent","getElementsAtEventForMode","average","eventPosition","nearestElement","tp","responsive","responsiveAnimationDuration","maintainAspectRatio","events","animationDuration","construct","uzLatn","ko","token","isUpper","ne","he","_vm","_h","$createElement","_c","_self","staticRenderFns","staticClass","_m","class","dailyOrWeekly","attrs","nativeOn","$event","dailyAppointment","_v","weeklyAppointment","_l","chamber","_s","counts","schedules","staticStyle","doctorChamnerCount","DoctorAppointmentService","then","DoctorScheduleService","isBooked","component","on","preventDefault","toggleMonth","chartdata","apptCount","apptDay","_arrayWithHoles","arr","_iterableToArrayLimit","Symbol","iterator","_arr","_n","_d","_e","_i","done","err","_arrayLikeToArray","arr2","_unsupportedIterableToArray","minLen","_nonIterableRest","TypeError","_slicedToArray","dataHandler","newData","oldData","$data","newDatasetLabels","oldDatasetLabels","oldLabels","newLabels","oldDatasetKeys","newDatasetKeys","deletionKeys","attribute","deletionKey","$emit","xLabels","yLabels","renderChart","chartData","reactiveData","watch","reactiveProp","required","default","generateChart","chartId","chartType","styles","cssClasses","ref","String","methods","addPlugin","generateLegend","$refs","beforeDestroy","data1","data2","Options","mixins","extends","Year","getFullYear","doctorAppointmentChart","currentMonth","getMonth","Months","GetChartData","entries","components","MaChart","TodayDashboard","MonthlyAppointments","enCa","cv","affix","hyAm","arLy","arSa","isVertical","getBarBounds","halfWidth","halfHeight","signX","signY","barSize","halfStroke","borderLeft","borderRight","borderTop","borderBottom","corners","borders","startCorner","cornerAt","corner","tet","nb","scatter","arMa","enGb","relativeTimeWithMutation","mutation","specialMutationForYears","lastNumber","softMutation","mutationTable","br","angleLines","circular","pointLabels","polarArea","countVisibleElements","visibleCount","datasetStartAngle","getDistanceFromCenterForValue","resetRadius","initConfig","updateConfig","newOptions","scaleOptions","positionIsHorizontal","types","instances","_bufferedRender","bindEvents","resize","ensureScalesHaveIDs","buildScales","initToolTip","stop","silent","newWidth","newHeight","newSize","onResize","scalesOptions","xAxisOptions","yAxisOptions","dtype","dposition","isDefault","scaleType","scaleClass","buildOrUpdateControllers","newControllers","destroyDatasetMeta","ControllerClass","resetElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","updateDataset","animationOptions","animationObject","easingFunction","stepDecimal","drawDatasets","_drawTooltip","drawDataset","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","unbindEvents","toBase64Image","toDataURL","_chartInstance","_listeners","eventHandler","updateHoverStyle","bufferedRequest","hoverOptions","Controller","Color","obj","lightness","whiteness","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","hue","saturation","saturationv","blackness","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","dark","yiq","light","negate","lighten","desaturate","whiten","blacken","greyscale","clearer","opaquer","mixinColor","color1","w1","w2","toJSON","spaces","maxes","capped","chans","sname","svalues","kn","es","DatasetScale","getLabels","minIndex","maxIndex","valueCategory","offsetAmt","valueWidth","widthOffset","valueHeight","heightOffset","horz","valueDimension","ur","ml","animate","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getValueCount","getPointLabelFontOptions","pointLabelOptions","measureLabelSize","determineLimits","fitWithPointLabels","plFont","largestPossibleRadius","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","getIndexAngle","hLimits","vLimits","setReductions","drawingArea","setCenterPoint","getTextAlignForAngle","adjustPointPositionForLabelHeight","drawPointLabels","angleLineOpts","pointLabelOpts","outerDistance","outerPosition","pointLabelPosition","pointLabelFontColor","drawRadiusLine","numberOrZero","param","LinearRadialScale","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","angleMultiplier","startAngleRadians","scalingFactor","distanceFromCenter","thisAngle","tickFontStyle","tickFontFamily","tickLabelFont","yCenterOffset","ptBr","hookCallback","some","hooks","setHookCallback","isObjectEmpty","isUndefined","isDate","hasOwnProp","createUTC","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","rfc2822","weekdayMismatch","getParsingFlags","_pf","fun","some$1","_isValid","flags","parsedParts","isNowValid","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","momentProperties","copyConfig","_isAMomentObject","_f","_tzm","_isUTC","_offset","_locale","updateInProgress","Moment","updateOffset","isMoment","absFloor","toInt","argumentForCoercion","coercedNumber","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","msg","suppressDeprecationWarnings","firstTime","deprecationHandler","deprecations","deprecateSimple","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","keys$1","defaultCalendar","_calendar","defaultLongDateFormat","_longDateFormat","formatUpper","defaultInvalidDate","invalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","_relativeTime","pastFuture","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","makeGetSet","keepTime","set$1","stringGet","stringSet","prioritized","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","replaceLongDateFormatTokens","lastIndex","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","regexes","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p2","p3","p4","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","indexOf$1","daysInMonth","UTC","getUTCDate","MONTHS_IN_FORMAT","defaultLocaleMonths","localeMonths","_months","defaultLocaleMonthsShort","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","date","getSetMonth","getDaysInMonth","defaultMonthsShortRegex","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","defaultMonthsRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","isLeapYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","setFullYear","createUTCDate","getUTCFullYear","setUTCFullYear","firstWeekOffset","fwd","fwdlw","getUTCDay","dayOfYearFromWeeks","resYear","resDayOfYear","localWeekday","weekOffset","dayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","localeWeekdays","_weekdays","defaultLocaleWeekdaysShort","localeWeekdaysShort","_weekdaysShort","defaultLocaleWeekdaysMin","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","defaultWeekdaysRegex","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","defaultWeekdaysShortRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","defaultWeekdaysMinRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","seconds","kInput","_isPm","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","localeMeridiem","globalLocale","getSetHour","baseConfig","locales","localeFamilies","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","_abbr","getSetGlobalLocale","getLocale","parentLocale","updateLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","basicRfcRegex","configFromRFC2822","dayFormat","timezone","timezoneIndex","timezones","military","momentDate","momentDay","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","getUTCMonth","getDate","configFromArray","currentDate","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","weekYear","temp","weekdayOverflow","GG","W","E","createLocal","curWeek","gg","ISO_8601","RFC_2822","parsedInput","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromObject","createFromConfig","prepareConfig","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","isValid$1","createInvalid$1","createDuration","Duration","years","quarters","weeks","_milliseconds","_days","_bubble","isDuration","absRound","utcOffset","offsetFromString","chunkOffset","matcher","chunk","parts","cloneWithOffset","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","direction","dur","isAdding","invalid","getCalendarFormat","myMoment","calendar$1","sod","calendarFormat","localInput","isBetween","inclusivity","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","anchor","inspect","zone","prefix","datetime","suffix","inputString","defaultFormatUtc","defaultFormat","humanize","fromNow","toNow","newLocaleData","lang","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","isoWeek","getISOWeeksInYear","getWeeksInYear","weekInfo","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","isoWeekYear","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetSecond","parseMs","getSetMillisecond","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","isoWeeks","isoWeeksInYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","monthsFromDays","monthsToDays","daysToMonths","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","withSuffix","abs$1","toISOString$1","Y","D","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","jv","$export","$entries","S","frCa"],"mappings":"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AAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,gBAAiB,OACjB,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,UAAW,OACX,aAAc,OACd,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OAC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","file":"js/chunk-0c395295.4eefaa04.js","sourcesContent":["'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\tlegend: {\n\t\tdisplay: true,\n\t\tposition: 'top',\n\t\tfullWidth: true,\n\t\treverse: false,\n\t\tweight: 1000,\n\n\t\t// a callback that will handle\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.datasetIndex;\n\t\t\tvar ci = this.chart;\n\t\t\tvar meta = ci.getDatasetMeta(index);\n\n\t\t\t// See controller.isDatasetVisible comment\n\t\t\tmeta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\n\n\t\t\t// We hid a dataset ... rerender the chart\n\t\t\tci.update();\n\t\t},\n\n\t\tonHover: null,\n\n\t\tlabels: {\n\t\t\tboxWidth: 40,\n\t\t\tpadding: 10,\n\t\t\t// Generates labels shown in the legend\n\t\t\t// Valid properties to return:\n\t\t\t// text : text to display\n\t\t\t// fillStyle : fill of coloured box\n\t\t\t// strokeStyle: stroke of coloured box\n\t\t\t// hidden : if this legend item refers to a hidden item\n\t\t\t// lineCap : cap style for line\n\t\t\t// lineDash\n\t\t\t// lineDashOffset :\n\t\t\t// lineJoin :\n\t\t\t// lineWidth :\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\treturn helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttext: dataset.label,\n\t\t\t\t\t\tfillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]),\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(i),\n\t\t\t\t\t\tlineCap: dataset.borderCapStyle,\n\t\t\t\t\t\tlineDash: dataset.borderDash,\n\t\t\t\t\t\tlineDashOffset: dataset.borderDashOffset,\n\t\t\t\t\t\tlineJoin: dataset.borderJoinStyle,\n\t\t\t\t\t\tlineWidth: dataset.borderWidth,\n\t\t\t\t\t\tstrokeStyle: dataset.borderColor,\n\t\t\t\t\t\tpointStyle: dataset.pointStyle,\n\n\t\t\t\t\t\t// Below is extra data used for toggling the datasets\n\t\t\t\t\t\tdatasetIndex: i\n\t\t\t\t\t};\n\t\t\t\t}, this) : [];\n\t\t\t}\n\t\t}\n\t},\n\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('');\n\t\treturn text.join('');\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tvar layout = Chart.layoutService;\n\tvar noop = helpers.noop;\n\n\t/**\n\t * Helper function to get the box width based on the usePointStyle option\n\t * @param labelopts {Object} the label options on the legend\n\t * @param fontSize {Number} the label font size\n\t * @return {Number} width of the color box area\n\t */\n\tfunction getBoxWidth(labelOpts, fontSize) {\n\t\treturn labelOpts.usePointStyle ?\n\t\t\tfontSize * Math.SQRT2 :\n\t\t\tlabelOpts.boxWidth;\n\t}\n\n\tChart.Legend = Element.extend({\n\n\t\tinitialize: function(config) {\n\t\t\thelpers.extend(this, config);\n\n\t\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\t\tthis.legendHitBoxes = [];\n\n\t\t\t// Are we in doughnut mode which has a different data type\n\t\t\tthis.doughnutMode = false;\n\t\t},\n\n\t\t// These methods are ordered by lifecycle. Utilities then follow.\n\t\t// Any function defined here is inherited by all legend types.\n\t\t// Any function can be extended by the legend type\n\n\t\tbeforeUpdate: noop,\n\t\tupdate: function(maxWidth, maxHeight, margins) {\n\t\t\tvar me = this;\n\n\t\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\t\tme.beforeUpdate();\n\n\t\t\t// Absorb the master measurements\n\t\t\tme.maxWidth = maxWidth;\n\t\t\tme.maxHeight = maxHeight;\n\t\t\tme.margins = margins;\n\n\t\t\t// Dimensions\n\t\t\tme.beforeSetDimensions();\n\t\t\tme.setDimensions();\n\t\t\tme.afterSetDimensions();\n\t\t\t// Labels\n\t\t\tme.beforeBuildLabels();\n\t\t\tme.buildLabels();\n\t\t\tme.afterBuildLabels();\n\n\t\t\t// Fit\n\t\t\tme.beforeFit();\n\t\t\tme.fit();\n\t\t\tme.afterFit();\n\t\t\t//\n\t\t\tme.afterUpdate();\n\n\t\t\treturn me.minSize;\n\t\t},\n\t\tafterUpdate: noop,\n\n\t\t//\n\n\t\tbeforeSetDimensions: noop,\n\t\tsetDimensions: function() {\n\t\t\tvar me = this;\n\t\t\t// Set the unconstrained dimension before label rotation\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\t// Reset position before calculating rotation\n\t\t\t\tme.width = me.maxWidth;\n\t\t\t\tme.left = 0;\n\t\t\t\tme.right = me.width;\n\t\t\t} else {\n\t\t\t\tme.height = me.maxHeight;\n\n\t\t\t\t// Reset position before calculating rotation\n\t\t\t\tme.top = 0;\n\t\t\t\tme.bottom = me.height;\n\t\t\t}\n\n\t\t\t// Reset padding\n\t\t\tme.paddingLeft = 0;\n\t\t\tme.paddingTop = 0;\n\t\t\tme.paddingRight = 0;\n\t\t\tme.paddingBottom = 0;\n\n\t\t\t// Reset minSize\n\t\t\tme.minSize = {\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t};\n\t\t},\n\t\tafterSetDimensions: noop,\n\n\t\t//\n\n\t\tbeforeBuildLabels: noop,\n\t\tbuildLabels: function() {\n\t\t\tvar me = this;\n\t\t\tvar labelOpts = me.options.labels || {};\n\t\t\tvar legendItems = helpers.callback(labelOpts.generateLabels, [me.chart], me) || [];\n\n\t\t\tif (labelOpts.filter) {\n\t\t\t\tlegendItems = legendItems.filter(function(item) {\n\t\t\t\t\treturn labelOpts.filter(item, me.chart.data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (me.options.reverse) {\n\t\t\t\tlegendItems.reverse();\n\t\t\t}\n\n\t\t\tme.legendItems = legendItems;\n\t\t},\n\t\tafterBuildLabels: noop,\n\n\t\t//\n\n\t\tbeforeFit: noop,\n\t\tfit: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar labelOpts = opts.labels;\n\t\t\tvar display = opts.display;\n\n\t\t\tvar ctx = me.ctx;\n\n\t\t\tvar globalDefault = defaults.global;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\n\t\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\n\t\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\n\t\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\t\t// Reset hit boxes\n\t\t\tvar hitboxes = me.legendHitBoxes = [];\n\n\t\t\tvar minSize = me.minSize;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\t\tminSize.height = display ? 10 : 0;\n\t\t\t} else {\n\t\t\t\tminSize.width = display ? 10 : 0;\n\t\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t\t}\n\n\t\t\t// Increase sizes here\n\t\t\tif (display) {\n\t\t\t\tctx.font = labelFont;\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\t// Labels\n\n\t\t\t\t\t// Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n\t\t\t\t\tvar lineWidths = me.lineWidths = [0];\n\t\t\t\t\tvar totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0;\n\n\t\t\t\t\tctx.textAlign = 'left';\n\t\t\t\t\tctx.textBaseline = 'top';\n\n\t\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\t\tif (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) {\n\t\t\t\t\t\t\ttotalHeight += fontSize + (labelOpts.padding);\n\t\t\t\t\t\t\tlineWidths[lineWidths.length] = me.left;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\n\t\t\t\t\t});\n\n\t\t\t\t\tminSize.height += totalHeight;\n\n\t\t\t\t} else {\n\t\t\t\t\tvar vPadding = labelOpts.padding;\n\t\t\t\t\tvar columnWidths = me.columnWidths = [];\n\t\t\t\t\tvar totalWidth = labelOpts.padding;\n\t\t\t\t\tvar currentColWidth = 0;\n\t\t\t\t\tvar currentColHeight = 0;\n\t\t\t\t\tvar itemHeight = fontSize + vPadding;\n\n\t\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\t\t// If too tall, go to new column\n\t\t\t\t\t\tif (currentColHeight + itemHeight > minSize.height) {\n\t\t\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\n\t\t\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\n\n\t\t\t\t\t\t\tcurrentColWidth = 0;\n\t\t\t\t\t\t\tcurrentColHeight = 0;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Get max width\n\t\t\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\n\t\t\t\t\t\tcurrentColHeight += itemHeight;\n\n\t\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\twidth: itemWidth,\n\t\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\n\t\t\t\t\ttotalWidth += currentColWidth;\n\t\t\t\t\tcolumnWidths.push(currentColWidth);\n\t\t\t\t\tminSize.width += totalWidth;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.width = minSize.width;\n\t\t\tme.height = minSize.height;\n\t\t},\n\t\tafterFit: noop,\n\n\t\t// Shared Methods\n\t\tisHorizontal: function() {\n\t\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t\t},\n\n\t\t// Actually draw the legend on the canvas\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar labelOpts = opts.labels;\n\t\t\tvar globalDefault = defaults.global;\n\t\t\tvar lineDefault = globalDefault.elements.line;\n\t\t\tvar legendWidth = me.width;\n\t\t\tvar lineWidths = me.lineWidths;\n\n\t\t\tif (opts.display) {\n\t\t\t\tvar ctx = me.ctx;\n\t\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\t\t\tvar fontColor = valueOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor);\n\t\t\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\n\t\t\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\n\t\t\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\n\t\t\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\t\t\t\tvar cursor;\n\n\t\t\t\t// Canvas setup\n\t\t\t\tctx.textAlign = 'left';\n\t\t\t\tctx.textBaseline = 'middle';\n\t\t\t\tctx.lineWidth = 0.5;\n\t\t\t\tctx.strokeStyle = fontColor; // for strikethrough effect\n\t\t\t\tctx.fillStyle = fontColor; // render in correct colour\n\t\t\t\tctx.font = labelFont;\n\n\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\tvar hitboxes = me.legendHitBoxes;\n\n\t\t\t\t// current position\n\t\t\t\tvar drawLegendBox = function(x, y, legendItem) {\n\t\t\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set the ctx for the box\n\t\t\t\t\tctx.save();\n\n\t\t\t\t\tctx.fillStyle = valueOrDefault(legendItem.fillStyle, globalDefault.defaultColor);\n\t\t\t\t\tctx.lineCap = valueOrDefault(legendItem.lineCap, lineDefault.borderCapStyle);\n\t\t\t\t\tctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset);\n\t\t\t\t\tctx.lineJoin = valueOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle);\n\t\t\t\t\tctx.lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth);\n\t\t\t\t\tctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, globalDefault.defaultColor);\n\t\t\t\t\tvar isLineWidthZero = (valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth) === 0);\n\n\t\t\t\t\tif (ctx.setLineDash) {\n\t\t\t\t\t\t// IE 9 and 10 do not support line dash\n\t\t\t\t\t\tctx.setLineDash(valueOrDefault(legendItem.lineDash, lineDefault.borderDash));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (opts.labels && opts.labels.usePointStyle) {\n\t\t\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\n\t\t\t\t\t\t// x and y to be center of figure (instead of top left)\n\t\t\t\t\t\tvar radius = fontSize * Math.SQRT2 / 2;\n\t\t\t\t\t\tvar offSet = radius / Math.SQRT2;\n\t\t\t\t\t\tvar centerX = x + offSet;\n\t\t\t\t\t\tvar centerY = y + offSet;\n\n\t\t\t\t\t\t// Draw pointStyle as legend symbol\n\t\t\t\t\t\thelpers.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Draw box as legend symbol\n\t\t\t\t\t\tif (!isLineWidthZero) {\n\t\t\t\t\t\t\tctx.strokeRect(x, y, boxWidth, fontSize);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tctx.fillRect(x, y, boxWidth, fontSize);\n\t\t\t\t\t}\n\n\t\t\t\t\tctx.restore();\n\t\t\t\t};\n\t\t\t\tvar fillText = function(x, y, legendItem, textWidth) {\n\t\t\t\t\tvar halfFontSize = fontSize / 2;\n\t\t\t\t\tvar xLeft = boxWidth + halfFontSize + x;\n\t\t\t\t\tvar yMiddle = y + halfFontSize;\n\n\t\t\t\t\tctx.fillText(legendItem.text, xLeft, yMiddle);\n\n\t\t\t\t\tif (legendItem.hidden) {\n\t\t\t\t\t\t// Strikethrough the text if hidden\n\t\t\t\t\t\tctx.beginPath();\n\t\t\t\t\t\tctx.lineWidth = 2;\n\t\t\t\t\t\tctx.moveTo(xLeft, yMiddle);\n\t\t\t\t\t\tctx.lineTo(xLeft + textWidth, yMiddle);\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t// Horizontal\n\t\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tcursor = {\n\t\t\t\t\t\tx: me.left + ((legendWidth - lineWidths[0]) / 2),\n\t\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\t\tline: 0\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tcursor = {\n\t\t\t\t\t\tx: me.left + labelOpts.padding,\n\t\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\t\tline: 0\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tvar itemHeight = fontSize + labelOpts.padding;\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar textWidth = ctx.measureText(legendItem.text).width;\n\t\t\t\t\tvar width = boxWidth + (fontSize / 2) + textWidth;\n\t\t\t\t\tvar x = cursor.x;\n\t\t\t\t\tvar y = cursor.y;\n\n\t\t\t\t\tif (isHorizontal) {\n\t\t\t\t\t\tif (x + width >= legendWidth) {\n\t\t\t\t\t\t\ty = cursor.y += itemHeight;\n\t\t\t\t\t\t\tcursor.line++;\n\t\t\t\t\t\t\tx = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (y + itemHeight > me.bottom) {\n\t\t\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\n\t\t\t\t\t\ty = cursor.y = me.top + labelOpts.padding;\n\t\t\t\t\t\tcursor.line++;\n\t\t\t\t\t}\n\n\t\t\t\t\tdrawLegendBox(x, y, legendItem);\n\n\t\t\t\t\thitboxes[i].left = x;\n\t\t\t\t\thitboxes[i].top = y;\n\n\t\t\t\t\t// Fill the actual label\n\t\t\t\t\tfillText(x, y, legendItem, textWidth);\n\n\t\t\t\t\tif (isHorizontal) {\n\t\t\t\t\t\tcursor.x += width + (labelOpts.padding);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcursor.y += itemHeight;\n\t\t\t\t\t}\n\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Handle an event\n\t\t * @private\n\t\t * @param {IEvent} event - The event to handle\n\t\t * @return {Boolean} true if a change occured\n\t\t */\n\t\thandleEvent: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar type = e.type === 'mouseup' ? 'click' : e.type;\n\t\t\tvar changed = false;\n\n\t\t\tif (type === 'mousemove') {\n\t\t\t\tif (!opts.onHover) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else if (type === 'click') {\n\t\t\t\tif (!opts.onClick) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Chart event already has relative position in it\n\t\t\tvar x = e.x;\n\t\t\tvar y = e.y;\n\n\t\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\n\t\t\t\t// See if we are touching one of the dataset boxes\n\t\t\t\tvar lh = me.legendHitBoxes;\n\t\t\t\tfor (var i = 0; i < lh.length; ++i) {\n\t\t\t\t\tvar hitBox = lh[i];\n\n\t\t\t\t\tif (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\n\t\t\t\t\t\t// Touching an element\n\t\t\t\t\t\tif (type === 'click') {\n\t\t\t\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\t\t\t\topts.onClick.call(me, e.native, me.legendItems[i]);\n\t\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else if (type === 'mousemove') {\n\t\t\t\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\t\t\t\topts.onHover.call(me, e.native, me.legendItems[i]);\n\t\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn changed;\n\t\t}\n\t});\n\n\tfunction createNewLegendAndAttach(chart, legendOpts) {\n\t\tvar legend = new Chart.Legend({\n\t\t\tctx: chart.ctx,\n\t\t\toptions: legendOpts,\n\t\t\tchart: chart\n\t\t});\n\n\t\tlayout.configure(chart, legend, legendOpts);\n\t\tlayout.addBox(chart, legend);\n\t\tchart.legend = legend;\n\t}\n\n\treturn {\n\t\tid: 'legend',\n\n\t\tbeforeInit: function(chart) {\n\t\t\tvar legendOpts = chart.options.legend;\n\n\t\t\tif (legendOpts) {\n\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t\t}\n\t\t},\n\n\t\tbeforeUpdate: function(chart) {\n\t\t\tvar legendOpts = chart.options.legend;\n\t\t\tvar legend = chart.legend;\n\n\t\t\tif (legendOpts) {\n\t\t\t\thelpers.mergeIf(legendOpts, defaults.global.legend);\n\n\t\t\t\tif (legend) {\n\t\t\t\t\tlayout.configure(chart, legend, legendOpts);\n\t\t\t\t\tlegend.options = legendOpts;\n\t\t\t\t} else {\n\t\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t\t\t}\n\t\t\t} else if (legend) {\n\t\t\t\tlayout.removeBox(chart, legend);\n\t\t\t\tdelete chart.legend;\n\t\t\t}\n\t\t},\n\n\t\tafterEvent: function(chart, e) {\n\t\t\tvar legend = chart.legend;\n\t\t\tif (legend) {\n\t\t\t\tlegend.handleEvent(e);\n\t\t\t}\n\t\t}\n\t};\n};\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS : 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ'\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn km;\n\n})));\n","'use strict';\n\nvar helpers = require('./helpers.core');\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\nmodule.exports = {\n\t/**\n\t * Converts the given line height `value` in pixels for a specific font `size`.\n\t * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n\t * @param {Number} size - The font size (in pixels) used to resolve relative `value`.\n\t * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid).\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n\t * @since 2.7.0\n\t */\n\ttoLineHeight: function(value, size) {\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\n\t\tif (!matches || matches[1] === 'normal') {\n\t\t\treturn size * 1.2;\n\t\t}\n\n\t\tvalue = +matches[2];\n\n\t\tswitch (matches[3]) {\n\t\tcase 'px':\n\t\t\treturn value;\n\t\tcase '%':\n\t\t\tvalue /= 100;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\n\t\treturn size * value;\n\t},\n\n\t/**\n\t * Converts the given value into a padding object with pre-computed width/height.\n\t * @param {Number|Object} value - If a number, set the value to all TRBL component,\n\t * else, if and object, use defined properties and sets undefined ones to 0.\n\t * @returns {Object} The padding values (top, right, bottom, left, width, height)\n\t * @since 2.7.0\n\t */\n\ttoPadding: function(value) {\n\t\tvar t, r, b, l;\n\n\t\tif (helpers.isObject(value)) {\n\t\t\tt = +value.top || 0;\n\t\t\tr = +value.right || 0;\n\t\t\tb = +value.bottom || 0;\n\t\t\tl = +value.left || 0;\n\t\t} else {\n\t\t\tt = r = b = l = +value || 0;\n\t\t}\n\n\t\treturn {\n\t\t\ttop: t,\n\t\t\tright: r,\n\t\t\tbottom: b,\n\t\t\tleft: l,\n\t\t\theight: t + b,\n\t\t\twidth: l + r\n\t\t};\n\t},\n\n\t/**\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\n\t * @param {Array[]} inputs - An array of values, falling back to the last value.\n\t * @param {Object} [context] - If defined and the current value is a function, the value\n\t * is called with `context` as first argument and the result becomes the new input.\n\t * @param {Number} [index] - If defined and the current value is an array, the value\n\t * at `index` become the new input.\n\t * @since 2.7.0\n\t */\n\tresolve: function(inputs, context, index) {\n\t\tvar i, ilen, value;\n\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\n\t\t\tvalue = inputs[i];\n\t\t\tif (value === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (context !== undefined && typeof value === 'function') {\n\t\t\t\tvalue = value(context);\n\t\t\t}\n\t\t\tif (index !== undefined && helpers.isArray(value)) {\n\t\t\t\tvalue = value[index];\n\t\t\t}\n\t\t\tif (value !== undefined) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t}\n};\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar zhHk = moment.defineLocale('zh-hk', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY年MMMD日',\n LL : 'YYYY年MMMD日',\n LLL : 'YYYY年MMMD日 HH:mm',\n LLLL : 'YYYY年MMMD日dddd HH:mm',\n l : 'YYYY年MMMD日',\n ll : 'YYYY年MMMD日',\n lll : 'YYYY年MMMD日 HH:mm',\n llll : 'YYYY年MMMD日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar : {\n sameDay : '[今天]LT',\n nextDay : '[明天]LT',\n nextWeek : '[下]ddddLT',\n lastDay : '[昨天]LT',\n lastWeek : '[上]ddddLT',\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd' :\n case 'D' :\n case 'DDD' :\n return number + '日';\n case 'M' :\n return number + '月';\n case 'w' :\n case 'W' :\n return number + '週';\n default :\n return number;\n }\n },\n relativeTime : {\n future : '%s內',\n past : '%s前',\n s : '幾秒',\n m : '1 分鐘',\n mm : '%d 分鐘',\n h : '1 小時',\n hh : '%d 小時',\n d : '1 天',\n dd : '%d 天',\n M : '1 個月',\n MM : '%d 個月',\n y : '1 年',\n yy : '%d 年'\n }\n});\n\nreturn zhHk;\n\n})));\n","/* global window: false */\n'use strict';\n\nvar defaults = require('./core.defaults');\nvar Element = require('./core.element');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\tanimation: {\n\t\tduration: 1000,\n\t\teasing: 'easeOutQuart',\n\t\tonProgress: helpers.noop,\n\t\tonComplete: helpers.noop\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.Animation = Element.extend({\n\t\tchart: null, // the animation associated chart instance\n\t\tcurrentStep: 0, // the current animation step\n\t\tnumSteps: 60, // default number of steps\n\t\teasing: '', // the easing to use for this animation\n\t\trender: null, // render function used by the animation service\n\n\t\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\n\t\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\n\t});\n\n\tChart.animationService = {\n\t\tframeDuration: 17,\n\t\tanimations: [],\n\t\tdropFrames: 0,\n\t\trequest: null,\n\n\t\t/**\n\t\t * @param {Chart} chart - The chart to animate.\n\t\t * @param {Chart.Animation} animation - The animation that we will animate.\n\t\t * @param {Number} duration - The animation duration in ms.\n\t\t * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\n\t\t */\n\t\taddAnimation: function(chart, animation, duration, lazy) {\n\t\t\tvar animations = this.animations;\n\t\t\tvar i, ilen;\n\n\t\t\tanimation.chart = chart;\n\n\t\t\tif (!lazy) {\n\t\t\t\tchart.animating = true;\n\t\t\t}\n\n\t\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\n\t\t\t\tif (animations[i].chart === chart) {\n\t\t\t\t\tanimations[i] = animation;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tanimations.push(animation);\n\n\t\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\n\t\t\tif (animations.length === 1) {\n\t\t\t\tthis.requestAnimationFrame();\n\t\t\t}\n\t\t},\n\n\t\tcancelAnimation: function(chart) {\n\t\t\tvar index = helpers.findIndex(this.animations, function(animation) {\n\t\t\t\treturn animation.chart === chart;\n\t\t\t});\n\n\t\t\tif (index !== -1) {\n\t\t\t\tthis.animations.splice(index, 1);\n\t\t\t\tchart.animating = false;\n\t\t\t}\n\t\t},\n\n\t\trequestAnimationFrame: function() {\n\t\t\tvar me = this;\n\t\t\tif (me.request === null) {\n\t\t\t\t// Skip animation frame requests until the active one is executed.\n\t\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\n\t\t\t\t// and 'mouseout' events will trigger multiple renders.\n\t\t\t\tme.request = helpers.requestAnimFrame.call(window, function() {\n\t\t\t\t\tme.request = null;\n\t\t\t\t\tme.startDigest();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tstartDigest: function() {\n\t\t\tvar me = this;\n\t\t\tvar startTime = Date.now();\n\t\t\tvar framesToDrop = 0;\n\n\t\t\tif (me.dropFrames > 1) {\n\t\t\t\tframesToDrop = Math.floor(me.dropFrames);\n\t\t\t\tme.dropFrames = me.dropFrames % 1;\n\t\t\t}\n\n\t\t\tme.advance(1 + framesToDrop);\n\n\t\t\tvar endTime = Date.now();\n\n\t\t\tme.dropFrames += (endTime - startTime) / me.frameDuration;\n\n\t\t\t// Do we have more stuff to animate?\n\t\t\tif (me.animations.length > 0) {\n\t\t\t\tme.requestAnimationFrame();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tadvance: function(count) {\n\t\t\tvar animations = this.animations;\n\t\t\tvar animation, chart;\n\t\t\tvar i = 0;\n\n\t\t\twhile (i < animations.length) {\n\t\t\t\tanimation = animations[i];\n\t\t\t\tchart = animation.chart;\n\n\t\t\t\tanimation.currentStep = (animation.currentStep || 0) + count;\n\t\t\t\tanimation.currentStep = Math.min(animation.currentStep, animation.numSteps);\n\n\t\t\t\thelpers.callback(animation.render, [chart, animation], chart);\n\t\t\t\thelpers.callback(animation.onAnimationProgress, [animation], chart);\n\n\t\t\t\tif (animation.currentStep >= animation.numSteps) {\n\t\t\t\t\thelpers.callback(animation.onAnimationComplete, [animation], chart);\n\t\t\t\t\tchart.animating = false;\n\t\t\t\t\tanimations.splice(i, 1);\n\t\t\t\t} else {\n\t\t\t\t\t++i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * Provided for backward compatibility, use Chart.Animation instead\n\t * @prop Chart.Animation#animationObject\n\t * @deprecated since version 2.6.0\n\t * @todo remove at version 3\n\t */\n\tObject.defineProperty(Chart.Animation.prototype, 'animationObject', {\n\t\tget: function() {\n\t\t\treturn this;\n\t\t}\n\t});\n\n\t/**\n\t * Provided for backward compatibility, use Chart.Animation#chart instead\n\t * @prop Chart.Animation#chartInstance\n\t * @deprecated since version 2.6.0\n\t * @todo remove at version 3\n\t */\n\tObject.defineProperty(Chart.Animation.prototype, 'chartInstance', {\n\t\tget: function() {\n\t\t\treturn this.chart;\n\t\t},\n\t\tset: function(value) {\n\t\t\tthis.chart = value;\n\t\t}\n\t});\n\n};\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar eo = moment.defineLocale('eo', {\n months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),\n weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'D[-a de] MMMM, YYYY',\n LLL : 'D[-a de] MMMM, YYYY HH:mm',\n LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm'\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar : {\n sameDay : '[Hodiaŭ je] LT',\n nextDay : '[Morgaŭ je] LT',\n nextWeek : 'dddd [je] LT',\n lastDay : '[Hieraŭ je] LT',\n lastWeek : '[pasinta] dddd [je] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'post %s',\n past : 'antaŭ %s',\n s : 'sekundoj',\n m : 'minuto',\n mm : '%d minutoj',\n h : 'horo',\n hh : '%d horoj',\n d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo\n dd : '%d tagoj',\n M : 'monato',\n MM : '%d monatoj',\n y : 'jaro',\n yy : '%d jaroj'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal : '%da',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar units = {\n 'm' : 'minutė_minutės_minutę',\n 'mm': 'minutės_minučių_minutes',\n 'h' : 'valanda_valandos_valandą',\n 'hh': 'valandos_valandų_valandas',\n 'd' : 'diena_dienos_dieną',\n 'dd': 'dienos_dienų_dienas',\n 'M' : 'mėnuo_mėnesio_mėnesį',\n 'MM': 'mėnesiai_mėnesių_mėnesius',\n 'y' : 'metai_metų_metus',\n 'yy': 'metai_metų_metus'\n};\nfunction translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n}\nfunction translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);\n}\nfunction special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n}\nfunction forms(key) {\n return units[key].split('_');\n}\nfunction translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return result + translateSingular(number, withoutSuffix, key[0], isFuture);\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n}\nvar lt = moment.defineLocale('lt', {\n months : {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/\n },\n monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays : {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),\n isFormat: /dddd HH:mm/\n },\n weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'YYYY [m.] MMMM D [d.]',\n LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l : 'YYYY-MM-DD',\n ll : 'YYYY [m.] MMMM D [d.]',\n lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n },\n calendar : {\n sameDay : '[Šiandien] LT',\n nextDay : '[Rytoj] LT',\n nextWeek : 'dddd LT',\n lastDay : '[Vakar] LT',\n lastWeek : '[Praėjusį] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'po %s',\n past : 'prieš %s',\n s : translateSeconds,\n m : translateSingular,\n mm : translate,\n h : translateSingular,\n hh : translate,\n d : translateSingular,\n dd : translate,\n M : translateSingular,\n MM : translate,\n y : translateSingular,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal : function (number) {\n return number + '-oji';\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! author : https://github.com/mechuwind\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar nn = moment.defineLocale('nn', {\n months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),\n weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY [kl.] H:mm',\n LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar : {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s sidan',\n s : 'nokre sekund',\n m : 'eit minutt',\n mm : '%d minutt',\n h : 'ein time',\n hh : '%d timar',\n d : 'ein dag',\n dd : '%d dagar',\n M : 'ein månad',\n MM : '%d månader',\n y : 'eit år',\n yy : '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar ms = moment.defineLocale('ms', {\n months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar : {\n sameDay : '[Hari ini pukul] LT',\n nextDay : '[Esok pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kelmarin pukul] LT',\n lastWeek : 'dddd [lepas pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dalam %s',\n past : '%s yang lepas',\n s : 'beberapa saat',\n m : 'seminit',\n mm : '%d minit',\n h : 'sejam',\n hh : '%d jam',\n d : 'sehari',\n dd : '%d hari',\n M : 'sebulan',\n MM : '%d bulan',\n y : 'setahun',\n yy : '%d tahun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eng Minutt', 'enger Minutt'],\n 'h': ['eng Stonn', 'enger Stonn'],\n 'd': ['een Dag', 'engem Dag'],\n 'M': ['ee Mount', 'engem Mount'],\n 'y': ['ee Joer', 'engem Joer']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n}\nfunction processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n}\nfunction processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n}\n/**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\nfunction eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10, firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n}\n\nvar lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n }\n },\n relativeTime : {\n future : processFutureTime,\n past : processPastTime,\n s : 'e puer Sekonnen',\n m : processRelativeTime,\n mm : '%d Minutten',\n h : processRelativeTime,\n hh : '%d Stonnen',\n d : processRelativeTime,\n dd : '%d Deeg',\n M : processRelativeTime,\n MM : '%d Méint',\n y : processRelativeTime,\n yy : '%d Joer'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar translator = {\n words: { //Different grammatical cases\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n};\n\nvar me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact : true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[juče u] LT',\n lastWeek : function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT'\n ];\n return lastWeekDays[this.day()];\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'prije %s',\n s : 'nekoliko sekundi',\n m : translator.translate,\n mm : translator.translate,\n h : translator.translate,\n hh : translator.translate,\n d : 'dan',\n dd : translator.translate,\n M : 'mjesec',\n MM : translator.translate,\n y : 'godinu',\n yy : translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn me;\n\n})));\n","'use strict';\n\nvar helpers = require('../helpers/index');\n\nmodule.exports = {\n\t/**\n\t * @private\n\t */\n\t_set: function(scope, values) {\n\t\treturn helpers.merge(this[scope] || (this[scope] = {}), values);\n\t}\n};\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar suffixes = {\n 1: '\\'inci',\n 5: '\\'inci',\n 8: '\\'inci',\n 70: '\\'inci',\n 80: '\\'inci',\n 2: '\\'nci',\n 7: '\\'nci',\n 20: '\\'nci',\n 50: '\\'nci',\n 3: '\\'üncü',\n 4: '\\'üncü',\n 100: '\\'üncü',\n 6: '\\'ncı',\n 9: '\\'uncu',\n 10: '\\'uncu',\n 30: '\\'uncu',\n 60: '\\'ıncı',\n 90: '\\'ıncı'\n};\n\nvar tr = moment.defineLocale('tr', {\n months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),\n weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[bugün saat] LT',\n nextDay : '[yarın saat] LT',\n nextWeek : '[haftaya] dddd [saat] LT',\n lastDay : '[dün] LT',\n lastWeek : '[geçen hafta] dddd [saat] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s sonra',\n past : '%s önce',\n s : 'birkaç saniye',\n m : 'bir dakika',\n mm : '%d dakika',\n h : 'bir saat',\n hh : '%d saat',\n d : 'bir gün',\n dd : '%d gün',\n M : 'bir ay',\n MM : '%d ay',\n y : 'bir yıl',\n yy : '%d yıl'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,\n ordinal : function (number) {\n if (number === 0) { // special case for zero\n return number + '\\'ıncı';\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar sv = moment.defineLocale('sv', {\n months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [kl.] HH:mm',\n LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',\n lll : 'D MMM YYYY HH:mm',\n llll : 'ddd D MMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : 'för %s sedan',\n s : 'några sekunder',\n m : 'en minut',\n mm : '%d minuter',\n h : 'en timme',\n hh : '%d timmar',\n d : 'en dag',\n dd : '%d dagar',\n M : 'en månad',\n MM : '%d månader',\n y : 'ett år',\n yy : '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(e|a)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'e' :\n (b === 1) ? 'a' :\n (b === 2) ? 'a' :\n (b === 3) ? 'e' : 'e';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı'\n};\n\nvar az = moment.defineLocale('az', {\n months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),\n monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),\n weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[bugün saat] LT',\n nextDay : '[sabah saat] LT',\n nextWeek : '[gələn həftə] dddd [saat] LT',\n lastDay : '[dünən] LT',\n lastWeek : '[keçən həftə] dddd [saat] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s sonra',\n past : '%s əvvəl',\n s : 'birneçə saniyyə',\n m : 'bir dəqiqə',\n mm : '%d dəqiqə',\n h : 'bir saat',\n hh : '%d saat',\n d : 'bir gün',\n dd : '%d gün',\n M : 'bir ay',\n MM : '%d ay',\n y : 'bir il',\n yy : '%d il'\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM : function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal : function (number) {\n if (number === 0) { // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn az;\n\n})));\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('line', {\n\tshowLines: true,\n\tspanGaps: false,\n\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\t\t\tid: 'x-axis-0'\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tfunction lineEnabled(dataset, options) {\n\t\treturn helpers.valueOrDefault(dataset.showLine, options.showLines);\n\t}\n\n\tChart.controllers.line = Chart.DatasetController.extend({\n\n\t\tdatasetElementType: elements.Line,\n\n\t\tdataElementType: elements.Point,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar line = meta.dataset;\n\t\t\tvar points = meta.data || [];\n\t\t\tvar options = me.chart.options;\n\t\t\tvar lineElementOptions = options.elements.line;\n\t\t\tvar scale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar i, ilen, custom;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar showLine = lineEnabled(dataset, options);\n\n\t\t\t// Update Line\n\t\t\tif (showLine) {\n\t\t\t\tcustom = line.custom || {};\n\n\t\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t\t}\n\n\t\t\t\t// Utility\n\t\t\t\tline._scale = scale;\n\t\t\t\tline._datasetIndex = me.index;\n\t\t\t\t// Data\n\t\t\t\tline._children = points;\n\t\t\t\t// Model\n\t\t\t\tline._model = {\n\t\t\t\t\t// Appearance\n\t\t\t\t\t// The default behavior of lines is to break at null values, according\n\t\t\t\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n\t\t\t\t\t// This option gives lines the ability to span gaps\n\t\t\t\t\tspanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps,\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\tsteppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped),\n\t\t\t\t\tcubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode),\n\t\t\t\t};\n\n\t\t\t\tline.pivot();\n\t\t\t}\n\n\t\t\t// Update Points\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tme.updateElement(points[i], i, reset);\n\t\t\t}\n\n\t\t\tif (showLine && line._model.tension !== 0) {\n\t\t\t\tme.updateBezierControlPoints();\n\t\t\t}\n\n\t\t\t// Now pivot the point for animation\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tpoints[i].pivot();\n\t\t\t}\n\t\t},\n\n\t\tgetPointBackgroundColor: function(point, index) {\n\t\t\tvar backgroundColor = this.chart.options.elements.point.backgroundColor;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.backgroundColor) {\n\t\t\t\tbackgroundColor = custom.backgroundColor;\n\t\t\t} else if (dataset.pointBackgroundColor) {\n\t\t\t\tbackgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor);\n\t\t\t} else if (dataset.backgroundColor) {\n\t\t\t\tbackgroundColor = dataset.backgroundColor;\n\t\t\t}\n\n\t\t\treturn backgroundColor;\n\t\t},\n\n\t\tgetPointBorderColor: function(point, index) {\n\t\t\tvar borderColor = this.chart.options.elements.point.borderColor;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.borderColor) {\n\t\t\t\tborderColor = custom.borderColor;\n\t\t\t} else if (dataset.pointBorderColor) {\n\t\t\t\tborderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor);\n\t\t\t} else if (dataset.borderColor) {\n\t\t\t\tborderColor = dataset.borderColor;\n\t\t\t}\n\n\t\t\treturn borderColor;\n\t\t},\n\n\t\tgetPointBorderWidth: function(point, index) {\n\t\t\tvar borderWidth = this.chart.options.elements.point.borderWidth;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (!isNaN(custom.borderWidth)) {\n\t\t\t\tborderWidth = custom.borderWidth;\n\t\t\t} else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) {\n\t\t\t\tborderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth);\n\t\t\t} else if (!isNaN(dataset.borderWidth)) {\n\t\t\t\tborderWidth = dataset.borderWidth;\n\t\t\t}\n\n\t\t\treturn borderWidth;\n\t\t},\n\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar datasetIndex = me.index;\n\t\t\tvar value = dataset.data[index];\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar pointOptions = me.chart.options.elements.point;\n\t\t\tvar x, y;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\n\t\t\t}\n\n\t\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\n\t\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\n\n\t\t\t// Utility\n\t\t\tpoint._xScale = xScale;\n\t\t\tpoint._yScale = yScale;\n\t\t\tpoint._datasetIndex = datasetIndex;\n\t\t\tpoint._index = index;\n\n\t\t\t// Desired view properties\n\t\t\tpoint._model = {\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t\t// Appearance\n\t\t\t\tradius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius),\n\t\t\t\tpointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle),\n\t\t\t\tbackgroundColor: me.getPointBackgroundColor(point, index),\n\t\t\t\tborderColor: me.getPointBorderColor(point, index),\n\t\t\t\tborderWidth: me.getPointBorderWidth(point, index),\n\t\t\t\ttension: meta.dataset._model ? meta.dataset._model.tension : 0,\n\t\t\t\tsteppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false,\n\t\t\t\t// Tooltip\n\t\t\t\thitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius)\n\t\t\t};\n\t\t},\n\n\t\tcalculatePointY: function(value, index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar sumPos = 0;\n\t\t\tvar sumNeg = 0;\n\t\t\tvar i, ds, dsMeta;\n\n\t\t\tif (yScale.options.stacked) {\n\t\t\t\tfor (i = 0; i < datasetIndex; i++) {\n\t\t\t\t\tds = chart.data.datasets[i];\n\t\t\t\t\tdsMeta = chart.getDatasetMeta(i);\n\t\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) {\n\t\t\t\t\t\tvar stackedRightValue = Number(yScale.getRightValue(ds.data[index]));\n\t\t\t\t\t\tif (stackedRightValue < 0) {\n\t\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsumPos += stackedRightValue || 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar rightValue = Number(yScale.getRightValue(value));\n\t\t\t\tif (rightValue < 0) {\n\t\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\n\t\t\t\t}\n\t\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\n\t\t\t}\n\n\t\t\treturn yScale.getPixelForValue(value);\n\t\t},\n\n\t\tupdateBezierControlPoints: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar area = me.chart.chartArea;\n\t\t\tvar points = (meta.data || []);\n\t\t\tvar i, ilen, point, model, controlPoints;\n\n\t\t\t// Only consider points that are drawn in case the spanGaps option is used\n\t\t\tif (meta.dataset._model.spanGaps) {\n\t\t\t\tpoints = points.filter(function(pt) {\n\t\t\t\t\treturn !pt._model.skip;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction capControlPoint(pt, min, max) {\n\t\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t\t}\n\n\t\t\tif (meta.dataset._model.cubicInterpolationMode === 'monotone') {\n\t\t\t\thelpers.splineCurveMonotone(points);\n\t\t\t} else {\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\t\tpoint = points[i];\n\t\t\t\t\tmodel = point._model;\n\t\t\t\t\tcontrolPoints = helpers.splineCurve(\n\t\t\t\t\t\thelpers.previousItem(points, i)._model,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\thelpers.nextItem(points, i)._model,\n\t\t\t\t\t\tmeta.dataset._model.tension\n\t\t\t\t\t);\n\t\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\n\t\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\n\t\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\n\t\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.chart.options.elements.line.capBezierPoints) {\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\t\tmodel = points[i]._model;\n\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar points = meta.data || [];\n\t\t\tvar area = chart.chartArea;\n\t\t\tvar ilen = points.length;\n\t\t\tvar i = 0;\n\n\t\t\thelpers.canvas.clipArea(chart.ctx, area);\n\n\t\t\tif (lineEnabled(me.getDataset(), chart.options)) {\n\t\t\t\tmeta.dataset.draw();\n\t\t\t}\n\n\t\t\thelpers.canvas.unclipArea(chart.ctx);\n\n\t\t\t// Draw the points\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\tpoints[i].draw(area);\n\t\t\t}\n\t\t},\n\n\t\tsetHoverStyle: function(point) {\n\t\t\t// Point\n\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\n\t\t\tvar index = point._index;\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar model = point._model;\n\n\t\t\tmodel.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t},\n\n\t\tremoveHoverStyle: function(point) {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.chart.data.datasets[point._datasetIndex];\n\t\t\tvar index = point._index;\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar model = point._model;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\n\t\t\tmodel.radius = custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, me.chart.options.elements.point.radius);\n\t\t\tmodel.backgroundColor = me.getPointBackgroundColor(point, index);\n\t\t\tmodel.borderColor = me.getPointBorderColor(point, index);\n\t\t\tmodel.borderWidth = me.getPointBorderWidth(point, index);\n\t\t}\n\t});\n};\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar months = [\n 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'\n];\n\nvar monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];\n\nvar weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];\n\nvar weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];\n\nvar weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\nvar gd = moment.defineLocale('gd', {\n months : months,\n monthsShort : monthsShort,\n monthsParseExact : true,\n weekdays : weekdays,\n weekdaysShort : weekdaysShort,\n weekdaysMin : weekdaysMin,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[An-diugh aig] LT',\n nextDay : '[A-màireach aig] LT',\n nextWeek : 'dddd [aig] LT',\n lastDay : '[An-dè aig] LT',\n lastWeek : 'dddd [seo chaidh] [aig] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ann an %s',\n past : 'bho chionn %s',\n s : 'beagan diogan',\n m : 'mionaid',\n mm : '%d mionaidean',\n h : 'uair',\n hh : '%d uairean',\n d : 'latha',\n dd : '%d latha',\n M : 'mìos',\n MM : '%d mìosan',\n y : 'bliadhna',\n yy : '%d bliadhna'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}(d|na|mh)/,\n ordinal : function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar it = moment.defineLocale('it', {\n months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : function (s) {\n return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past : '%s fa',\n s : 'alcuni secondi',\n m : 'un minuto',\n mm : '%d minuti',\n h : 'un\\'ora',\n hh : '%d ore',\n d : 'un giorno',\n dd : '%d giorni',\n M : 'un mese',\n MM : '%d mesi',\n y : 'un anno',\n yy : '%d anni'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal: '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn it;\n\n})));\n","/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nmodule.exports = {\n\tacquireContext: function(item) {\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\treturn item && item.getContext('2d') || null;\n\t}\n};\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n}\nfunction relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n 'dd': 'день_дні_днів',\n 'MM': 'місяць_місяці_місяців',\n 'yy': 'рік_роки_років'\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n }\n else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n }\n else {\n return number + ' ' + plural(format[key], +number);\n }\n}\nfunction weekdaysCaseReplace(m, format) {\n var weekdays = {\n 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),\n 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),\n 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')\n };\n\n if (!m) {\n return weekdays['nominative'];\n }\n\n var nounCase = (/(\\[[ВвУу]\\]) ?dddd/).test(format) ?\n 'accusative' :\n ((/\\[?(?:минулої|наступної)? ?\\] ?dddd/).test(format) ?\n 'genitive' :\n 'nominative');\n return weekdays[nounCase][m.day()];\n}\nfunction processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n}\n\nvar uk = moment.defineLocale('uk', {\n months : {\n 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),\n 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')\n },\n monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),\n weekdays : weekdaysCaseReplace,\n weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY р.',\n LLL : 'D MMMM YYYY р., HH:mm',\n LLLL : 'dddd, D MMMM YYYY р., HH:mm'\n },\n calendar : {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'за %s',\n past : '%s тому',\n s : 'декілька секунд',\n m : relativeTimeWithPlural,\n mm : relativeTimeWithPlural,\n h : 'годину',\n hh : relativeTimeWithPlural,\n d : 'день',\n dd : relativeTimeWithPlural,\n M : 'місяць',\n MM : relativeTimeWithPlural,\n y : 'рік',\n yy : relativeTimeWithPlural\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar fr = moment.defineLocale('fr', {\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact : true,\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Aujourd’hui à] LT',\n nextDay : '[Demain à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[Hier à] LT',\n lastWeek : 'dddd [dernier à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dans %s',\n past : 'il y a %s',\n s : 'quelques secondes',\n m : 'une minute',\n mm : '%d minutes',\n h : 'une heure',\n hh : '%d heures',\n d : 'un jour',\n dd : '%d jours',\n M : 'un mois',\n MM : '%d mois',\n y : 'un an',\n yy : '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal : function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar enIe = moment.defineLocale('en-ie', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn enIe;\n\n})));\n","import { AuthAxios } from \"../../global-config/HttpConfig\";\r\nimport { ApiURIs } from \"../../global-config/ApiList\";\r\nimport { IDoctorSchedule } from \"../models/DoctorSchedule\"; \r\n\r\nexport default {\r\n GetListByUser2() {\r\n return AuthAxios.get(ApiURIs.DrScheduleListByUser);\r\n },\r\n GetListByChamber() {\r\n return AuthAxios.get(ApiURIs.DrScheduleListByChamber);\r\n },\r\n GetWeeklyScheduleList() {\r\n return AuthAxios.get(ApiURIs.DrChamberScheduleWeeklyListById);\r\n },\r\n GetScheduleList(\r\n chamberId: number,\r\n startDate: Date,\r\n ) {\r\n return AuthAxios.get(\r\n `${\r\n ApiURIs.DrChamberScheduleList\r\n }?chamberId=${chamberId}&startDate=${startDate.toISOString()}`\r\n );\r\n },\r\n GetScheduleListById(\r\n doctorId:number,\r\n chamberId: number,\r\n startDate: Date,\r\n ) {\r\n return AuthAxios.get(\r\n `${\r\n ApiURIs.DrChamberScheduleListById\r\n }?doctorId=${doctorId}&chamberId=${chamberId}&startDate=${startDate.toISOString()}`\r\n );\r\n },\r\n\r\n\r\n GetScheduleListByDate(\r\n chamberId: number,\r\n startDate: Date,\r\n ) {\r\n return AuthAxios.get(\r\n `${\r\n ApiURIs.DrChamberScheduleListByDate\r\n }?chamberId=${chamberId}&startDate=${startDate.toISOString()}`\r\n );\r\n },\r\n\r\n insert(schedule: IDoctorSchedule) {\r\n return AuthAxios.post(ApiURIs.DrChamberScheduleInsert, JSON.stringify(schedule));\r\n },\r\n UpdateSchedule(schedule: IDoctorSchedule) {\r\n return AuthAxios.post(ApiURIs.DrChamberScheduleUpdate, JSON.stringify(schedule));\r\n },\r\n getDelete(id: number) {\r\n return AuthAxios.delete(`${ApiURIs.DrScheduleDelete}/${id}`);\r\n },\r\n GetListByUser(chamberId: number) {\r\n return AuthAxios.get(\r\n `${ApiURIs.DrScheduleListByUser}?chamberId=${chamberId}`\r\n );\r\n },\r\n\r\n};\r\n","'use strict';\n\nvar defaults = require('./core.defaults');\nvar Element = require('./core.element');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\tplugins: {}\n});\n\nmodule.exports = function(Chart) {\n\n\t/**\n\t * The plugin service singleton\n\t * @namespace Chart.plugins\n\t * @since 2.1.0\n\t */\n\tChart.plugins = {\n\t\t/**\n\t\t * Globally registered plugins.\n\t\t * @private\n\t\t */\n\t\t_plugins: [],\n\n\t\t/**\n\t\t * This identifier is used to invalidate the descriptors cache attached to each chart\n\t\t * when a global plugin is registered or unregistered. In this case, the cache ID is\n\t\t * incremented and descriptors are regenerated during following API calls.\n\t\t * @private\n\t\t */\n\t\t_cacheId: 0,\n\n\t\t/**\n\t\t * Registers the given plugin(s) if not already registered.\n\t\t * @param {Array|Object} plugins plugin instance(s).\n\t\t */\n\t\tregister: function(plugins) {\n\t\t\tvar p = this._plugins;\n\t\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\t\tif (p.indexOf(plugin) === -1) {\n\t\t\t\t\tp.push(plugin);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis._cacheId++;\n\t\t},\n\n\t\t/**\n\t\t * Unregisters the given plugin(s) only if registered.\n\t\t * @param {Array|Object} plugins plugin instance(s).\n\t\t */\n\t\tunregister: function(plugins) {\n\t\t\tvar p = this._plugins;\n\t\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\t\tvar idx = p.indexOf(plugin);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\tp.splice(idx, 1);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis._cacheId++;\n\t\t},\n\n\t\t/**\n\t\t * Remove all registered plugins.\n\t\t * @since 2.1.5\n\t\t */\n\t\tclear: function() {\n\t\t\tthis._plugins = [];\n\t\t\tthis._cacheId++;\n\t\t},\n\n\t\t/**\n\t\t * Returns the number of registered plugins?\n\t\t * @returns {Number}\n\t\t * @since 2.1.5\n\t\t */\n\t\tcount: function() {\n\t\t\treturn this._plugins.length;\n\t\t},\n\n\t\t/**\n\t\t * Returns all registered plugin instances.\n\t\t * @returns {Array} array of plugin objects.\n\t\t * @since 2.1.5\n\t\t */\n\t\tgetAll: function() {\n\t\t\treturn this._plugins;\n\t\t},\n\n\t\t/**\n\t\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t\t * returned value can be used, for instance, to interrupt the current action.\n\t\t * @param {Object} chart - The chart instance for which plugins should be called.\n\t\t * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t\t * @param {Array} [args] - Extra arguments to apply to the hook call.\n\t\t * @returns {Boolean} false if any of the plugins return false, else returns true.\n\t\t */\n\t\tnotify: function(chart, hook, args) {\n\t\t\tvar descriptors = this.descriptors(chart);\n\t\t\tvar ilen = descriptors.length;\n\t\t\tvar i, descriptor, plugin, params, method;\n\n\t\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\t\tdescriptor = descriptors[i];\n\t\t\t\tplugin = descriptor.plugin;\n\t\t\t\tmethod = plugin[hook];\n\t\t\t\tif (typeof method === 'function') {\n\t\t\t\t\tparams = [chart].concat(args || []);\n\t\t\t\t\tparams.push(descriptor.options);\n\t\t\t\t\tif (method.apply(plugin, params) === false) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\n\t\t/**\n\t\t * Returns descriptors of enabled plugins for the given chart.\n\t\t * @returns {Array} [{ plugin, options }]\n\t\t * @private\n\t\t */\n\t\tdescriptors: function(chart) {\n\t\t\tvar cache = chart._plugins || (chart._plugins = {});\n\t\t\tif (cache.id === this._cacheId) {\n\t\t\t\treturn cache.descriptors;\n\t\t\t}\n\n\t\t\tvar plugins = [];\n\t\t\tvar descriptors = [];\n\t\t\tvar config = (chart && chart.config) || {};\n\t\t\tvar options = (config.options && config.options.plugins) || {};\n\n\t\t\tthis._plugins.concat(config.plugins || []).forEach(function(plugin) {\n\t\t\t\tvar idx = plugins.indexOf(plugin);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar id = plugin.id;\n\t\t\t\tvar opts = options[id];\n\t\t\t\tif (opts === false) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (opts === true) {\n\t\t\t\t\topts = helpers.clone(defaults.global.plugins[id]);\n\t\t\t\t}\n\n\t\t\t\tplugins.push(plugin);\n\t\t\t\tdescriptors.push({\n\t\t\t\t\tplugin: plugin,\n\t\t\t\t\toptions: opts || {}\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tcache.descriptors = descriptors;\n\t\t\tcache.id = this._cacheId;\n\t\t\treturn descriptors;\n\t\t}\n\t};\n\n\t/**\n\t * Plugin extension hooks.\n\t * @interface IPlugin\n\t * @since 2.1.0\n\t */\n\t/**\n\t * @method IPlugin#beforeInit\n\t * @desc Called before initializing `chart`.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#afterInit\n\t * @desc Called after `chart` has been initialized and before the first update.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#beforeUpdate\n\t * @desc Called before updating `chart`. If any plugin returns `false`, the update\n\t * is cancelled (and thus subsequent render(s)) until another `update` is triggered.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t * @returns {Boolean} `false` to cancel the chart update.\n\t */\n\t/**\n\t * @method IPlugin#afterUpdate\n\t * @desc Called after `chart` has been updated and before rendering. Note that this\n\t * hook will not be called if the chart update has been previously cancelled.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#beforeDatasetsUpdate\n \t * @desc Called before updating the `chart` datasets. If any plugin returns `false`,\n\t * the datasets update is cancelled until another `update` is triggered.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t * @returns {Boolean} false to cancel the datasets update.\n\t * @since version 2.1.5\n\t */\n\t/**\n\t * @method IPlugin#afterDatasetsUpdate\n\t * @desc Called after the `chart` datasets have been updated. Note that this hook\n\t * will not be called if the datasets update has been previously cancelled.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t * @since version 2.1.5\n\t */\n\t/**\n\t * @method IPlugin#beforeDatasetUpdate\n \t * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin\n\t * returns `false`, the datasets update is cancelled until another `update` is triggered.\n\t * @param {Chart} chart - The chart instance.\n\t * @param {Object} args - The call arguments.\n\t * @param {Number} args.index - The dataset index.\n\t * @param {Object} args.meta - The dataset metadata.\n\t * @param {Object} options - The plugin options.\n\t * @returns {Boolean} `false` to cancel the chart datasets drawing.\n\t */\n\t/**\n\t * @method IPlugin#afterDatasetUpdate\n \t * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note\n\t * that this hook will not be called if the datasets update has been previously cancelled.\n\t * @param {Chart} chart - The chart instance.\n\t * @param {Object} args - The call arguments.\n\t * @param {Number} args.index - The dataset index.\n\t * @param {Object} args.meta - The dataset metadata.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#beforeLayout\n\t * @desc Called before laying out `chart`. If any plugin returns `false`,\n\t * the layout update is cancelled until another `update` is triggered.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t * @returns {Boolean} `false` to cancel the chart layout.\n\t */\n\t/**\n\t * @method IPlugin#afterLayout\n\t * @desc Called after the `chart` has been layed out. Note that this hook will not\n\t * be called if the layout update has been previously cancelled.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#beforeRender\n\t * @desc Called before rendering `chart`. If any plugin returns `false`,\n\t * the rendering is cancelled until another `render` is triggered.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t * @returns {Boolean} `false` to cancel the chart rendering.\n\t */\n\t/**\n\t * @method IPlugin#afterRender\n\t * @desc Called after the `chart` has been fully rendered (and animation completed). Note\n\t * that this hook will not be called if the rendering has been previously cancelled.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#beforeDraw\n\t * @desc Called before drawing `chart` at every animation frame specified by the given\n\t * easing value. If any plugin returns `false`, the frame drawing is cancelled until\n\t * another `render` is triggered.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n\t * @param {Object} options - The plugin options.\n\t * @returns {Boolean} `false` to cancel the chart drawing.\n\t */\n\t/**\n\t * @method IPlugin#afterDraw\n\t * @desc Called after the `chart` has been drawn for the specific easing value. Note\n\t * that this hook will not be called if the drawing has been previously cancelled.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#beforeDatasetsDraw\n \t * @desc Called before drawing the `chart` datasets. If any plugin returns `false`,\n\t * the datasets drawing is cancelled until another `render` is triggered.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n\t * @param {Object} options - The plugin options.\n\t * @returns {Boolean} `false` to cancel the chart datasets drawing.\n\t */\n\t/**\n\t * @method IPlugin#afterDatasetsDraw\n\t * @desc Called after the `chart` datasets have been drawn. Note that this hook\n\t * will not be called if the datasets drawing has been previously cancelled.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#beforeDatasetDraw\n \t * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets\n\t * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing\n\t * is cancelled until another `render` is triggered.\n\t * @param {Chart} chart - The chart instance.\n\t * @param {Object} args - The call arguments.\n\t * @param {Number} args.index - The dataset index.\n\t * @param {Object} args.meta - The dataset metadata.\n\t * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n\t * @param {Object} options - The plugin options.\n\t * @returns {Boolean} `false` to cancel the chart datasets drawing.\n\t */\n\t/**\n\t * @method IPlugin#afterDatasetDraw\n \t * @desc Called after the `chart` datasets at the given `args.index` have been drawn\n\t * (datasets are drawn in the reverse order). Note that this hook will not be called\n\t * if the datasets drawing has been previously cancelled.\n\t * @param {Chart} chart - The chart instance.\n\t * @param {Object} args - The call arguments.\n\t * @param {Number} args.index - The dataset index.\n\t * @param {Object} args.meta - The dataset metadata.\n\t * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n \t * @method IPlugin#beforeTooltipDraw\n\t * @desc Called before drawing the `tooltip`. If any plugin returns `false`,\n\t * the tooltip drawing is cancelled until another `render` is triggered.\n\t * @param {Chart} chart - The chart instance.\n\t * @param {Object} args - The call arguments.\n\t * @param {Object} args.tooltip - The tooltip.\n\t * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n\t * @param {Object} options - The plugin options.\n\t * @returns {Boolean} `false` to cancel the chart tooltip drawing.\n \t */\n\t/**\n \t * @method IPlugin#afterTooltipDraw\n \t * @desc Called after drawing the `tooltip`. Note that this hook will not\n \t * be called if the tooltip drawing has been previously cancelled.\n \t * @param {Chart} chart - The chart instance.\n \t * @param {Object} args - The call arguments.\n \t * @param {Object} args.tooltip - The tooltip.\n\t * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n \t * @param {Object} options - The plugin options.\n \t */\n\t/**\n\t * @method IPlugin#beforeEvent\n \t * @desc Called before processing the specified `event`. If any plugin returns `false`,\n\t * the event will be discarded.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {IEvent} event - The event object.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#afterEvent\n\t * @desc Called after the `event` has been consumed. Note that this hook\n\t * will not be called if the `event` has been previously discarded.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {IEvent} event - The event object.\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#resize\n\t * @desc Called after the chart as been resized.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Number} size - The new canvas display size (eq. canvas.style width & height).\n\t * @param {Object} options - The plugin options.\n\t */\n\t/**\n\t * @method IPlugin#destroy\n\t * @desc Called after the chart as been destroyed.\n\t * @param {Chart.Controller} chart - The chart instance.\n\t * @param {Object} options - The plugin options.\n\t */\n\n\t/**\n\t * Provided for backward compatibility, use Chart.plugins instead\n\t * @namespace Chart.pluginService\n\t * @deprecated since version 2.1.5\n\t * @todo remove at version 3\n\t * @private\n\t */\n\tChart.pluginService = Chart.plugins;\n\n\t/**\n\t * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\n\t * effect, instead simply create/register plugins via plain JavaScript objects.\n\t * @interface Chart.PluginBase\n\t * @deprecated since version 2.5.0\n\t * @todo remove at version 3\n\t * @private\n\t */\n\tChart.PluginBase = Element.extend({});\n};\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n}\nfunction translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n}\n\nvar is = moment.defineLocale('is', {\n months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),\n weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY [kl.] H:mm',\n LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'\n },\n calendar : {\n sameDay : '[í dag kl.] LT',\n nextDay : '[á morgun kl.] LT',\n nextWeek : 'dddd [kl.] LT',\n lastDay : '[í gær kl.] LT',\n lastWeek : '[síðasta] dddd [kl.] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'eftir %s',\n past : 'fyrir %s síðan',\n s : translate,\n m : translate,\n mm : translate,\n h : 'klukkustund',\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn is;\n\n})));\n","'use strict';\n\nvar helpers = require('../helpers/index');\n\nmodule.exports = function(Chart) {\n\n\tvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\n\t/**\n\t * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n\t * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n\t * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\n\t */\n\tfunction listenArrayEvents(array, listener) {\n\t\tif (array._chartjs) {\n\t\t\tarray._chartjs.listeners.push(listener);\n\t\t\treturn;\n\t\t}\n\n\t\tObject.defineProperty(array, '_chartjs', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: {\n\t\t\t\tlisteners: [listener]\n\t\t\t}\n\t\t});\n\n\t\tarrayEvents.forEach(function(key) {\n\t\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\n\t\t\tvar base = array[key];\n\n\t\t\tObject.defineProperty(array, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: function() {\n\t\t\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\t\t\t\tvar res = base.apply(this, args);\n\n\t\t\t\t\thelpers.each(array._chartjs.listeners, function(object) {\n\t\t\t\t\t\tif (typeof object[method] === 'function') {\n\t\t\t\t\t\t\tobject[method].apply(object, args);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Removes the given array event listener and cleanup extra attached properties (such as\n\t * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n\t */\n\tfunction unlistenArrayEvents(array, listener) {\n\t\tvar stub = array._chartjs;\n\t\tif (!stub) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar listeners = stub.listeners;\n\t\tvar index = listeners.indexOf(listener);\n\t\tif (index !== -1) {\n\t\t\tlisteners.splice(index, 1);\n\t\t}\n\n\t\tif (listeners.length > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tarrayEvents.forEach(function(key) {\n\t\t\tdelete array[key];\n\t\t});\n\n\t\tdelete array._chartjs;\n\t}\n\n\t// Base class for all dataset controllers (line, bar, etc)\n\tChart.DatasetController = function(chart, datasetIndex) {\n\t\tthis.initialize(chart, datasetIndex);\n\t};\n\n\thelpers.extend(Chart.DatasetController.prototype, {\n\n\t\t/**\n\t\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\n\t\t * @type {Chart.core.element}\n\t\t */\n\t\tdatasetElementType: null,\n\n\t\t/**\n\t\t * Element type used to generate a meta data (e.g. Chart.element.Point).\n\t\t * @type {Chart.core.element}\n\t\t */\n\t\tdataElementType: null,\n\n\t\tinitialize: function(chart, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tme.chart = chart;\n\t\t\tme.index = datasetIndex;\n\t\t\tme.linkScales();\n\t\t\tme.addElements();\n\t\t},\n\n\t\tupdateIndex: function(datasetIndex) {\n\t\t\tthis.index = datasetIndex;\n\t\t},\n\n\t\tlinkScales: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar dataset = me.getDataset();\n\n\t\t\tif (meta.xAxisID === null) {\n\t\t\t\tmeta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id;\n\t\t\t}\n\t\t\tif (meta.yAxisID === null) {\n\t\t\t\tmeta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id;\n\t\t\t}\n\t\t},\n\n\t\tgetDataset: function() {\n\t\t\treturn this.chart.data.datasets[this.index];\n\t\t},\n\n\t\tgetMeta: function() {\n\t\t\treturn this.chart.getDatasetMeta(this.index);\n\t\t},\n\n\t\tgetScaleForId: function(scaleID) {\n\t\t\treturn this.chart.scales[scaleID];\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.update(true);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tdestroy: function() {\n\t\t\tif (this._data) {\n\t\t\t\tunlistenArrayEvents(this._data, this);\n\t\t\t}\n\t\t},\n\n\t\tcreateMetaDataset: function() {\n\t\t\tvar me = this;\n\t\t\tvar type = me.datasetElementType;\n\t\t\treturn type && new type({\n\t\t\t\t_chart: me.chart,\n\t\t\t\t_datasetIndex: me.index\n\t\t\t});\n\t\t},\n\n\t\tcreateMetaData: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar type = me.dataElementType;\n\t\t\treturn type && new type({\n\t\t\t\t_chart: me.chart,\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index\n\t\t\t});\n\t\t},\n\n\t\taddElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar data = me.getDataset().data || [];\n\t\t\tvar metaData = meta.data;\n\t\t\tvar i, ilen;\n\n\t\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\n\t\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\n\t\t\t}\n\n\t\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\n\t\t},\n\n\t\taddElementAndReset: function(index) {\n\t\t\tvar element = this.createMetaData(index);\n\t\t\tthis.getMeta().data.splice(index, 0, element);\n\t\t\tthis.updateElement(element, index, true);\n\t\t},\n\n\t\tbuildOrUpdateElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar data = dataset.data || (dataset.data = []);\n\n\t\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\n\t\t\t// real-time charts), we need to monitor these data modifications and synchronize\n\t\t\t// the internal meta data accordingly.\n\t\t\tif (me._data !== data) {\n\t\t\t\tif (me._data) {\n\t\t\t\t\t// This case happens when the user replaced the data array instance.\n\t\t\t\t\tunlistenArrayEvents(me._data, me);\n\t\t\t\t}\n\n\t\t\t\tlistenArrayEvents(data, me);\n\t\t\t\tme._data = data;\n\t\t\t}\n\n\t\t\t// Re-sync meta data in case the user replaced the data array or if we missed\n\t\t\t// any updates and so make sure that we handle number of datapoints changing.\n\t\t\tme.resyncElements();\n\t\t},\n\n\t\tupdate: helpers.noop,\n\n\t\ttransition: function(easingValue) {\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar elements = meta.data || [];\n\t\t\tvar ilen = elements.length;\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\telements[i].transition(easingValue);\n\t\t\t}\n\n\t\t\tif (meta.dataset) {\n\t\t\t\tmeta.dataset.transition(easingValue);\n\t\t\t}\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar elements = meta.data || [];\n\t\t\tvar ilen = elements.length;\n\t\t\tvar i = 0;\n\n\t\t\tif (meta.dataset) {\n\t\t\t\tmeta.dataset.draw();\n\t\t\t}\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\telements[i].draw();\n\t\t\t}\n\t\t},\n\n\t\tremoveHoverStyle: function(element, elementOpts) {\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\t\tvar index = element._index;\n\t\t\tvar custom = element.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar model = element._model;\n\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\n\t\t},\n\n\t\tsetHoverStyle: function(element) {\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\t\tvar index = element._index;\n\t\t\tvar custom = element.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar getHoverColor = helpers.getHoverColor;\n\t\t\tvar model = element._model;\n\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tresyncElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar data = me.getDataset().data;\n\t\t\tvar numMeta = meta.data.length;\n\t\t\tvar numData = data.length;\n\n\t\t\tif (numData < numMeta) {\n\t\t\t\tmeta.data.splice(numData, numMeta - numData);\n\t\t\t} else if (numData > numMeta) {\n\t\t\t\tme.insertElements(numMeta, numData - numMeta);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinsertElements: function(start, count) {\n\t\t\tfor (var i = 0; i < count; ++i) {\n\t\t\t\tthis.addElementAndReset(start + i);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataPush: function() {\n\t\t\tthis.insertElements(this.getDataset().data.length - 1, arguments.length);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataPop: function() {\n\t\t\tthis.getMeta().data.pop();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataShift: function() {\n\t\t\tthis.getMeta().data.shift();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataSplice: function(start, count) {\n\t\t\tthis.getMeta().data.splice(start, count);\n\t\t\tthis.insertElements(start, arguments.length - 2);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataUnshift: function() {\n\t\t\tthis.insertElements(0, arguments.length);\n\t\t}\n\t});\n\n\tChart.DatasetController.extend = helpers.inherits;\n};\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n\nvar suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү'\n};\n\nvar ky = moment.defineLocale('ky', {\n months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),\n monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),\n weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),\n weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Бүгүн саат] LT',\n nextDay : '[Эртең саат] LT',\n nextWeek : 'dddd [саат] LT',\n lastDay : '[Кече саат] LT',\n lastWeek : '[Өткен аптанын] dddd [күнү] [саат] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ичинде',\n past : '%s мурун',\n s : 'бирнече секунд',\n m : 'бир мүнөт',\n mm : '%d мүнөт',\n h : 'бир саат',\n hh : '%d саат',\n d : 'бир күн',\n dd : '%d күн',\n M : 'бир ай',\n MM : '%d ай',\n y : 'бир жыл',\n yy : '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal : function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn ky;\n\n})));\n","'use strict';\n\nvar color = require('chartjs-color');\nvar helpers = require('../helpers/index');\n\nfunction interpolate(start, view, model, ease) {\n\tvar keys = Object.keys(model);\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\n\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\tkey = keys[i];\n\n\t\ttarget = model[key];\n\n\t\t// if a value is added to the model after pivot() has been called, the view\n\t\t// doesn't contain it, so let's initialize the view to the target value.\n\t\tif (!view.hasOwnProperty(key)) {\n\t\t\tview[key] = target;\n\t\t}\n\n\t\tactual = view[key];\n\n\t\tif (actual === target || key[0] === '_') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!start.hasOwnProperty(key)) {\n\t\t\tstart[key] = actual;\n\t\t}\n\n\t\torigin = start[key];\n\n\t\ttype = typeof target;\n\n\t\tif (type === typeof origin) {\n\t\t\tif (type === 'string') {\n\t\t\t\tc0 = color(origin);\n\t\t\t\tif (c0.valid) {\n\t\t\t\t\tc1 = color(target);\n\t\t\t\t\tif (c1.valid) {\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (type === 'number' && isFinite(origin) && isFinite(target)) {\n\t\t\t\tview[key] = origin + (target - origin) * ease;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tview[key] = target;\n\t}\n}\n\nvar Element = function(configuration) {\n\thelpers.extend(this, configuration);\n\tthis.initialize.apply(this, arguments);\n};\n\nhelpers.extend(Element.prototype, {\n\n\tinitialize: function() {\n\t\tthis.hidden = false;\n\t},\n\n\tpivot: function() {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\tme._view = helpers.clone(me._model);\n\t\t}\n\t\tme._start = {};\n\t\treturn me;\n\t},\n\n\ttransition: function(ease) {\n\t\tvar me = this;\n\t\tvar model = me._model;\n\t\tvar start = me._start;\n\t\tvar view = me._view;\n\n\t\t// No animation -> No Transition\n\t\tif (!model || ease === 1) {\n\t\t\tme._view = model;\n\t\t\tme._start = null;\n\t\t\treturn me;\n\t\t}\n\n\t\tif (!view) {\n\t\t\tview = me._view = {};\n\t\t}\n\n\t\tif (!start) {\n\t\t\tstart = me._start = {};\n\t\t}\n\n\t\tinterpolate(start, view, model, ease);\n\n\t\treturn me;\n\t},\n\n\ttooltipPosition: function() {\n\t\treturn {\n\t\t\tx: this._model.x,\n\t\t\ty: this._model.y\n\t\t};\n\t},\n\n\thasValue: function() {\n\t\treturn helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y);\n\t}\n});\n\nElement.extend = helpers.inherits;\n\nmodule.exports = Element;\n","/* MIT license */\n\nmodule.exports = {\n rgb2hsl: rgb2hsl,\n rgb2hsv: rgb2hsv,\n rgb2hwb: rgb2hwb,\n rgb2cmyk: rgb2cmyk,\n rgb2keyword: rgb2keyword,\n rgb2xyz: rgb2xyz,\n rgb2lab: rgb2lab,\n rgb2lch: rgb2lch,\n\n hsl2rgb: hsl2rgb,\n hsl2hsv: hsl2hsv,\n hsl2hwb: hsl2hwb,\n hsl2cmyk: hsl2cmyk,\n hsl2keyword: hsl2keyword,\n\n hsv2rgb: hsv2rgb,\n hsv2hsl: hsv2hsl,\n hsv2hwb: hsv2hwb,\n hsv2cmyk: hsv2cmyk,\n hsv2keyword: hsv2keyword,\n\n hwb2rgb: hwb2rgb,\n hwb2hsl: hwb2hsl,\n hwb2hsv: hwb2hsv,\n hwb2cmyk: hwb2cmyk,\n hwb2keyword: hwb2keyword,\n\n cmyk2rgb: cmyk2rgb,\n cmyk2hsl: cmyk2hsl,\n cmyk2hsv: cmyk2hsv,\n cmyk2hwb: cmyk2hwb,\n cmyk2keyword: cmyk2keyword,\n\n keyword2rgb: keyword2rgb,\n keyword2hsl: keyword2hsl,\n keyword2hsv: keyword2hsv,\n keyword2hwb: keyword2hwb,\n keyword2cmyk: keyword2cmyk,\n keyword2lab: keyword2lab,\n keyword2xyz: keyword2xyz,\n\n xyz2rgb: xyz2rgb,\n xyz2lab: xyz2lab,\n xyz2lch: xyz2lch,\n\n lab2xyz: lab2xyz,\n lab2rgb: lab2rgb,\n lab2lch: lab2lch,\n\n lch2lab: lch2lab,\n lch2xyz: lch2xyz,\n lch2rgb: lch2rgb\n}\n\n\nfunction rgb2hsl(rgb) {\n var r = rgb[0]/255,\n g = rgb[1]/255,\n b = rgb[2]/255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n delta = max - min,\n h, s, l;\n\n if (max == min)\n h = 0;\n else if (r == max)\n h = (g - b) / delta;\n else if (g == max)\n h = 2 + (b - r) / delta;\n else if (b == max)\n h = 4 + (r - g)/ delta;\n\n h = Math.min(h * 60, 360);\n\n if (h < 0)\n h += 360;\n\n l = (min + max) / 2;\n\n if (max == min)\n s = 0;\n else if (l <= 0.5)\n s = delta / (max + min);\n else\n s = delta / (2 - max - min);\n\n return [h, s * 100, l * 100];\n}\n\nfunction rgb2hsv(rgb) {\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2],\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n delta = max - min,\n h, s, v;\n\n if (max == 0)\n s = 0;\n else\n s = (delta/max * 1000)/10;\n\n if (max == min)\n h = 0;\n else if (r == max)\n h = (g - b) / delta;\n else if (g == max)\n h = 2 + (b - r) / delta;\n else if (b == max)\n h = 4 + (r - g) / delta;\n\n h = Math.min(h * 60, 360);\n\n if (h < 0)\n h += 360;\n\n v = ((max / 255) * 1000) / 10;\n\n return [h, s, v];\n}\n\nfunction rgb2hwb(rgb) {\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2],\n h = rgb2hsl(rgb)[0],\n w = 1/255 * Math.min(r, Math.min(g, b)),\n b = 1 - 1/255 * Math.max(r, Math.max(g, b));\n\n return [h, w * 100, b * 100];\n}\n\nfunction rgb2cmyk(rgb) {\n var r = rgb[0] / 255,\n g = rgb[1] / 255,\n b = rgb[2] / 255,\n c, m, y, k;\n\n k = Math.min(1 - r, 1 - g, 1 - b);\n c = (1 - r - k) / (1 - k) || 0;\n m = (1 - g - k) / (1 - k) || 0;\n y = (1 - b - k) / (1 - k) || 0;\n return [c * 100, m * 100, y * 100, k * 100];\n}\n\nfunction rgb2keyword(rgb) {\n return reverseKeywords[JSON.stringify(rgb)];\n}\n\nfunction rgb2xyz(rgb) {\n var r = rgb[0] / 255,\n g = rgb[1] / 255,\n b = rgb[2] / 255;\n\n // assume sRGB\n r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n return [x * 100, y *100, z * 100];\n}\n\nfunction rgb2lab(rgb) {\n var xyz = rgb2xyz(rgb),\n x = xyz[0],\n y = xyz[1],\n z = xyz[2],\n l, a, b;\n\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n l = (116 * y) - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n\n return [l, a, b];\n}\n\nfunction rgb2lch(args) {\n return lab2lch(rgb2lab(args));\n}\n\nfunction hsl2rgb(hsl) {\n var h = hsl[0] / 360,\n s = hsl[1] / 100,\n l = hsl[2] / 100,\n t1, t2, t3, rgb, val;\n\n if (s == 0) {\n val = l * 255;\n return [val, val, val];\n }\n\n if (l < 0.5)\n t2 = l * (1 + s);\n else\n t2 = l + s - l * s;\n t1 = 2 * l - t2;\n\n rgb = [0, 0, 0];\n for (var i = 0; i < 3; i++) {\n t3 = h + 1 / 3 * - (i - 1);\n t3 < 0 && t3++;\n t3 > 1 && t3--;\n\n if (6 * t3 < 1)\n val = t1 + (t2 - t1) * 6 * t3;\n else if (2 * t3 < 1)\n val = t2;\n else if (3 * t3 < 2)\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n else\n val = t1;\n\n rgb[i] = val * 255;\n }\n\n return rgb;\n}\n\nfunction hsl2hsv(hsl) {\n var h = hsl[0],\n s = hsl[1] / 100,\n l = hsl[2] / 100,\n sv, v;\n\n if(l === 0) {\n // no need to do calc on black\n // also avoids divide by 0 error\n return [0, 0, 0];\n }\n\n l *= 2;\n s *= (l <= 1) ? l : 2 - l;\n v = (l + s) / 2;\n sv = (2 * s) / (l + s);\n return [h, sv * 100, v * 100];\n}\n\nfunction hsl2hwb(args) {\n return rgb2hwb(hsl2rgb(args));\n}\n\nfunction hsl2cmyk(args) {\n return rgb2cmyk(hsl2rgb(args));\n}\n\nfunction hsl2keyword(args) {\n return rgb2keyword(hsl2rgb(args));\n}\n\n\nfunction hsv2rgb(hsv) {\n var h = hsv[0] / 60,\n s = hsv[1] / 100,\n v = hsv[2] / 100,\n hi = Math.floor(h) % 6;\n\n var f = h - Math.floor(h),\n p = 255 * v * (1 - s),\n q = 255 * v * (1 - (s * f)),\n t = 255 * v * (1 - (s * (1 - f))),\n v = 255 * v;\n\n switch(hi) {\n case 0:\n return [v, t, p];\n case 1:\n return [q, v, p];\n case 2:\n return [p, v, t];\n case 3:\n return [p, q, v];\n case 4:\n return [t, p, v];\n case 5:\n return [v, p, q];\n }\n}\n\nfunction hsv2hsl(hsv) {\n var h = hsv[0],\n s = hsv[1] / 100,\n v = hsv[2] / 100,\n sl, l;\n\n l = (2 - s) * v;\n sl = s * v;\n sl /= (l <= 1) ? l : 2 - l;\n sl = sl || 0;\n l /= 2;\n return [h, sl * 100, l * 100];\n}\n\nfunction hsv2hwb(args) {\n return rgb2hwb(hsv2rgb(args))\n}\n\nfunction hsv2cmyk(args) {\n return rgb2cmyk(hsv2rgb(args));\n}\n\nfunction hsv2keyword(args) {\n return rgb2keyword(hsv2rgb(args));\n}\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nfunction hwb2rgb(hwb) {\n var h = hwb[0] / 360,\n wh = hwb[1] / 100,\n bl = hwb[2] / 100,\n ratio = wh + bl,\n i, v, f, n;\n\n // wh + bl cant be > 1\n if (ratio > 1) {\n wh /= ratio;\n bl /= ratio;\n }\n\n i = Math.floor(6 * h);\n v = 1 - bl;\n f = 6 * h - i;\n if ((i & 0x01) != 0) {\n f = 1 - f;\n }\n n = wh + f * (v - wh); // linear interpolation\n\n switch (i) {\n default:\n case 6:\n case 0: r = v; g = n; b = wh; break;\n case 1: r = n; g = v; b = wh; break;\n case 2: r = wh; g = v; b = n; break;\n case 3: r = wh; g = n; b = v; break;\n case 4: r = n; g = wh; b = v; break;\n case 5: r = v; g = wh; b = n; break;\n }\n\n return [r * 255, g * 255, b * 255];\n}\n\nfunction hwb2hsl(args) {\n return rgb2hsl(hwb2rgb(args));\n}\n\nfunction hwb2hsv(args) {\n return rgb2hsv(hwb2rgb(args));\n}\n\nfunction hwb2cmyk(args) {\n return rgb2cmyk(hwb2rgb(args));\n}\n\nfunction hwb2keyword(args) {\n return rgb2keyword(hwb2rgb(args));\n}\n\nfunction cmyk2rgb(cmyk) {\n var c = cmyk[0] / 100,\n m = cmyk[1] / 100,\n y = cmyk[2] / 100,\n k = cmyk[3] / 100,\n r, g, b;\n\n r = 1 - Math.min(1, c * (1 - k) + k);\n g = 1 - Math.min(1, m * (1 - k) + k);\n b = 1 - Math.min(1, y * (1 - k) + k);\n return [r * 255, g * 255, b * 255];\n}\n\nfunction cmyk2hsl(args) {\n return rgb2hsl(cmyk2rgb(args));\n}\n\nfunction cmyk2hsv(args) {\n return rgb2hsv(cmyk2rgb(args));\n}\n\nfunction cmyk2hwb(args) {\n return rgb2hwb(cmyk2rgb(args));\n}\n\nfunction cmyk2keyword(args) {\n return rgb2keyword(cmyk2rgb(args));\n}\n\n\nfunction xyz2rgb(xyz) {\n var x = xyz[0] / 100,\n y = xyz[1] / 100,\n z = xyz[2] / 100,\n r, g, b;\n\n r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n // assume sRGB\n r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n : r = (r * 12.92);\n\n g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n : g = (g * 12.92);\n\n b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n : b = (b * 12.92);\n\n r = Math.min(Math.max(0, r), 1);\n g = Math.min(Math.max(0, g), 1);\n b = Math.min(Math.max(0, b), 1);\n\n return [r * 255, g * 255, b * 255];\n}\n\nfunction xyz2lab(xyz) {\n var x = xyz[0],\n y = xyz[1],\n z = xyz[2],\n l, a, b;\n\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n l = (116 * y) - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n\n return [l, a, b];\n}\n\nfunction xyz2lch(args) {\n return lab2lch(xyz2lab(args));\n}\n\nfunction lab2xyz(lab) {\n var l = lab[0],\n a = lab[1],\n b = lab[2],\n x, y, z, y2;\n\n if (l <= 8) {\n y = (l * 100) / 903.3;\n y2 = (7.787 * (y / 100)) + (16 / 116);\n } else {\n y = 100 * Math.pow((l + 16) / 116, 3);\n y2 = Math.pow(y / 100, 1/3);\n }\n\n x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3);\n\n z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3);\n\n return [x, y, z];\n}\n\nfunction lab2lch(lab) {\n var l = lab[0],\n a = lab[1],\n b = lab[2],\n hr, h, c;\n\n hr = Math.atan2(b, a);\n h = hr * 360 / 2 / Math.PI;\n if (h < 0) {\n h += 360;\n }\n c = Math.sqrt(a * a + b * b);\n return [l, c, h];\n}\n\nfunction lab2rgb(args) {\n return xyz2rgb(lab2xyz(args));\n}\n\nfunction lch2lab(lch) {\n var l = lch[0],\n c = lch[1],\n h = lch[2],\n a, b, hr;\n\n hr = h / 360 * 2 * Math.PI;\n a = c * Math.cos(hr);\n b = c * Math.sin(hr);\n return [l, a, b];\n}\n\nfunction lch2xyz(args) {\n return lab2xyz(lch2lab(args));\n}\n\nfunction lch2rgb(args) {\n return lab2rgb(lch2lab(args));\n}\n\nfunction keyword2rgb(keyword) {\n return cssKeywords[keyword];\n}\n\nfunction keyword2hsl(args) {\n return rgb2hsl(keyword2rgb(args));\n}\n\nfunction keyword2hsv(args) {\n return rgb2hsv(keyword2rgb(args));\n}\n\nfunction keyword2hwb(args) {\n return rgb2hwb(keyword2rgb(args));\n}\n\nfunction keyword2cmyk(args) {\n return rgb2cmyk(keyword2rgb(args));\n}\n\nfunction keyword2lab(args) {\n return rgb2lab(keyword2rgb(args));\n}\n\nfunction keyword2xyz(args) {\n return rgb2xyz(keyword2rgb(args));\n}\n\nvar cssKeywords = {\n aliceblue: [240,248,255],\n antiquewhite: [250,235,215],\n aqua: [0,255,255],\n aquamarine: [127,255,212],\n azure: [240,255,255],\n beige: [245,245,220],\n bisque: [255,228,196],\n black: [0,0,0],\n blanchedalmond: [255,235,205],\n blue: [0,0,255],\n blueviolet: [138,43,226],\n brown: [165,42,42],\n burlywood: [222,184,135],\n cadetblue: [95,158,160],\n chartreuse: [127,255,0],\n chocolate: [210,105,30],\n coral: [255,127,80],\n cornflowerblue: [100,149,237],\n cornsilk: [255,248,220],\n crimson: [220,20,60],\n cyan: [0,255,255],\n darkblue: [0,0,139],\n darkcyan: [0,139,139],\n darkgoldenrod: [184,134,11],\n darkgray: [169,169,169],\n darkgreen: [0,100,0],\n darkgrey: [169,169,169],\n darkkhaki: [189,183,107],\n darkmagenta: [139,0,139],\n darkolivegreen: [85,107,47],\n darkorange: [255,140,0],\n darkorchid: [153,50,204],\n darkred: [139,0,0],\n darksalmon: [233,150,122],\n darkseagreen: [143,188,143],\n darkslateblue: [72,61,139],\n darkslategray: [47,79,79],\n darkslategrey: [47,79,79],\n darkturquoise: [0,206,209],\n darkviolet: [148,0,211],\n deeppink: [255,20,147],\n deepskyblue: [0,191,255],\n dimgray: [105,105,105],\n dimgrey: [105,105,105],\n dodgerblue: [30,144,255],\n firebrick: [178,34,34],\n floralwhite: [255,250,240],\n forestgreen: [34,139,34],\n fuchsia: [255,0,255],\n gainsboro: [220,220,220],\n ghostwhite: [248,248,255],\n gold: [255,215,0],\n goldenrod: [218,165,32],\n gray: [128,128,128],\n green: [0,128,0],\n greenyellow: [173,255,47],\n grey: [128,128,128],\n honeydew: [240,255,240],\n hotpink: [255,105,180],\n indianred: [205,92,92],\n indigo: [75,0,130],\n ivory: [255,255,240],\n khaki: [240,230,140],\n lavender: [230,230,250],\n lavenderblush: [255,240,245],\n lawngreen: [124,252,0],\n lemonchiffon: [255,250,205],\n lightblue: [173,216,230],\n lightcoral: [240,128,128],\n lightcyan: [224,255,255],\n lightgoldenrodyellow: [250,250,210],\n lightgray: [211,211,211],\n lightgreen: [144,238,144],\n lightgrey: [211,211,211],\n lightpink: [255,182,193],\n lightsalmon: [255,160,122],\n lightseagreen: [32,178,170],\n lightskyblue: [135,206,250],\n lightslategray: [119,136,153],\n lightslategrey: [119,136,153],\n lightsteelblue: [176,196,222],\n lightyellow: [255,255,224],\n lime: [0,255,0],\n limegreen: [50,205,50],\n linen: [250,240,230],\n magenta: [255,0,255],\n maroon: [128,0,0],\n mediumaquamarine: [102,205,170],\n mediumblue: [0,0,205],\n mediumorchid: [186,85,211],\n mediumpurple: [147,112,219],\n mediumseagreen: [60,179,113],\n mediumslateblue: [123,104,238],\n mediumspringgreen: [0,250,154],\n mediumturquoise: [72,209,204],\n mediumvioletred: [199,21,133],\n midnightblue: [25,25,112],\n mintcream: [245,255,250],\n mistyrose: [255,228,225],\n moccasin: [255,228,181],\n navajowhite: [255,222,173],\n navy: [0,0,128],\n oldlace: [253,245,230],\n olive: [128,128,0],\n olivedrab: [107,142,35],\n orange: [255,165,0],\n orangered: [255,69,0],\n orchid: [218,112,214],\n palegoldenrod: [238,232,170],\n palegreen: [152,251,152],\n paleturquoise: [175,238,238],\n palevioletred: [219,112,147],\n papayawhip: [255,239,213],\n peachpuff: [255,218,185],\n peru: [205,133,63],\n pink: [255,192,203],\n plum: [221,160,221],\n powderblue: [176,224,230],\n purple: [128,0,128],\n rebeccapurple: [102, 51, 153],\n red: [255,0,0],\n rosybrown: [188,143,143],\n royalblue: [65,105,225],\n saddlebrown: [139,69,19],\n salmon: [250,128,114],\n sandybrown: [244,164,96],\n seagreen: [46,139,87],\n seashell: [255,245,238],\n sienna: [160,82,45],\n silver: [192,192,192],\n skyblue: [135,206,235],\n slateblue: [106,90,205],\n slategray: [112,128,144],\n slategrey: [112,128,144],\n snow: [255,250,250],\n springgreen: [0,255,127],\n steelblue: [70,130,180],\n tan: [210,180,140],\n teal: [0,128,128],\n thistle: [216,191,216],\n tomato: [255,99,71],\n turquoise: [64,224,208],\n violet: [238,130,238],\n wheat: [245,222,179],\n white: [255,255,255],\n whitesmoke: [245,245,245],\n yellow: [255,255,0],\n yellowgreen: [154,205,50]\n};\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n reverseKeywords[JSON.stringify(cssKeywords[key])] = key;\n}\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': '௧',\n '2': '௨',\n '3': '௩',\n '4': '௪',\n '5': '௫',\n '6': '௬',\n '7': '௭',\n '8': '௮',\n '9': '௯',\n '0': '௦'\n};\nvar numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0'\n};\n\nvar ta = moment.defineLocale('ta', {\n months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),\n weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),\n weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, HH:mm',\n LLLL : 'dddd, D MMMM YYYY, HH:mm'\n },\n calendar : {\n sameDay : '[இன்று] LT',\n nextDay : '[நாளை] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[நேற்று] LT',\n lastWeek : '[கடந்த வாரம்] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s இல்',\n past : '%s முன்',\n s : 'ஒரு சில விநாடிகள்',\n m : 'ஒரு நிமிடம்',\n mm : '%d நிமிடங்கள்',\n h : 'ஒரு மணி நேரம்',\n hh : '%d மணி நேரம்',\n d : 'ஒரு நாள்',\n dd : '%d நாட்கள்',\n M : 'ஒரு மாதம்',\n MM : '%d மாதங்கள்',\n y : 'ஒரு வருடம்',\n yy : '%d ஆண்டுகள்'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal : function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem : function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'mm': 'minute',\n 'hh': 'ore',\n 'dd': 'zile',\n 'MM': 'luni',\n 'yy': 'ani'\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n}\n\nvar ro = moment.defineLocale('ro', {\n months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY H:mm',\n LLLL : 'dddd, D MMMM YYYY H:mm'\n },\n calendar : {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'peste %s',\n past : '%s în urmă',\n s : 'câteva secunde',\n m : 'un minut',\n mm : relativeTimeWithPlural,\n h : 'o oră',\n hh : relativeTimeWithPlural,\n d : 'o zi',\n dd : relativeTimeWithPlural,\n M : 'o lună',\n MM : relativeTimeWithPlural,\n y : 'un an',\n yy : relativeTimeWithPlural\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar vi = moment.defineLocale('vi', {\n months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\n monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),\n monthsParseExact : true,\n weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),\n weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact : true,\n meridiemParse: /sa|ch/i,\n isPM : function (input) {\n return /^ch$/i.test(input);\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM [năm] YYYY',\n LLL : 'D MMMM [năm] YYYY HH:mm',\n LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',\n l : 'DD/M/YYYY',\n ll : 'D MMM YYYY',\n lll : 'D MMM YYYY HH:mm',\n llll : 'ddd, D MMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần rồi lúc] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s tới',\n past : '%s trước',\n s : 'vài giây',\n m : 'một phút',\n mm : '%d phút',\n h : 'một giờ',\n hh : '%d giờ',\n d : 'một ngày',\n dd : '%d ngày',\n M : 'một tháng',\n MM : '%d tháng',\n y : 'một năm',\n yy : '%d năm'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal : function (number) {\n return number;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 's': ['thodde secondanim', 'thodde second'],\n 'm': ['eka mintan', 'ek minute'],\n 'mm': [number + ' mintanim', number + ' mintam'],\n 'h': ['eka horan', 'ek hor'],\n 'hh': [number + ' horanim', number + ' hor'],\n 'd': ['eka disan', 'ek dis'],\n 'dd': [number + ' disanim', number + ' dis'],\n 'M': ['eka mhoinean', 'ek mhoino'],\n 'MM': [number + ' mhoineanim', number + ' mhoine'],\n 'y': ['eka vorsan', 'ek voros'],\n 'yy': [number + ' vorsanim', number + ' vorsam']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n}\n\nvar gomLatn = moment.defineLocale('gom-latn', {\n months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),\n monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\\'var'.split('_'),\n weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'A h:mm [vazta]',\n LTS : 'A h:mm:ss [vazta]',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY A h:mm [vazta]',\n LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]'\n },\n calendar : {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Ieta to] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fatlo] dddd[,] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s',\n past : '%s adim',\n s : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse : /\\d{1,2}(er)/,\n ordinal : function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /rati|sokalli|donparam|sanje/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokalli') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokalli';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n }\n});\n\nreturn gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar frCh = moment.defineLocale('fr-ch', {\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact : true,\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Aujourd’hui à] LT',\n nextDay : '[Demain à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[Hier à] LT',\n lastWeek : 'dddd [dernier à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dans %s',\n past : 'il y a %s',\n s : 'quelques secondes',\n m : 'une minute',\n mm : '%d minutes',\n h : 'une heure',\n hh : '%d heures',\n d : 'un jour',\n dd : '%d jours',\n M : 'un mois',\n MM : '%d mois',\n y : 'un an',\n yy : '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal : function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n/*jshint -W100*/\nvar si = moment.defineLocale('si', {\n months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),\n monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),\n weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),\n weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'a h:mm',\n LTS : 'a h:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY MMMM D',\n LLL : 'YYYY MMMM D, a h:mm',\n LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'\n },\n calendar : {\n sameDay : '[අද] LT[ට]',\n nextDay : '[හෙට] LT[ට]',\n nextWeek : 'dddd LT[ට]',\n lastDay : '[ඊයේ] LT[ට]',\n lastWeek : '[පසුගිය] dddd LT[ට]',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%sකින්',\n past : '%sකට පෙර',\n s : 'තත්පර කිහිපය',\n m : 'මිනිත්තුව',\n mm : 'මිනිත්තු %d',\n h : 'පැය',\n hh : 'පැය %d',\n d : 'දිනය',\n dd : 'දින %d',\n M : 'මාසය',\n MM : 'මාස %d',\n y : 'වසර',\n yy : 'වසර %d'\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal : function (number) {\n return number + ' වැනි';\n },\n meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM : function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n }\n});\n\nreturn si;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n\nvar ss = moment.defineLocale('ss', {\n months : \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split('_'),\n monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),\n weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Namuhla nga] LT',\n nextDay : '[Kusasa nga] LT',\n nextWeek : 'dddd [nga] LT',\n lastDay : '[Itolo nga] LT',\n lastWeek : 'dddd [leliphelile] [nga] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'nga %s',\n past : 'wenteka nga %s',\n s : 'emizuzwana lomcane',\n m : 'umzuzu',\n mm : '%d emizuzu',\n h : 'lihora',\n hh : '%d emahora',\n d : 'lilanga',\n dd : '%d emalanga',\n M : 'inyanga',\n MM : '%d tinyanga',\n y : 'umnyaka',\n yy : '%d iminyaka'\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal : '%d',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar sq = moment.defineLocale('sq', {\n months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\n monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\n weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact : true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem : function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Sot në] LT',\n nextDay : '[Nesër në] LT',\n nextWeek : 'dddd [në] LT',\n lastDay : '[Dje në] LT',\n lastWeek : 'dddd [e kaluar në] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'në %s',\n past : '%s më parë',\n s : 'disa sekonda',\n m : 'një minutë',\n mm : '%d minuta',\n h : 'një orë',\n hh : '%d orë',\n d : 'një ditë',\n dd : '%d ditë',\n M : 'një muaj',\n MM : '%d muaj',\n y : 'një vit',\n yy : '%d vite'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar pt = moment.defineLocale('pt', {\n months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'),\n weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY HH:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return (this.day() === 0 || this.day() === 6) ?\n '[Último] dddd [às] LT' : // Saturday + Sunday\n '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'em %s',\n past : 'há %s',\n s : 'segundos',\n m : 'um minuto',\n mm : '%d minutos',\n h : 'uma hora',\n hh : '%d horas',\n d : 'um dia',\n dd : '%d dias',\n M : 'um mês',\n MM : '%d meses',\n y : 'um ano',\n yy : '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar gl = moment.defineLocale('gl', {\n months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY H:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar : {\n sameDay : function () {\n return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\n },\n nextDay : function () {\n return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\n },\n lastDay : function () {\n return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';\n },\n lastWeek : function () {\n return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past : 'hai %s',\n s : 'uns segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'unha hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un ano',\n yy : '%d anos'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar yo = moment.defineLocale('yo', {\n months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),\n monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Ònì ni] LT',\n nextDay : '[Ọ̀la ni] LT',\n nextWeek : 'dddd [Ọsẹ̀ tón\\'bọ] [ni] LT',\n lastDay : '[Àna ni] LT',\n lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ní %s',\n past : '%s kọjá',\n s : 'ìsẹjú aayá die',\n m : 'ìsẹjú kan',\n mm : 'ìsẹjú %d',\n h : 'wákati kan',\n hh : 'wákati %d',\n d : 'ọjọ́ kan',\n dd : 'ọjọ́ %d',\n M : 'osù kan',\n MM : 'osù %d',\n y : 'ọdún kan',\n yy : 'ọdún %d'\n },\n dayOfMonthOrdinalParse : /ọjọ́\\s\\d{1,2}/,\n ordinal : 'ọjọ́ %d',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_');\nvar monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\nvar fy = moment.defineLocale('fy', {\n months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact : true,\n weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),\n weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'oer %s',\n past : '%s lyn',\n s : 'in pear sekonden',\n m : 'ien minút',\n mm : '%d minuten',\n h : 'ien oere',\n hh : '%d oeren',\n d : 'ien dei',\n dd : '%d dagen',\n M : 'ien moanne',\n MM : '%d moannen',\n y : 'ien jier',\n yy : '%d jierren'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn fy;\n\n})));\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Bar = function(context, config) {\n\t\tconfig.type = 'bar';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\n\nvar defaultColor = defaults.global.defaultColor;\n\ndefaults._set('global', {\n\telements: {\n\t\tpoint: {\n\t\t\tradius: 3,\n\t\t\tpointStyle: 'circle',\n\t\t\tbackgroundColor: defaultColor,\n\t\t\tborderColor: defaultColor,\n\t\t\tborderWidth: 1,\n\t\t\t// Hover\n\t\t\thitRadius: 1,\n\t\t\thoverRadius: 4,\n\t\t\thoverBorderWidth: 1\n\t\t}\n\t}\n});\n\nfunction xRange(mouseX) {\n\tvar vm = this._view;\n\treturn vm ? (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hitRadius, 2)) : false;\n}\n\nfunction yRange(mouseY) {\n\tvar vm = this._view;\n\treturn vm ? (Math.pow(mouseY - vm.y, 2) < Math.pow(vm.radius + vm.hitRadius, 2)) : false;\n}\n\nmodule.exports = Element.extend({\n\tinRange: function(mouseX, mouseY) {\n\t\tvar vm = this._view;\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\n\t},\n\n\tinLabelRange: xRange,\n\tinXRange: xRange,\n\tinYRange: yRange,\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y,\n\t\t\tpadding: vm.radius + vm.borderWidth\n\t\t};\n\t},\n\n\tdraw: function(chartArea) {\n\t\tvar vm = this._view;\n\t\tvar model = this._model;\n\t\tvar ctx = this._chart.ctx;\n\t\tvar pointStyle = vm.pointStyle;\n\t\tvar radius = vm.radius;\n\t\tvar x = vm.x;\n\t\tvar y = vm.y;\n\t\tvar color = helpers.color;\n\t\tvar errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.)\n\t\tvar ratio = 0;\n\n\t\tif (vm.skip) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.strokeStyle = vm.borderColor || defaultColor;\n\t\tctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth);\n\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\n\n\t\t// Cliping for Points.\n\t\t// going out from inner charArea?\n\t\tif ((chartArea !== undefined) && ((model.x < chartArea.left) || (chartArea.right * errMargin < model.x) || (model.y < chartArea.top) || (chartArea.bottom * errMargin < model.y))) {\n\t\t\t// Point fade out\n\t\t\tif (model.x < chartArea.left) {\n\t\t\t\tratio = (x - model.x) / (chartArea.left - model.x);\n\t\t\t} else if (chartArea.right * errMargin < model.x) {\n\t\t\t\tratio = (model.x - x) / (model.x - chartArea.right);\n\t\t\t} else if (model.y < chartArea.top) {\n\t\t\t\tratio = (y - model.y) / (chartArea.top - model.y);\n\t\t\t} else if (chartArea.bottom * errMargin < model.y) {\n\t\t\t\tratio = (model.y - y) / (model.y - chartArea.bottom);\n\t\t\t}\n\t\t\tratio = Math.round(ratio * 100) / 100;\n\t\t\tctx.strokeStyle = color(ctx.strokeStyle).alpha(ratio).rgbString();\n\t\t\tctx.fillStyle = color(ctx.fillStyle).alpha(ratio).rgbString();\n\t\t}\n\n\t\thelpers.canvas.drawPoint(ctx, pointStyle, radius, x, y);\n\t}\n});\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_');\nvar monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');\nfunction plural(n) {\n return (n > 1) && (n < 5) && (~~(n / 10) !== 1);\n}\nfunction translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n break;\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n break;\n case 'd': // a day / in a day / a day ago\n return (withoutSuffix || isFuture) ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n break;\n case 'M': // a month / in a month / a month ago\n return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n break;\n case 'y': // a year / in a year / a year ago\n return (withoutSuffix || isFuture) ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n break;\n }\n}\n\nvar cs = moment.defineLocale('cs', {\n months : months,\n monthsShort : monthsShort,\n monthsParse : (function (months, monthsShort) {\n var i, _monthsParse = [];\n for (i = 0; i < 12; i++) {\n // use custom parser to solve problem with July (červenec)\n _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');\n }\n return _monthsParse;\n }(months, monthsShort)),\n shortMonthsParse : (function (monthsShort) {\n var i, _shortMonthsParse = [];\n for (i = 0; i < 12; i++) {\n _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');\n }\n return _shortMonthsParse;\n }(monthsShort)),\n longMonthsParse : (function (months) {\n var i, _longMonthsParse = [];\n for (i = 0; i < 12; i++) {\n _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');\n }\n return _longMonthsParse;\n }(months)),\n weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat : {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd D. MMMM YYYY H:mm',\n l : 'D. M. YYYY'\n },\n calendar : {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'před %s',\n s : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse : /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn cs;\n\n})));\n","var conversions = require(\"./conversions\");\n\nvar convert = function() {\n return new Converter();\n}\n\nfor (var func in conversions) {\n // export Raw versions\n convert[func + \"Raw\"] = (function(func) {\n // accept array or plain args\n return function(arg) {\n if (typeof arg == \"number\")\n arg = Array.prototype.slice.call(arguments);\n return conversions[func](arg);\n }\n })(func);\n\n var pair = /(\\w+)2(\\w+)/.exec(func),\n from = pair[1],\n to = pair[2];\n\n // export rgb2hsl and [\"rgb\"][\"hsl\"]\n convert[from] = convert[from] || {};\n\n convert[from][to] = convert[func] = (function(func) { \n return function(arg) {\n if (typeof arg == \"number\")\n arg = Array.prototype.slice.call(arguments);\n \n var val = conversions[func](arg);\n if (typeof val == \"string\" || val === undefined)\n return val; // keyword\n\n for (var i = 0; i < val.length; i++)\n val[i] = Math.round(val[i]);\n return val;\n }\n })(func);\n}\n\n\n/* Converter does lazy conversion and caching */\nvar Converter = function() {\n this.convs = {};\n};\n\n/* Either get the values for a space or\n set the values for a space, depending on args */\nConverter.prototype.routeSpace = function(space, args) {\n var values = args[0];\n if (values === undefined) {\n // color.rgb()\n return this.getValues(space);\n }\n // color.rgb(10, 10, 10)\n if (typeof values == \"number\") {\n values = Array.prototype.slice.call(args); \n }\n\n return this.setValues(space, values);\n};\n \n/* Set the values for a space, invalidating cache */\nConverter.prototype.setValues = function(space, values) {\n this.space = space;\n this.convs = {};\n this.convs[space] = values;\n return this;\n};\n\n/* Get the values for a space. If there's already\n a conversion for the space, fetch it, otherwise\n compute it */\nConverter.prototype.getValues = function(space) {\n var vals = this.convs[space];\n if (!vals) {\n var fspace = this.space,\n from = this.convs[fspace];\n vals = convert[fspace][space](from);\n\n this.convs[space] = vals;\n }\n return vals;\n};\n\n[\"rgb\", \"hsl\", \"hsv\", \"cmyk\", \"keyword\"].forEach(function(space) {\n Converter.prototype[space] = function(vals) {\n return this.routeSpace(space, arguments);\n }\n});\n\nmodule.exports = convert;","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०'\n};\nvar numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n};\n\nfunction relativeTimeMr(number, withoutSuffix, string, isFuture)\n{\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's': output = 'काही सेकंद'; break;\n case 'm': output = 'एक मिनिट'; break;\n case 'mm': output = '%d मिनिटे'; break;\n case 'h': output = 'एक तास'; break;\n case 'hh': output = '%d तास'; break;\n case 'd': output = 'एक दिवस'; break;\n case 'dd': output = '%d दिवस'; break;\n case 'M': output = 'एक महिना'; break;\n case 'MM': output = '%d महिने'; break;\n case 'y': output = 'एक वर्ष'; break;\n case 'yy': output = '%d वर्षे'; break;\n }\n }\n else {\n switch (string) {\n case 's': output = 'काही सेकंदां'; break;\n case 'm': output = 'एका मिनिटा'; break;\n case 'mm': output = '%d मिनिटां'; break;\n case 'h': output = 'एका तासा'; break;\n case 'hh': output = '%d तासां'; break;\n case 'd': output = 'एका दिवसा'; break;\n case 'dd': output = '%d दिवसां'; break;\n case 'M': output = 'एका महिन्या'; break;\n case 'MM': output = '%d महिन्यां'; break;\n case 'y': output = 'एका वर्षा'; break;\n case 'yy': output = '%d वर्षां'; break;\n }\n }\n return output.replace(/%d/i, number);\n}\n\nvar mr = moment.defineLocale('mr', {\n months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),\n monthsParseExact : true,\n weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat : {\n LT : 'A h:mm वाजता',\n LTS : 'A h:mm:ss वाजता',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm वाजता',\n LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'\n },\n calendar : {\n sameDay : '[आज] LT',\n nextDay : '[उद्या] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात्री') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळी') {\n return hour;\n } else if (meridiem === 'दुपारी') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'सायंकाळी') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात्री';\n } else if (hour < 10) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\nfunction isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n}\n\n\nvar el = moment.defineLocale('el', {\n monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),\n monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),\n months : function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),\n weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM : function (input) {\n return ((input + '').toLowerCase()[0] === 'μ');\n },\n meridiemParse : /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendarEl : {\n sameDay : '[Σήμερα {}] LT',\n nextDay : '[Αύριο {}] LT',\n nextWeek : 'dddd [{}] LT',\n lastDay : '[Χθες {}] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse : 'L'\n },\n calendar : function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));\n },\n relativeTime : {\n future : 'σε %s',\n past : '%s πριν',\n s : 'λίγα δευτερόλεπτα',\n m : 'ένα λεπτό',\n mm : '%d λεπτά',\n h : 'μία ώρα',\n hh : '%d ώρες',\n d : 'μία μέρα',\n dd : '%d μέρες',\n M : 'ένας μήνας',\n MM : '%d μήνες',\n y : 'ένας χρόνος',\n yy : '%d χρόνια'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4st is the first week of the year.\n }\n});\n\nreturn el;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': '༡',\n '2': '༢',\n '3': '༣',\n '4': '༤',\n '5': '༥',\n '6': '༦',\n '7': '༧',\n '8': '༨',\n '9': '༩',\n '0': '༠'\n};\nvar numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0'\n};\n\nvar bo = moment.defineLocale('bo', {\n months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),\n weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm',\n LLLL : 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar : {\n sameDay : '[དི་རིང] LT',\n nextDay : '[སང་ཉིན] LT',\n nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay : '[ཁ་སང] LT',\n lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ལ་',\n past : '%s སྔན་ལ',\n s : 'ལམ་སང',\n m : 'སྐར་མ་གཅིག',\n mm : '%d སྐར་མ',\n h : 'ཆུ་ཚོད་གཅིག',\n hh : '%d ཆུ་ཚོད',\n d : 'ཉིན་གཅིག',\n dd : '%d ཉིན་',\n M : 'ཟླ་བ་གཅིག',\n MM : '%d ཟླ་བ',\n y : 'ལོ་གཅིག',\n yy : '%d ལོ'\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if ((meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar translator = {\n words: { //Different grammatical cases\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n};\n\nvar srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay : '[јуче у] LT',\n lastWeek : function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT'\n ];\n return lastWeekDays[this.day()];\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'за %s',\n past : 'пре %s',\n s : 'неколико секунди',\n m : translator.translate,\n mm : translator.translate,\n h : translator.translate,\n hh : translator.translate,\n d : 'дан',\n dd : translator.translate,\n M : 'месец',\n MM : translator.translate,\n y : 'годину',\n yy : translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn srCyrl;\n\n})));\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Bubble = function(context, config) {\n\t\tconfig.type = 'bubble';\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n\nvar se = moment.defineLocale('se', {\n months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),\n monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),\n weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin : 's_v_m_g_d_b_L'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'MMMM D. [b.] YYYY',\n LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'\n },\n calendar : {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s geažes',\n past : 'maŋit %s',\n s : 'moadde sekunddat',\n m : 'okta minuhta',\n mm : '%d minuhtat',\n h : 'okta diimmu',\n hh : '%d diimmut',\n d : 'okta beaivi',\n dd : '%d beaivvit',\n M : 'okta mánnu',\n MM : '%d mánut',\n y : 'okta jahki',\n yy : '%d jagit'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn se;\n\n})));\n","/* global window: false */\n'use strict';\n\nvar moment = require('moment');\nmoment = typeof moment === 'function' ? moment : window.moment;\n\nvar defaults = require('../core/core.defaults');\nvar helpers = require('../helpers/index');\n\n// Integer constants are from the ES6 spec.\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\nvar INTERVALS = {\n\tmillisecond: {\n\t\tcommon: true,\n\t\tsize: 1,\n\t\tsteps: [1, 2, 5, 10, 20, 50, 100, 250, 500]\n\t},\n\tsecond: {\n\t\tcommon: true,\n\t\tsize: 1000,\n\t\tsteps: [1, 2, 5, 10, 30]\n\t},\n\tminute: {\n\t\tcommon: true,\n\t\tsize: 60000,\n\t\tsteps: [1, 2, 5, 10, 30]\n\t},\n\thour: {\n\t\tcommon: true,\n\t\tsize: 3600000,\n\t\tsteps: [1, 2, 3, 6, 12]\n\t},\n\tday: {\n\t\tcommon: true,\n\t\tsize: 86400000,\n\t\tsteps: [1, 2, 5]\n\t},\n\tweek: {\n\t\tcommon: false,\n\t\tsize: 604800000,\n\t\tsteps: [1, 2, 3, 4]\n\t},\n\tmonth: {\n\t\tcommon: true,\n\t\tsize: 2.628e9,\n\t\tsteps: [1, 2, 3]\n\t},\n\tquarter: {\n\t\tcommon: false,\n\t\tsize: 7.884e9,\n\t\tsteps: [1, 2, 3, 4]\n\t},\n\tyear: {\n\t\tcommon: true,\n\t\tsize: 3.154e10\n\t}\n};\n\nvar UNITS = Object.keys(INTERVALS);\n\nfunction sorter(a, b) {\n\treturn a - b;\n}\n\nfunction arrayUnique(items) {\n\tvar hash = {};\n\tvar out = [];\n\tvar i, ilen, item;\n\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\titem = items[i];\n\t\tif (!hash[item]) {\n\t\t\thash[item] = true;\n\t\t\tout.push(item);\n\t\t}\n\t}\n\n\treturn out;\n}\n\n/**\n * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n * extremity (left + width or top + height). Note that it would be more optimized to directly\n * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n *\n * @param {Number[]} timestamps - timestamps sorted from lowest to highest.\n * @param {String} distribution - If 'linear', timestamps will be spread linearly along the min\n * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\n * If 'series', timestamps will be positioned at the same distance from each other. In this\n * case, only timestamps that break the time linearity are registered, meaning that in the\n * best case, all timestamps are linear, the table contains only min and max.\n */\nfunction buildLookupTable(timestamps, min, max, distribution) {\n\tif (distribution === 'linear' || !timestamps.length) {\n\t\treturn [\n\t\t\t{time: min, pos: 0},\n\t\t\t{time: max, pos: 1}\n\t\t];\n\t}\n\n\tvar table = [];\n\tvar items = [min];\n\tvar i, ilen, prev, curr, next;\n\n\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\tcurr = timestamps[i];\n\t\tif (curr > min && curr < max) {\n\t\t\titems.push(curr);\n\t\t}\n\t}\n\n\titems.push(max);\n\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\tnext = items[i + 1];\n\t\tprev = items[i - 1];\n\t\tcurr = items[i];\n\n\t\t// only add points that breaks the scale linearity\n\t\tif (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\n\t\t\ttable.push({time: curr, pos: i / (ilen - 1)});\n\t\t}\n\t}\n\n\treturn table;\n}\n\n// @see adapted from http://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\nfunction lookup(table, key, value) {\n\tvar lo = 0;\n\tvar hi = table.length - 1;\n\tvar mid, i0, i1;\n\n\twhile (lo >= 0 && lo <= hi) {\n\t\tmid = (lo + hi) >> 1;\n\t\ti0 = table[mid - 1] || null;\n\t\ti1 = table[mid];\n\n\t\tif (!i0) {\n\t\t\t// given value is outside table (before first item)\n\t\t\treturn {lo: null, hi: i1};\n\t\t} else if (i1[key] < value) {\n\t\t\tlo = mid + 1;\n\t\t} else if (i0[key] > value) {\n\t\t\thi = mid - 1;\n\t\t} else {\n\t\t\treturn {lo: i0, hi: i1};\n\t\t}\n\t}\n\n\t// given value is outside table (after last item)\n\treturn {lo: i1, hi: null};\n}\n\n/**\n * Linearly interpolates the given source `value` using the table items `skey` values and\n * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\n * returns the position for a timestamp equal to 42. If value is out of bounds, values at\n * index [0, 1] or [n - 1, n] are used for the interpolation.\n */\nfunction interpolate(table, skey, sval, tkey) {\n\tvar range = lookup(table, skey, sval);\n\n\t// Note: the lookup table ALWAYS contains at least 2 items (min and max)\n\tvar prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\n\tvar next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\n\n\tvar span = next[skey] - prev[skey];\n\tvar ratio = span ? (sval - prev[skey]) / span : 0;\n\tvar offset = (next[tkey] - prev[tkey]) * ratio;\n\n\treturn prev[tkey] + offset;\n}\n\n/**\n * Convert the given value to a moment object using the given time options.\n * @see http://momentjs.com/docs/#/parsing/\n */\nfunction momentify(value, options) {\n\tvar parser = options.parser;\n\tvar format = options.parser || options.format;\n\n\tif (typeof parser === 'function') {\n\t\treturn parser(value);\n\t}\n\n\tif (typeof value === 'string' && typeof format === 'string') {\n\t\treturn moment(value, format);\n\t}\n\n\tif (!(value instanceof moment)) {\n\t\tvalue = moment(value);\n\t}\n\n\tif (value.isValid()) {\n\t\treturn value;\n\t}\n\n\t// Labels are in an incompatible moment format and no `parser` has been provided.\n\t// The user might still use the deprecated `format` option to convert his inputs.\n\tif (typeof format === 'function') {\n\t\treturn format(value);\n\t}\n\n\treturn value;\n}\n\nfunction parse(input, scale) {\n\tif (helpers.isNullOrUndef(input)) {\n\t\treturn null;\n\t}\n\n\tvar options = scale.options.time;\n\tvar value = momentify(scale.getRightValue(input), options);\n\tif (!value.isValid()) {\n\t\treturn null;\n\t}\n\n\tif (options.round) {\n\t\tvalue.startOf(options.round);\n\t}\n\n\treturn value.valueOf();\n}\n\n/**\n * Returns the number of unit to skip to be able to display up to `capacity` number of ticks\n * in `unit` for the given `min` / `max` range and respecting the interval steps constraints.\n */\nfunction determineStepSize(min, max, unit, capacity) {\n\tvar range = max - min;\n\tvar interval = INTERVALS[unit];\n\tvar milliseconds = interval.size;\n\tvar steps = interval.steps;\n\tvar i, ilen, factor;\n\n\tif (!steps) {\n\t\treturn Math.ceil(range / ((capacity || 1) * milliseconds));\n\t}\n\n\tfor (i = 0, ilen = steps.length; i < ilen; ++i) {\n\t\tfactor = steps[i];\n\t\tif (Math.ceil(range / (milliseconds * factor)) <= capacity) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn factor;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n\tvar ilen = UNITS.length;\n\tvar i, interval, factor;\n\n\tfor (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n\t\tinterval = INTERVALS[UNITS[i]];\n\t\tfactor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER;\n\n\t\tif (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n\t\t\treturn UNITS[i];\n\t\t}\n\t}\n\n\treturn UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n */\nfunction determineUnitForFormatting(ticks, minUnit, min, max) {\n\tvar duration = moment.duration(moment(max).diff(moment(min)));\n\tvar ilen = UNITS.length;\n\tvar i, unit;\n\n\tfor (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) {\n\t\tunit = UNITS[i];\n\t\tif (INTERVALS[unit].common && duration.as(unit) >= ticks.length) {\n\t\t\treturn unit;\n\t\t}\n\t}\n\n\treturn UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\nfunction determineMajorUnit(unit) {\n\tfor (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n\t\tif (INTERVALS[UNITS[i]].common) {\n\t\t\treturn UNITS[i];\n\t\t}\n\t}\n}\n\n/**\n * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n * `minor` unit, aligned on the `major` unit and using the given scale time `options`.\n * Important: this method can return ticks outside the min and max range, it's the\n * responsibility of the calling code to clamp values if needed.\n */\nfunction generate(min, max, capacity, options) {\n\tvar timeOpts = options.time;\n\tvar minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\n\tvar major = determineMajorUnit(minor);\n\tvar stepSize = helpers.valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize);\n\tvar weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n\tvar majorTicksEnabled = options.ticks.major.enabled;\n\tvar interval = INTERVALS[minor];\n\tvar first = moment(min);\n\tvar last = moment(max);\n\tvar ticks = [];\n\tvar time;\n\n\tif (!stepSize) {\n\t\tstepSize = determineStepSize(min, max, minor, capacity);\n\t}\n\n\t// For 'week' unit, handle the first day of week option\n\tif (weekday) {\n\t\tfirst = first.isoWeekday(weekday);\n\t\tlast = last.isoWeekday(weekday);\n\t}\n\n\t// Align first/last ticks on unit\n\tfirst = first.startOf(weekday ? 'day' : minor);\n\tlast = last.startOf(weekday ? 'day' : minor);\n\n\t// Make sure that the last tick include max\n\tif (last < max) {\n\t\tlast.add(1, minor);\n\t}\n\n\ttime = moment(first);\n\n\tif (majorTicksEnabled && major && !weekday && !timeOpts.round) {\n\t\t// Align the first tick on the previous `minor` unit aligned on the `major` unit:\n\t\t// we first aligned time on the previous `major` unit then add the number of full\n\t\t// stepSize there is between first and the previous major time.\n\t\ttime.startOf(major);\n\t\ttime.add(~~((first - time) / (interval.size * stepSize)) * stepSize, minor);\n\t}\n\n\tfor (; time < last; time.add(stepSize, minor)) {\n\t\tticks.push(+time);\n\t}\n\n\tticks.push(+time);\n\n\treturn ticks;\n}\n\n/**\n * Returns the right and left offsets from edges in the form of {left, right}.\n * Offsets are added when the `offset` option is true.\n */\nfunction computeOffsets(table, ticks, min, max, options) {\n\tvar left = 0;\n\tvar right = 0;\n\tvar upper, lower;\n\n\tif (options.offset && ticks.length) {\n\t\tif (!options.time.min) {\n\t\t\tupper = ticks.length > 1 ? ticks[1] : max;\n\t\t\tlower = ticks[0];\n\t\t\tleft = (\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\n\t\t\t) / 2;\n\t\t}\n\t\tif (!options.time.max) {\n\t\t\tupper = ticks[ticks.length - 1];\n\t\t\tlower = ticks.length > 1 ? ticks[ticks.length - 2] : min;\n\t\t\tright = (\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\n\t\t\t) / 2;\n\t\t}\n\t}\n\n\treturn {left: left, right: right};\n}\n\nfunction ticksFromTimestamps(values, majorUnit) {\n\tvar ticks = [];\n\tvar i, ilen, value, major;\n\n\tfor (i = 0, ilen = values.length; i < ilen; ++i) {\n\t\tvalue = values[i];\n\t\tmajor = majorUnit ? value === +moment(value).startOf(majorUnit) : false;\n\n\t\tticks.push({\n\t\t\tvalue: value,\n\t\t\tmajor: major\n\t\t});\n\t}\n\n\treturn ticks;\n}\n\nmodule.exports = function(Chart) {\n\n\tvar defaultConfig = {\n\t\tposition: 'bottom',\n\n\t\t/**\n\t\t * Data distribution along the scale:\n\t\t * - 'linear': data are spread according to their time (distances can vary),\n\t\t * - 'series': data are spread at the same distance from each other.\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t\t * @since 2.7.0\n\t\t */\n\t\tdistribution: 'linear',\n\n\t\t/**\n\t\t * Scale boundary strategy (bypassed by min/max time options)\n\t\t * - `data`: make sure data are fully visible, ticks outside are removed\n\t\t * - `ticks`: make sure ticks are fully visible, data outside are truncated\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4556\n\t\t * @since 2.7.0\n\t\t */\n\t\tbounds: 'data',\n\n\t\ttime: {\n\t\t\tparser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\n\t\t\tformat: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/\n\t\t\tunit: false, // false == automatic or override with week, month, year, etc.\n\t\t\tround: false, // none, or override with week, month, year, etc.\n\t\t\tdisplayFormat: false, // DEPRECATED\n\t\t\tisoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/\n\t\t\tminUnit: 'millisecond',\n\n\t\t\t// defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/\n\t\t\tdisplayFormats: {\n\t\t\t\tmillisecond: 'h:mm:ss.SSS a', // 11:20:01.123 AM,\n\t\t\t\tsecond: 'h:mm:ss a', // 11:20:01 AM\n\t\t\t\tminute: 'h:mm a', // 11:20 AM\n\t\t\t\thour: 'hA', // 5PM\n\t\t\t\tday: 'MMM D', // Sep 4\n\t\t\t\tweek: 'll', // Week 46, or maybe \"[W]WW - YYYY\" ?\n\t\t\t\tmonth: 'MMM YYYY', // Sept 2015\n\t\t\t\tquarter: '[Q]Q - YYYY', // Q3\n\t\t\t\tyear: 'YYYY' // 2015\n\t\t\t},\n\t\t},\n\t\tticks: {\n\t\t\tautoSkip: false,\n\n\t\t\t/**\n\t\t\t * Ticks generation input values:\n\t\t\t * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n\t\t\t * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n\t\t\t * - 'labels': generates ticks from user given `data.labels` values ONLY.\n\t\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t\t\t * @since 2.7.0\n\t\t\t */\n\t\t\tsource: 'auto',\n\n\t\t\tmajor: {\n\t\t\t\tenabled: false\n\t\t\t}\n\t\t}\n\t};\n\n\tvar TimeScale = Chart.Scale.extend({\n\t\tinitialize: function() {\n\t\t\tif (!moment) {\n\t\t\t\tthrow 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');\n\t\t\t}\n\n\t\t\tthis.mergeTicksOptions();\n\n\t\t\tChart.Scale.prototype.initialize.call(this);\n\t\t},\n\n\t\tupdate: function() {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\n\t\t\t// DEPRECATIONS: output a message only one time per update\n\t\t\tif (options.time && options.time.format) {\n\t\t\t\tconsole.warn('options.time.format is deprecated and replaced by options.time.parser.');\n\t\t\t}\n\n\t\t\treturn Chart.Scale.prototype.update.apply(me, arguments);\n\t\t},\n\n\t\t/**\n\t\t * Allows data to be referenced via 't' attribute\n\t\t */\n\t\tgetRightValue: function(rawValue) {\n\t\t\tif (rawValue && rawValue.t !== undefined) {\n\t\t\t\trawValue = rawValue.t;\n\t\t\t}\n\t\t\treturn Chart.Scale.prototype.getRightValue.call(this, rawValue);\n\t\t},\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar timeOpts = me.options.time;\n\t\t\tvar min = MAX_INTEGER;\n\t\t\tvar max = MIN_INTEGER;\n\t\t\tvar timestamps = [];\n\t\t\tvar datasets = [];\n\t\t\tvar labels = [];\n\t\t\tvar i, j, ilen, jlen, data, timestamp;\n\n\t\t\t// Convert labels to timestamps\n\t\t\tfor (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) {\n\t\t\t\tlabels.push(parse(chart.data.labels[i], me));\n\t\t\t}\n\n\t\t\t// Convert data to timestamps\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tif (chart.isDatasetVisible(i)) {\n\t\t\t\t\tdata = chart.data.datasets[i].data;\n\n\t\t\t\t\t// Let's consider that all data have the same format.\n\t\t\t\t\tif (helpers.isObject(data[0])) {\n\t\t\t\t\t\tdatasets[i] = [];\n\n\t\t\t\t\t\tfor (j = 0, jlen = data.length; j < jlen; ++j) {\n\t\t\t\t\t\t\ttimestamp = parse(data[j], me);\n\t\t\t\t\t\t\ttimestamps.push(timestamp);\n\t\t\t\t\t\t\tdatasets[i][j] = timestamp;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimestamps.push.apply(timestamps, labels);\n\t\t\t\t\t\tdatasets[i] = labels.slice(0);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tdatasets[i] = [];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (labels.length) {\n\t\t\t\t// Sort labels **after** data have been converted\n\t\t\t\tlabels = arrayUnique(labels).sort(sorter);\n\t\t\t\tmin = Math.min(min, labels[0]);\n\t\t\t\tmax = Math.max(max, labels[labels.length - 1]);\n\t\t\t}\n\n\t\t\tif (timestamps.length) {\n\t\t\t\ttimestamps = arrayUnique(timestamps).sort(sorter);\n\t\t\t\tmin = Math.min(min, timestamps[0]);\n\t\t\t\tmax = Math.max(max, timestamps[timestamps.length - 1]);\n\t\t\t}\n\n\t\t\tmin = parse(timeOpts.min, me) || min;\n\t\t\tmax = parse(timeOpts.max, me) || max;\n\n\t\t\t// In case there is no valid min/max, let's use today limits\n\t\t\tmin = min === MAX_INTEGER ? +moment().startOf('day') : min;\n\t\t\tmax = max === MIN_INTEGER ? +moment().endOf('day') + 1 : max;\n\n\t\t\t// Make sure that max is strictly higher than min (required by the lookup table)\n\t\t\tme.min = Math.min(min, max);\n\t\t\tme.max = Math.max(min + 1, max);\n\n\t\t\t// PRIVATE\n\t\t\tme._horizontal = me.isHorizontal();\n\t\t\tme._table = [];\n\t\t\tme._timestamps = {\n\t\t\t\tdata: timestamps,\n\t\t\t\tdatasets: datasets,\n\t\t\t\tlabels: labels\n\t\t\t};\n\t\t},\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\t\t\tvar options = me.options;\n\t\t\tvar timeOpts = options.time;\n\t\t\tvar timestamps = [];\n\t\t\tvar ticks = [];\n\t\t\tvar i, ilen, timestamp;\n\n\t\t\tswitch (options.ticks.source) {\n\t\t\tcase 'data':\n\t\t\t\ttimestamps = me._timestamps.data;\n\t\t\t\tbreak;\n\t\t\tcase 'labels':\n\t\t\t\ttimestamps = me._timestamps.labels;\n\t\t\t\tbreak;\n\t\t\tcase 'auto':\n\t\t\tdefault:\n\t\t\t\ttimestamps = generate(min, max, me.getLabelCapacity(min), options);\n\t\t\t}\n\n\t\t\tif (options.bounds === 'ticks' && timestamps.length) {\n\t\t\t\tmin = timestamps[0];\n\t\t\t\tmax = timestamps[timestamps.length - 1];\n\t\t\t}\n\n\t\t\t// Enforce limits with user min/max options\n\t\t\tmin = parse(timeOpts.min, me) || min;\n\t\t\tmax = parse(timeOpts.max, me) || max;\n\n\t\t\t// Remove ticks outside the min/max range\n\t\t\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\t\t\ttimestamp = timestamps[i];\n\t\t\t\tif (timestamp >= min && timestamp <= max) {\n\t\t\t\t\tticks.push(timestamp);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.min = min;\n\t\t\tme.max = max;\n\n\t\t\t// PRIVATE\n\t\t\tme._unit = timeOpts.unit || determineUnitForFormatting(ticks, timeOpts.minUnit, me.min, me.max);\n\t\t\tme._majorUnit = determineMajorUnit(me._unit);\n\t\t\tme._table = buildLookupTable(me._timestamps.data, min, max, options.distribution);\n\t\t\tme._offsets = computeOffsets(me._table, ticks, min, max, options);\n\n\t\t\treturn ticksFromTimestamps(ticks, me._majorUnit);\n\t\t},\n\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar data = me.chart.data;\n\t\t\tvar timeOpts = me.options.time;\n\t\t\tvar label = data.labels && index < data.labels.length ? data.labels[index] : '';\n\t\t\tvar value = data.datasets[datasetIndex].data[index];\n\n\t\t\tif (helpers.isObject(value)) {\n\t\t\t\tlabel = me.getRightValue(value);\n\t\t\t}\n\t\t\tif (timeOpts.tooltipFormat) {\n\t\t\t\tlabel = momentify(label, timeOpts).format(timeOpts.tooltipFormat);\n\t\t\t}\n\n\t\t\treturn label;\n\t\t},\n\n\t\t/**\n\t\t * Function to format an individual tick mark\n\t\t * @private\n\t\t */\n\t\ttickFormatFunction: function(tick, index, ticks, formatOverride) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar time = tick.valueOf();\n\t\t\tvar formats = options.time.displayFormats;\n\t\t\tvar minorFormat = formats[me._unit];\n\t\t\tvar majorUnit = me._majorUnit;\n\t\t\tvar majorFormat = formats[majorUnit];\n\t\t\tvar majorTime = tick.clone().startOf(majorUnit).valueOf();\n\t\t\tvar majorTickOpts = options.ticks.major;\n\t\t\tvar major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime;\n\t\t\tvar label = tick.format(formatOverride ? formatOverride : major ? majorFormat : minorFormat);\n\t\t\tvar tickOpts = major ? majorTickOpts : options.ticks.minor;\n\t\t\tvar formatter = helpers.valueOrDefault(tickOpts.callback, tickOpts.userCallback);\n\n\t\t\treturn formatter ? formatter(label, index, ticks) : label;\n\t\t},\n\n\t\tconvertTicksToLabels: function(ticks) {\n\t\t\tvar labels = [];\n\t\t\tvar i, ilen;\n\n\t\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\t\t\tlabels.push(this.tickFormatFunction(moment(ticks[i].value), i, ticks));\n\t\t\t}\n\n\t\t\treturn labels;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetPixelForOffset: function(time) {\n\t\t\tvar me = this;\n\t\t\tvar size = me._horizontal ? me.width : me.height;\n\t\t\tvar start = me._horizontal ? me.left : me.top;\n\t\t\tvar pos = interpolate(me._table, 'time', time, 'pos');\n\n\t\t\treturn start + size * (me._offsets.left + pos) / (me._offsets.left + 1 + me._offsets.right);\n\t\t},\n\n\t\tgetPixelForValue: function(value, index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar time = null;\n\n\t\t\tif (index !== undefined && datasetIndex !== undefined) {\n\t\t\t\ttime = me._timestamps.datasets[datasetIndex][index];\n\t\t\t}\n\n\t\t\tif (time === null) {\n\t\t\t\ttime = parse(value, me);\n\t\t\t}\n\n\t\t\tif (time !== null) {\n\t\t\t\treturn me.getPixelForOffset(time);\n\t\t\t}\n\t\t},\n\n\t\tgetPixelForTick: function(index) {\n\t\t\tvar ticks = this.getTicks();\n\t\t\treturn index >= 0 && index < ticks.length ?\n\t\t\t\tthis.getPixelForOffset(ticks[index].value) :\n\t\t\t\tnull;\n\t\t},\n\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar size = me._horizontal ? me.width : me.height;\n\t\t\tvar start = me._horizontal ? me.left : me.top;\n\t\t\tvar pos = (size ? (pixel - start) / size : 0) * (me._offsets.left + 1 + me._offsets.left) - me._offsets.right;\n\t\t\tvar time = interpolate(me._table, 'pos', pos, 'time');\n\n\t\t\treturn moment(time);\n\t\t},\n\n\t\t/**\n\t\t * Crude approximation of what the label width might be\n\t\t * @private\n\t\t */\n\t\tgetLabelWidth: function(label) {\n\t\t\tvar me = this;\n\t\t\tvar ticksOpts = me.options.ticks;\n\t\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\n\t\t\tvar angle = helpers.toRadians(ticksOpts.maxRotation);\n\t\t\tvar cosRotation = Math.cos(angle);\n\t\t\tvar sinRotation = Math.sin(angle);\n\t\t\tvar tickFontSize = helpers.valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize);\n\n\t\t\treturn (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetLabelCapacity: function(exampleTime) {\n\t\t\tvar me = this;\n\n\t\t\tvar formatOverride = me.options.time.displayFormats.millisecond;\t// Pick the longest format for guestimation\n\n\t\t\tvar exampleLabel = me.tickFormatFunction(moment(exampleTime), 0, [], formatOverride);\n\t\t\tvar tickLabelWidth = me.getLabelWidth(exampleLabel);\n\t\t\tvar innerWidth = me.isHorizontal() ? me.width : me.height;\n\n\t\t\treturn Math.floor(innerWidth / tickLabelWidth);\n\t\t}\n\t});\n\n\tChart.scaleService.registerScaleType('time', TimeScale, defaultConfig);\n};\n","'use strict';\n\nmodule.exports = require('./helpers.core');\nmodule.exports.easing = require('./helpers.easing');\nmodule.exports.canvas = require('./helpers.canvas');\nmodule.exports.options = require('./helpers.options');\n","'use strict';\n\nvar helpers = require('./helpers.core');\n\n/**\n * @namespace Chart.helpers.canvas\n */\nvar exports = module.exports = {\n\t/**\n\t * Clears the entire canvas associated to the given `chart`.\n\t * @param {Chart} chart - The chart for which to clear the canvas.\n\t */\n\tclear: function(chart) {\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\n\t},\n\n\t/**\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\n\t * given size (width, height) and the same `radius` for all corners.\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\n\t * @param {Number} x - The x axis of the coordinate for the rectangle starting point.\n\t * @param {Number} y - The y axis of the coordinate for the rectangle starting point.\n\t * @param {Number} width - The rectangle's width.\n\t * @param {Number} height - The rectangle's height.\n\t * @param {Number} radius - The rounded amount (in pixels) for the four corners.\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\n\t */\n\troundedRect: function(ctx, x, y, width, height, radius) {\n\t\tif (radius) {\n\t\t\tvar rx = Math.min(radius, width / 2);\n\t\t\tvar ry = Math.min(radius, height / 2);\n\n\t\t\tctx.moveTo(x + rx, y);\n\t\t\tctx.lineTo(x + width - rx, y);\n\t\t\tctx.quadraticCurveTo(x + width, y, x + width, y + ry);\n\t\t\tctx.lineTo(x + width, y + height - ry);\n\t\t\tctx.quadraticCurveTo(x + width, y + height, x + width - rx, y + height);\n\t\t\tctx.lineTo(x + rx, y + height);\n\t\t\tctx.quadraticCurveTo(x, y + height, x, y + height - ry);\n\t\t\tctx.lineTo(x, y + ry);\n\t\t\tctx.quadraticCurveTo(x, y, x + rx, y);\n\t\t} else {\n\t\t\tctx.rect(x, y, width, height);\n\t\t}\n\t},\n\n\tdrawPoint: function(ctx, style, radius, x, y) {\n\t\tvar type, edgeLength, xOffset, yOffset, height, size;\n\n\t\tif (style && typeof style === 'object') {\n\t\t\ttype = style.toString();\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n\t\t\t\tctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (isNaN(radius) || radius <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (style) {\n\t\t// Default includes circle\n\t\tdefault:\n\t\t\tctx.beginPath();\n\t\t\tctx.arc(x, y, radius, 0, Math.PI * 2);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t\tbreak;\n\t\tcase 'triangle':\n\t\t\tctx.beginPath();\n\t\t\tedgeLength = 3 * radius / Math.sqrt(3);\n\t\t\theight = edgeLength * Math.sqrt(3) / 2;\n\t\t\tctx.moveTo(x - edgeLength / 2, y + height / 3);\n\t\t\tctx.lineTo(x + edgeLength / 2, y + height / 3);\n\t\t\tctx.lineTo(x, y - 2 * height / 3);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t\tbreak;\n\t\tcase 'rect':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.beginPath();\n\t\t\tctx.fillRect(x - size, y - size, 2 * size, 2 * size);\n\t\t\tctx.strokeRect(x - size, y - size, 2 * size, 2 * size);\n\t\t\tbreak;\n\t\tcase 'rectRounded':\n\t\t\tvar offset = radius / Math.SQRT2;\n\t\t\tvar leftX = x - offset;\n\t\t\tvar topY = y - offset;\n\t\t\tvar sideSize = Math.SQRT2 * radius;\n\t\t\tctx.beginPath();\n\t\t\tthis.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius / 2);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t\tbreak;\n\t\tcase 'rectRot':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x - size, y);\n\t\t\tctx.lineTo(x, y + size);\n\t\t\tctx.lineTo(x + size, y);\n\t\t\tctx.lineTo(x, y - size);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t\tbreak;\n\t\tcase 'cross':\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x, y + radius);\n\t\t\tctx.lineTo(x, y - radius);\n\t\t\tctx.moveTo(x - radius, y);\n\t\t\tctx.lineTo(x + radius, y);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'crossRot':\n\t\t\tctx.beginPath();\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x - xOffset, y + yOffset);\n\t\t\tctx.lineTo(x + xOffset, y - yOffset);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'star':\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x, y + radius);\n\t\t\tctx.lineTo(x, y - radius);\n\t\t\tctx.moveTo(x - radius, y);\n\t\t\tctx.lineTo(x + radius, y);\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x - xOffset, y + yOffset);\n\t\t\tctx.lineTo(x + xOffset, y - yOffset);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'line':\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x - radius, y);\n\t\t\tctx.lineTo(x + radius, y);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'dash':\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x, y);\n\t\t\tctx.lineTo(x + radius, y);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\t}\n\n\t\tctx.stroke();\n\t},\n\n\tclipArea: function(ctx, area) {\n\t\tctx.save();\n\t\tctx.beginPath();\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n\t\tctx.clip();\n\t},\n\n\tunclipArea: function(ctx) {\n\t\tctx.restore();\n\t},\n\n\tlineTo: function(ctx, previous, target, flip) {\n\t\tif (target.steppedLine) {\n\t\t\tif ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) {\n\t\t\t\tctx.lineTo(previous.x, target.y);\n\t\t\t} else {\n\t\t\t\tctx.lineTo(target.x, previous.y);\n\t\t\t}\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!target.tension) {\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tctx.bezierCurveTo(\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\n\t\t\ttarget.x,\n\t\t\ttarget.y);\n\t}\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\n * @namespace Chart.helpers.clear\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.clear = exports.clear;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\n * @namespace Chart.helpers.drawRoundedRectangle\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.drawRoundedRectangle = function(ctx) {\n\tctx.beginPath();\n\texports.roundedRect.apply(exports, arguments);\n\tctx.closePath();\n};\n","'use strict';\n\nmodule.exports = function(Chart) {\n\tChart.Scatter = function(context, config) {\n\t\tconfig.type = 'scatter';\n\t\treturn new Chart(context, config);\n\t};\n};\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Doughnut = function(context, config) {\n\t\tconfig.type = 'doughnut';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' ');\nvar numbersFuture = [\n 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',\n numbersPast[7], numbersPast[8], numbersPast[9]\n ];\nfunction translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n}\nfunction verbalNumber(number, isFuture) {\n return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;\n}\n\nvar fi = moment.defineLocale('fi', {\n months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\n monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\n weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD.MM.YYYY',\n LL : 'Do MMMM[ta] YYYY',\n LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l : 'D.M.YYYY',\n ll : 'Do MMM YYYY',\n lll : 'Do MMM YYYY, [klo] HH.mm',\n llll : 'ddd, Do MMM YYYY, [klo] HH.mm'\n },\n calendar : {\n sameDay : '[tänään] [klo] LT',\n nextDay : '[huomenna] [klo] LT',\n nextWeek : 'dddd [klo] LT',\n lastDay : '[eilen] [klo] LT',\n lastWeek : '[viime] dddd[na] [klo] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s päästä',\n past : '%s sitten',\n s : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn fi;\n\n})));\n","'use strict';\n\n/**\n * @namespace Chart.helpers\n */\nvar helpers = {\n\t/**\n\t * An empty function that can be used, for example, for optional callback.\n\t */\n\tnoop: function() {},\n\n\t/**\n\t * Returns a unique id, sequentially generated from a global variable.\n\t * @returns {Number}\n\t * @function\n\t */\n\tuid: (function() {\n\t\tvar id = 0;\n\t\treturn function() {\n\t\t\treturn id++;\n\t\t};\n\t}()),\n\n\t/**\n\t * Returns true if `value` is neither null nor undefined, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @since 2.7.0\n\t */\n\tisNullOrUndef: function(value) {\n\t\treturn value === null || typeof value === 'undefined';\n\t},\n\n\t/**\n\t * Returns true if `value` is an array, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @function\n\t */\n\tisArray: Array.isArray ? Array.isArray : function(value) {\n\t\treturn Object.prototype.toString.call(value) === '[object Array]';\n\t},\n\n\t/**\n\t * Returns true if `value` is an object (excluding null), else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @since 2.7.0\n\t */\n\tisObject: function(value) {\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\n\t},\n\n\t/**\n\t * Returns `value` if defined, else returns `defaultValue`.\n\t * @param {*} value - The value to return if defined.\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\n\t * @returns {*}\n\t */\n\tvalueOrDefault: function(value, defaultValue) {\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\n\t},\n\n\t/**\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\n\t * @param {Array} value - The array to lookup for value at `index`.\n\t * @param {Number} index - The index in `value` to lookup for value.\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\n\t * @returns {*}\n\t */\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\n\t},\n\n\t/**\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n\t * @param {Function} fn - The function to call.\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @returns {*}\n\t */\n\tcallback: function(fn, args, thisArg) {\n\t\tif (fn && typeof fn.call === 'function') {\n\t\t\treturn fn.apply(thisArg, args);\n\t\t}\n\t},\n\n\t/**\n\t * Note(SB) for performance sake, this method should only be used when loopable type\n\t * is unknown or in none intensive code (not called often and small loopable). Else\n\t * it's preferable to use a regular for() loop and save extra function calls.\n\t * @param {Object|Array} loopable - The object or array to be iterated.\n\t * @param {Function} fn - The function to call for each item.\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @param {Boolean} [reverse] - If true, iterates backward on the loopable.\n\t */\n\teach: function(loopable, fn, thisArg, reverse) {\n\t\tvar i, len, keys;\n\t\tif (helpers.isArray(loopable)) {\n\t\t\tlen = loopable.length;\n\t\t\tif (reverse) {\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (helpers.isObject(loopable)) {\n\t\t\tkeys = Object.keys(loopable);\n\t\t\tlen = keys.length;\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n\t * @see http://stackoverflow.com/a/14853974\n\t * @param {Array} a0 - The array to compare\n\t * @param {Array} a1 - The array to compare\n\t * @returns {Boolean}\n\t */\n\tarrayEquals: function(a0, a1) {\n\t\tvar i, ilen, v0, v1;\n\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\n\t\t\tv0 = a0[i];\n\t\t\tv1 = a1[i];\n\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (v0 !== v1) {\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\n\t * @param {*} source - The value to clone.\n\t * @returns {*}\n\t */\n\tclone: function(source) {\n\t\tif (helpers.isArray(source)) {\n\t\t\treturn source.map(helpers.clone);\n\t\t}\n\n\t\tif (helpers.isObject(source)) {\n\t\t\tvar target = {};\n\t\t\tvar keys = Object.keys(source);\n\t\t\tvar klen = keys.length;\n\t\t\tvar k = 0;\n\n\t\t\tfor (; k < klen; ++k) {\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\n\t\t\t}\n\n\t\t\treturn target;\n\t\t}\n\n\t\treturn source;\n\t},\n\n\t/**\n\t * The default merger when Chart.helpers.merge is called without merger option.\n\t * Note(SB): this method is also used by configMerge and scaleMerge as fallback.\n\t * @private\n\t */\n\t_merger: function(key, target, source, options) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.merge(tval, sval, options);\n\t\t} else {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Merges source[key] in target[key] only if target[key] is undefined.\n\t * @private\n\t */\n\t_mergerIf: function(key, target, source) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.mergeIf(tval, sval);\n\t\t} else if (!target.hasOwnProperty(key)) {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {Object} target - The target object in which all sources are merged into.\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\n\t * @param {Object} [options] - Merging options:\n\t * @param {Function} [options.merger] - The merge method (key, target, source, options)\n\t * @returns {Object} The `target` object.\n\t */\n\tmerge: function(target, source, options) {\n\t\tvar sources = helpers.isArray(source) ? source : [source];\n\t\tvar ilen = sources.length;\n\t\tvar merge, i, keys, klen, k;\n\n\t\tif (!helpers.isObject(target)) {\n\t\t\treturn target;\n\t\t}\n\n\t\toptions = options || {};\n\t\tmerge = options.merger || helpers._merger;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!helpers.isObject(source)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tkeys = Object.keys(source);\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\n\t\t\t\tmerge(keys[k], target, source, options);\n\t\t\t}\n\t\t}\n\n\t\treturn target;\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {Object} target - The target object in which all sources are merged into.\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\n\t * @returns {Object} The `target` object.\n\t */\n\tmergeIf: function(target, source) {\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\n\t},\n\n\t/**\n\t * Applies the contents of two or more objects together into the first object.\n\t * @param {Object} target - The target object in which all objects are merged into.\n\t * @param {Object} arg1 - Object containing additional properties to merge in target.\n\t * @param {Object} argN - Additional objects containing properties to merge in target.\n\t * @returns {Object} The `target` object.\n\t */\n\textend: function(target) {\n\t\tvar setFn = function(value, key) {\n\t\t\ttarget[key] = value;\n\t\t};\n\t\tfor (var i = 1, ilen = arguments.length; i < ilen; ++i) {\n\t\t\thelpers.each(arguments[i], setFn);\n\t\t}\n\t\treturn target;\n\t},\n\n\t/**\n\t * Basic javascript inheritance based on the model created in Backbone.js\n\t */\n\tinherits: function(extensions) {\n\t\tvar me = this;\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\n\t\t\treturn me.apply(this, arguments);\n\t\t};\n\n\t\tvar Surrogate = function() {\n\t\t\tthis.constructor = ChartElement;\n\t\t};\n\n\t\tSurrogate.prototype = me.prototype;\n\t\tChartElement.prototype = new Surrogate();\n\t\tChartElement.extend = helpers.inherits;\n\n\t\tif (extensions) {\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\n\t\t}\n\n\t\tChartElement.__super__ = me.prototype;\n\t\treturn ChartElement;\n\t}\n};\n\nmodule.exports = helpers;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.callback instead.\n * @function Chart.helpers.callCallback\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\nhelpers.callCallback = helpers.callback;\n\n/**\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\n * @function Chart.helpers.indexOf\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.indexOf = function(array, item, fromIndex) {\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\n};\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\n * @function Chart.helpers.getValueOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueOrDefault = helpers.valueOrDefault;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\n * @function Chart.helpers.getValueAtIndexOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n","'use strict';\n\nvar helpers = require('../helpers/index');\n\nmodule.exports = function(Chart) {\n\n\tfunction filterByPosition(array, position) {\n\t\treturn helpers.where(array, function(v) {\n\t\t\treturn v.position === position;\n\t\t});\n\t}\n\n\tfunction sortByWeight(array, reverse) {\n\t\tarray.forEach(function(v, i) {\n\t\t\tv._tmpIndex_ = i;\n\t\t\treturn v;\n\t\t});\n\t\tarray.sort(function(a, b) {\n\t\t\tvar v0 = reverse ? b : a;\n\t\t\tvar v1 = reverse ? a : b;\n\t\t\treturn v0.weight === v1.weight ?\n\t\t\t\tv0._tmpIndex_ - v1._tmpIndex_ :\n\t\t\t\tv0.weight - v1.weight;\n\t\t});\n\t\tarray.forEach(function(v) {\n\t\t\tdelete v._tmpIndex_;\n\t\t});\n\t}\n\n\t/**\n\t * @interface ILayoutItem\n\t * @prop {String} position - The position of the item in the chart layout. Possible values are\n\t * 'left', 'top', 'right', 'bottom', and 'chartArea'\n\t * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n\t * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\n\t * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n\t * @prop {Function} update - Takes two parameters: width and height. Returns size of item\n\t * @prop {Function} getPadding - Returns an object with padding on the edges\n\t * @prop {Number} width - Width of item. Must be valid after update()\n\t * @prop {Number} height - Height of item. Must be valid after update()\n\t * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update\n\t * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update\n\t * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update\n\t * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n\t */\n\n\t// The layout service is very self explanatory. It's responsible for the layout within a chart.\n\t// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n\t// It is this service's responsibility of carrying out that layout.\n\tChart.layoutService = {\n\t\tdefaults: {},\n\n\t\t/**\n\t\t * Register a box to a chart.\n\t\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t\t * @param {Chart} chart - the chart to use\n\t\t * @param {ILayoutItem} item - the item to add to be layed out\n\t\t */\n\t\taddBox: function(chart, item) {\n\t\t\tif (!chart.boxes) {\n\t\t\t\tchart.boxes = [];\n\t\t\t}\n\n\t\t\t// initialize item with default values\n\t\t\titem.fullWidth = item.fullWidth || false;\n\t\t\titem.position = item.position || 'top';\n\t\t\titem.weight = item.weight || 0;\n\n\t\t\tchart.boxes.push(item);\n\t\t},\n\n\t\t/**\n\t\t * Remove a layoutItem from a chart\n\t\t * @param {Chart} chart - the chart to remove the box from\n\t\t * @param {Object} layoutItem - the item to remove from the layout\n\t\t */\n\t\tremoveBox: function(chart, layoutItem) {\n\t\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n\t\t\tif (index !== -1) {\n\t\t\t\tchart.boxes.splice(index, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Sets (or updates) options on the given `item`.\n\t\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t\t * @param {Object} item - the item to configure with the given options\n\t\t * @param {Object} options - the new item options.\n\t\t */\n\t\tconfigure: function(chart, item, options) {\n\t\t\tvar props = ['fullWidth', 'position', 'weight'];\n\t\t\tvar ilen = props.length;\n\t\t\tvar i = 0;\n\t\t\tvar prop;\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\tprop = props[i];\n\t\t\t\tif (options.hasOwnProperty(prop)) {\n\t\t\t\t\titem[prop] = options[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t\t * then running a fitting algorithm\n\t\t * @param {Chart} chart - the chart\n\t\t * @param {Number} width - the width to fit into\n\t\t * @param {Number} height - the height to fit into\n\t\t */\n\t\tupdate: function(chart, width, height) {\n\t\t\tif (!chart) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar layoutOptions = chart.options.layout || {};\n\t\t\tvar padding = helpers.options.toPadding(layoutOptions.padding);\n\t\t\tvar leftPadding = padding.left;\n\t\t\tvar rightPadding = padding.right;\n\t\t\tvar topPadding = padding.top;\n\t\t\tvar bottomPadding = padding.bottom;\n\n\t\t\tvar leftBoxes = filterByPosition(chart.boxes, 'left');\n\t\t\tvar rightBoxes = filterByPosition(chart.boxes, 'right');\n\t\t\tvar topBoxes = filterByPosition(chart.boxes, 'top');\n\t\t\tvar bottomBoxes = filterByPosition(chart.boxes, 'bottom');\n\t\t\tvar chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea');\n\n\t\t\t// Sort boxes by weight. A higher weight is further away from the chart area\n\t\t\tsortByWeight(leftBoxes, true);\n\t\t\tsortByWeight(rightBoxes, false);\n\t\t\tsortByWeight(topBoxes, true);\n\t\t\tsortByWeight(bottomBoxes, false);\n\n\t\t\t// Essentially we now have any number of boxes on each of the 4 sides.\n\t\t\t// Our canvas looks like the following.\n\t\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n\t\t\t// B1 is the bottom axis\n\t\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n\t\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n\t\t\t// an error will be thrown.\n\t\t\t//\n\t\t\t// |----------------------------------------------------|\n\t\t\t// | T1 (Full Width) |\n\t\t\t// |----------------------------------------------------|\n\t\t\t// | | | T2 | |\n\t\t\t// | |----|-------------------------------------|----|\n\t\t\t// | | | C1 | | C2 | |\n\t\t\t// | | |----| |----| |\n\t\t\t// | | | | |\n\t\t\t// | L1 | L2 | ChartArea (C0) | R1 |\n\t\t\t// | | | | |\n\t\t\t// | | |----| |----| |\n\t\t\t// | | | C3 | | C4 | |\n\t\t\t// | |----|-------------------------------------|----|\n\t\t\t// | | | B1 | |\n\t\t\t// |----------------------------------------------------|\n\t\t\t// | B2 (Full Width) |\n\t\t\t// |----------------------------------------------------|\n\t\t\t//\n\t\t\t// What we do to find the best sizing, we do the following\n\t\t\t// 1. Determine the minimum size of the chart area.\n\t\t\t// 2. Split the remaining width equally between each vertical axis\n\t\t\t// 3. Split the remaining height equally between each horizontal axis\n\t\t\t// 4. Give each layout the maximum size it can be. The layout will return it's minimum size\n\t\t\t// 5. Adjust the sizes of each axis based on it's minimum reported size.\n\t\t\t// 6. Refit each axis\n\t\t\t// 7. Position each axis in the final location\n\t\t\t// 8. Tell the chart the final location of the chart area\n\t\t\t// 9. Tell any axes that overlay the chart area the positions of the chart area\n\n\t\t\t// Step 1\n\t\t\tvar chartWidth = width - leftPadding - rightPadding;\n\t\t\tvar chartHeight = height - topPadding - bottomPadding;\n\t\t\tvar chartAreaWidth = chartWidth / 2; // min 50%\n\t\t\tvar chartAreaHeight = chartHeight / 2; // min 50%\n\n\t\t\t// Step 2\n\t\t\tvar verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length);\n\n\t\t\t// Step 3\n\t\t\tvar horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length);\n\n\t\t\t// Step 4\n\t\t\tvar maxChartAreaWidth = chartWidth;\n\t\t\tvar maxChartAreaHeight = chartHeight;\n\t\t\tvar minBoxSizes = [];\n\n\t\t\tfunction getMinimumBoxSize(box) {\n\t\t\t\tvar minSize;\n\t\t\t\tvar isHorizontal = box.isHorizontal();\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tminSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight);\n\t\t\t\t\tmaxChartAreaHeight -= minSize.height;\n\t\t\t\t} else {\n\t\t\t\t\tminSize = box.update(verticalBoxWidth, chartAreaHeight);\n\t\t\t\t\tmaxChartAreaWidth -= minSize.width;\n\t\t\t\t}\n\n\t\t\t\tminBoxSizes.push({\n\t\t\t\t\thorizontal: isHorizontal,\n\t\t\t\t\tminSize: minSize,\n\t\t\t\t\tbox: box,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thelpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize);\n\n\t\t\t// If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478)\n\t\t\tvar maxHorizontalLeftPadding = 0;\n\t\t\tvar maxHorizontalRightPadding = 0;\n\t\t\tvar maxVerticalTopPadding = 0;\n\t\t\tvar maxVerticalBottomPadding = 0;\n\n\t\t\thelpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) {\n\t\t\t\tif (horizontalBox.getPadding) {\n\t\t\t\t\tvar boxPadding = horizontalBox.getPadding();\n\t\t\t\t\tmaxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left);\n\t\t\t\t\tmaxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\thelpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) {\n\t\t\t\tif (verticalBox.getPadding) {\n\t\t\t\t\tvar boxPadding = verticalBox.getPadding();\n\t\t\t\t\tmaxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top);\n\t\t\t\t\tmaxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could\n\t\t\t// be if the axes are drawn at their minimum sizes.\n\t\t\t// Steps 5 & 6\n\t\t\tvar totalLeftBoxesWidth = leftPadding;\n\t\t\tvar totalRightBoxesWidth = rightPadding;\n\t\t\tvar totalTopBoxesHeight = topPadding;\n\t\t\tvar totalBottomBoxesHeight = bottomPadding;\n\n\t\t\t// Function to fit a box\n\t\t\tfunction fitBox(box) {\n\t\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) {\n\t\t\t\t\treturn minBox.box === box;\n\t\t\t\t});\n\n\t\t\t\tif (minBoxSize) {\n\t\t\t\t\tif (box.isHorizontal()) {\n\t\t\t\t\t\tvar scaleMargin = {\n\t\t\t\t\t\t\tleft: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding),\n\t\t\t\t\t\t\tright: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding),\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\tbottom: 0\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends\n\t\t\t\t\t\t// on the margin. Sometimes they need to increase in size slightly\n\t\t\t\t\t\tbox.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Update, and calculate the left and right margins for the horizontal boxes\n\t\t\thelpers.each(leftBoxes.concat(rightBoxes), fitBox);\n\n\t\t\thelpers.each(leftBoxes, function(box) {\n\t\t\t\ttotalLeftBoxesWidth += box.width;\n\t\t\t});\n\n\t\t\thelpers.each(rightBoxes, function(box) {\n\t\t\t\ttotalRightBoxesWidth += box.width;\n\t\t\t});\n\n\t\t\t// Set the Left and Right margins for the horizontal boxes\n\t\t\thelpers.each(topBoxes.concat(bottomBoxes), fitBox);\n\n\t\t\t// Figure out how much margin is on the top and bottom of the vertical boxes\n\t\t\thelpers.each(topBoxes, function(box) {\n\t\t\t\ttotalTopBoxesHeight += box.height;\n\t\t\t});\n\n\t\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\t\ttotalBottomBoxesHeight += box.height;\n\t\t\t});\n\n\t\t\tfunction finalFitVerticalBox(box) {\n\t\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) {\n\t\t\t\t\treturn minSize.box === box;\n\t\t\t\t});\n\n\t\t\t\tvar scaleMargin = {\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tright: 0,\n\t\t\t\t\ttop: totalTopBoxesHeight,\n\t\t\t\t\tbottom: totalBottomBoxesHeight\n\t\t\t\t};\n\n\t\t\t\tif (minBoxSize) {\n\t\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Let the left layout know the final margin\n\t\t\thelpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox);\n\n\t\t\t// Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance)\n\t\t\ttotalLeftBoxesWidth = leftPadding;\n\t\t\ttotalRightBoxesWidth = rightPadding;\n\t\t\ttotalTopBoxesHeight = topPadding;\n\t\t\ttotalBottomBoxesHeight = bottomPadding;\n\n\t\t\thelpers.each(leftBoxes, function(box) {\n\t\t\t\ttotalLeftBoxesWidth += box.width;\n\t\t\t});\n\n\t\t\thelpers.each(rightBoxes, function(box) {\n\t\t\t\ttotalRightBoxesWidth += box.width;\n\t\t\t});\n\n\t\t\thelpers.each(topBoxes, function(box) {\n\t\t\t\ttotalTopBoxesHeight += box.height;\n\t\t\t});\n\t\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\t\ttotalBottomBoxesHeight += box.height;\n\t\t\t});\n\n\t\t\t// We may be adding some padding to account for rotated x axis labels\n\t\t\tvar leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0);\n\t\t\ttotalLeftBoxesWidth += leftPaddingAddition;\n\t\t\ttotalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0);\n\n\t\t\tvar topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0);\n\t\t\ttotalTopBoxesHeight += topPaddingAddition;\n\t\t\ttotalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0);\n\n\t\t\t// Figure out if our chart area changed. This would occur if the dataset layout label rotation\n\t\t\t// changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do\n\t\t\t// without calling `fit` again\n\t\t\tvar newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight;\n\t\t\tvar newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth;\n\n\t\t\tif (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) {\n\t\t\t\thelpers.each(leftBoxes, function(box) {\n\t\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t\t});\n\n\t\t\t\thelpers.each(rightBoxes, function(box) {\n\t\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t\t});\n\n\t\t\t\thelpers.each(topBoxes, function(box) {\n\t\t\t\t\tif (!box.fullWidth) {\n\t\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\t\t\tif (!box.fullWidth) {\n\t\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tmaxChartAreaHeight = newMaxChartAreaHeight;\n\t\t\t\tmaxChartAreaWidth = newMaxChartAreaWidth;\n\t\t\t}\n\n\t\t\t// Step 7 - Position the boxes\n\t\t\tvar left = leftPadding + leftPaddingAddition;\n\t\t\tvar top = topPadding + topPaddingAddition;\n\n\t\t\tfunction placeBox(box) {\n\t\t\t\tif (box.isHorizontal()) {\n\t\t\t\t\tbox.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth;\n\t\t\t\t\tbox.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth;\n\t\t\t\t\tbox.top = top;\n\t\t\t\t\tbox.bottom = top + box.height;\n\n\t\t\t\t\t// Move to next point\n\t\t\t\t\ttop = box.bottom;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbox.left = left;\n\t\t\t\t\tbox.right = left + box.width;\n\t\t\t\t\tbox.top = totalTopBoxesHeight;\n\t\t\t\t\tbox.bottom = totalTopBoxesHeight + maxChartAreaHeight;\n\n\t\t\t\t\t// Move to next point\n\t\t\t\t\tleft = box.right;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thelpers.each(leftBoxes.concat(topBoxes), placeBox);\n\n\t\t\t// Account for chart width and height\n\t\t\tleft += maxChartAreaWidth;\n\t\t\ttop += maxChartAreaHeight;\n\n\t\t\thelpers.each(rightBoxes, placeBox);\n\t\t\thelpers.each(bottomBoxes, placeBox);\n\n\t\t\t// Step 8\n\t\t\tchart.chartArea = {\n\t\t\t\tleft: totalLeftBoxesWidth,\n\t\t\t\ttop: totalTopBoxesHeight,\n\t\t\t\tright: totalLeftBoxesWidth + maxChartAreaWidth,\n\t\t\t\tbottom: totalTopBoxesHeight + maxChartAreaHeight\n\t\t\t};\n\n\t\t\t// Step 9\n\t\t\thelpers.each(chartAreaBoxes, function(box) {\n\t\t\t\tbox.left = chart.chartArea.left;\n\t\t\t\tbox.top = chart.chartArea.top;\n\t\t\t\tbox.right = chart.chartArea.right;\n\t\t\t\tbox.bottom = chart.chartArea.bottom;\n\n\t\t\t\tbox.update(maxChartAreaWidth, maxChartAreaHeight);\n\t\t\t});\n\t\t}\n\t};\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\n\nvar globalDefaults = defaults.global;\n\ndefaults._set('global', {\n\telements: {\n\t\tline: {\n\t\t\ttension: 0.4,\n\t\t\tbackgroundColor: globalDefaults.defaultColor,\n\t\t\tborderWidth: 3,\n\t\t\tborderColor: globalDefaults.defaultColor,\n\t\t\tborderCapStyle: 'butt',\n\t\t\tborderDash: [],\n\t\t\tborderDashOffset: 0.0,\n\t\t\tborderJoinStyle: 'miter',\n\t\t\tcapBezierPoints: true,\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\n\t\t}\n\t}\n});\n\nmodule.exports = Element.extend({\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar vm = me._view;\n\t\tvar ctx = me._chart.ctx;\n\t\tvar spanGaps = vm.spanGaps;\n\t\tvar points = me._children.slice(); // clone array\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\n\t\tvar lastDrawnIndex = -1;\n\t\tvar index, current, previous, currentVM;\n\n\t\t// If we are looping, adding the first point again\n\t\tif (me._loop && points.length) {\n\t\t\tpoints.push(points[0]);\n\t\t}\n\n\t\tctx.save();\n\n\t\t// Stroke Line Options\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\n\n\t\t// IE 9 and 10 do not support line dash\n\t\tif (ctx.setLineDash) {\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\n\t\t}\n\n\t\tctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset;\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n\t\tctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth;\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\n\n\t\t// Stroke Line\n\t\tctx.beginPath();\n\t\tlastDrawnIndex = -1;\n\n\t\tfor (index = 0; index < points.length; ++index) {\n\t\t\tcurrent = points[index];\n\t\t\tprevious = helpers.previousItem(points, index);\n\t\t\tcurrentVM = current._view;\n\n\t\t\t// First point moves to it's starting position no matter what\n\t\t\tif (index === 0) {\n\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tprevious = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex];\n\n\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\n\t\t\t\t\t\t// There was a gap and this is the first point after the gap\n\t\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Line to next point\n\t\t\t\t\t\thelpers.canvas.lineTo(ctx, previous._view, current._view);\n\t\t\t\t\t}\n\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tctx.stroke();\n\t\tctx.restore();\n\t}\n});\n","import { AuthAxios } from \"../../global-config/HttpConfig\";\r\nimport { ApiURIs } from \"../../global-config/ApiList\";\r\nimport { IDoctorAppointment } from \"../models/DoctorAppointment\";\r\nimport { Subject } from \"rxjs\";\r\n\r\nconst refreshAptScheduleSubject = new Subject();\r\n\r\nexport default {\r\n refreshAptSchedule: (refresh: boolean) => {\r\n //console.log(\"refreshAptSchedule\", refresh);\r\n\r\n refreshAptScheduleSubject.next(refresh);\r\n },\r\n getAptScheduleRefresh: () => {\r\n return refreshAptScheduleSubject.asObservable();\r\n },\r\n\r\n insert(appoit: IDoctorAppointment) {\r\n return AuthAxios.post(ApiURIs.DrAppointmentInsert, JSON.stringify(appoit));\r\n },\r\n insertDr(appoit: IDoctorAppointment) {\r\n return AuthAxios.post(ApiURIs.DrAppointmentInsertAdmin, JSON.stringify(appoit));\r\n },\r\n varify(appoit: IDoctorAppointment) {\r\n return AuthAxios.post(ApiURIs.DrAppointmentVerification, JSON.stringify(appoit));\r\n },\r\n reSendCode(appointmentId: number) {\r\n return AuthAxios.get(ApiURIs.DrAppointmentReSendCode + \"/\" + appointmentId);\r\n },\r\n // approvedUnApproved(appId: number, isApp: boolean) {\r\n // return AuthAxios.post(ApiURIs.DrAppointmentAppUnApp, {\r\n // appointmentId: appId,\r\n // isActive: isApp\r\n // });\r\n // },\r\n approvedUnApproved(appointment: IDoctorAppointment) {\r\n return AuthAxios.post(ApiURIs.DrAppointmentAppUnApp, JSON.stringify(appointment));\r\n },\r\n GetAppoitmentByCurrentUser() {\r\n return AuthAxios.get(ApiURIs.DrAppointmentGetListByUser);\r\n },\r\n GetAppoitmentByDrId() {\r\n return AuthAxios.get(ApiURIs.DrAppointmentGetListByDrId);\r\n },\r\n GetAppoitmentByDate1() {\r\n return AuthAxios.get(ApiURIs.DrAppointmentGetListByAppointmentDate);\r\n },\r\n GetAppoitmentByDate(fromDate: Date, toDate: Date) {\r\n return AuthAxios.get(\r\n `${ApiURIs.DrAppointmentGetByAppointmentDate}?fromDate=${fromDate.toISOString()}&toDate=${toDate.toISOString()}`\r\n );\r\n },\r\n GetAppoitmentByCurrentDoctor() {\r\n return AuthAxios.get(ApiURIs.DrAppointmentGetListByDoctor);\r\n },\r\n delete(id: number) {\r\n return AuthAxios.delete(`${ApiURIs.DrAwardDelete}/${id}`);\r\n },\r\n cancel(id: number) {\r\n return AuthAxios.delete(`${ApiURIs.DrAppointmentCancel}/${id}`);\r\n },\r\n\r\n daysOfMonth(month: number) {\r\n return AuthAxios.get(`${ApiURIs.DrAppointmentDaysOfMonth}?month=${month}`);\r\n },\r\n getChartDate(month: number) {\r\n return AuthAxios.get(`${ApiURIs.DrAppointmentChartData}?month=${month}`);\r\n },\r\n\r\n getByAppointmentDate(appointmentDate: Date) {\r\n return AuthAxios.get(`${ApiURIs.DrAppointmentGetByAppointmentDate}?appointmentDate=${appointmentDate.toISOString()}`);\r\n },\r\n\r\n getChamberCountByAppointmentDate(appointmentDate: Date) {\r\n return AuthAxios.get(`${ApiURIs.DrAppointmentGetChamberCountByAppointmentDate}?appointmentDate=${appointmentDate.toISOString()}`);\r\n },\r\n getChamberWeeklyCountByAppointmentDate(appointmentDate: Date) {\r\n return AuthAxios.get(\r\n `${ApiURIs.DrAppointmentGetChamberWeeklyCountByAppointmentDate}?appointmentDate=${appointmentDate.toISOString()}`\r\n );\r\n },\r\n getAppointmentSearch(phone: string, patientId: string, patientName: string, dob: Date) {\r\n return AuthAxios.get(\r\n `${ApiURIs.DrAppointmentSearch}?phone=${phone}&patientId=${patientId}&patientName=${patientName}&dob=${dob.toISOString()}`\r\n );\r\n },\r\n getAppointmentById(id: number) {\r\n return AuthAxios.get(`${ApiURIs.DrAppointmentById}?id=${id}`);\r\n }\r\n};\r\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': '੧',\n '2': '੨',\n '3': '੩',\n '4': '੪',\n '5': '੫',\n '6': '੬',\n '7': '੭',\n '8': '੮',\n '9': '੯',\n '0': '੦'\n};\nvar numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0'\n};\n\nvar paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi.\n months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),\n weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm ਵਜੇ',\n LTS : 'A h:mm:ss ਵਜੇ',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'\n },\n calendar : {\n sameDay : '[ਅਜ] LT',\n nextDay : '[ਕਲ] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[ਕਲ] LT',\n lastWeek : '[ਪਿਛਲੇ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ਵਿੱਚ',\n past : '%s ਪਿਛਲੇ',\n s : 'ਕੁਝ ਸਕਿੰਟ',\n m : 'ਇਕ ਮਿੰਟ',\n mm : '%d ਮਿੰਟ',\n h : 'ਇੱਕ ਘੰਟਾ',\n hh : '%d ਘੰਟੇ',\n d : 'ਇੱਕ ਦਿਨ',\n dd : '%d ਦਿਨ',\n M : 'ਇੱਕ ਮਹੀਨਾ',\n MM : '%d ਮਹੀਨੇ',\n y : 'ਇੱਕ ਸਾਲ',\n yy : '%d ਸਾਲ'\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar eu = moment.defineLocale('eu', {\n months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),\n monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),\n monthsParseExact : true,\n weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),\n weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'YYYY[ko] MMMM[ren] D[a]',\n LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l : 'YYYY-M-D',\n ll : 'YYYY[ko] MMM D[a]',\n lll : 'YYYY[ko] MMM D[a] HH:mm',\n llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'\n },\n calendar : {\n sameDay : '[gaur] LT[etan]',\n nextDay : '[bihar] LT[etan]',\n nextWeek : 'dddd LT[etan]',\n lastDay : '[atzo] LT[etan]',\n lastWeek : '[aurreko] dddd LT[etan]',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s barru',\n past : 'duela %s',\n s : 'segundo batzuk',\n m : 'minutu bat',\n mm : '%d minutu',\n h : 'ordu bat',\n hh : '%d ordu',\n d : 'egun bat',\n dd : '%d egun',\n M : 'hilabete bat',\n MM : '%d hilabete',\n y : 'urte bat',\n yy : '%d urte'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші'\n};\n\nvar kk = moment.defineLocale('kk', {\n months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),\n monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),\n weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Бүгін сағат] LT',\n nextDay : '[Ертең сағат] LT',\n nextWeek : 'dddd [сағат] LT',\n lastDay : '[Кеше сағат] LT',\n lastWeek : '[Өткен аптаның] dddd [сағат] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ішінде',\n past : '%s бұрын',\n s : 'бірнеше секунд',\n m : 'бір минут',\n mm : '%d минут',\n h : 'бір сағат',\n hh : '%d сағат',\n d : 'бір күн',\n dd : '%d күн',\n M : 'бір ай',\n MM : '%d ай',\n y : 'бір жыл',\n yy : '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal : function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n// After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n// This is currently too difficult (maybe even impossible) to add.\nvar tzl = moment.defineLocale('tzl', {\n months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM [dallas] YYYY',\n LLL : 'D. MMMM [dallas] YYYY HH.mm',\n LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM : function (input) {\n return 'd\\'o' === input.toLowerCase();\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'd\\'o' : 'D\\'O';\n } else {\n return isLower ? 'd\\'a' : 'D\\'A';\n }\n },\n calendar : {\n sameDay : '[oxhi à] LT',\n nextDay : '[demà à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[ieiri à] LT',\n lastWeek : '[sür el] dddd [lasteu à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'osprei %s',\n past : 'ja%s',\n s : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 's': ['viensas secunds', '\\'iensas secunds'],\n 'm': ['\\'n míut', '\\'iens míut'],\n 'mm': [number + ' míuts', '' + number + ' míuts'],\n 'h': ['\\'n þora', '\\'iensa þora'],\n 'hh': [number + ' þoras', '' + number + ' þoras'],\n 'd': ['\\'n ziua', '\\'iensa ziua'],\n 'dd': [number + ' ziuas', '' + number + ' ziuas'],\n 'M': ['\\'n mes', '\\'iens mes'],\n 'MM': [number + ' mesen', '' + number + ' mesen'],\n 'y': ['\\'n ar', '\\'iens ar'],\n 'yy': [number + ' ars', '' + number + ' ars']\n };\n return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);\n}\n\nreturn tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n// based on: https://www.bk.admin.ch/dokumentation/sprachen/04915/05016/index.html?lang=de#\n\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [number + ' Tage', number + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [number + ' Monate', number + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n}\n\nvar deCh = moment.defineLocale('de-ch', {\n months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort : 'Jan._Febr._März_April_Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH.mm',\n LLLL : 'dddd, D. MMMM YYYY HH.mm'\n },\n calendar : {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime : {\n future : 'in %s',\n past : 'vor %s',\n s : 'ein paar Sekunden',\n m : processRelativeTime,\n mm : '%d Minuten',\n h : processRelativeTime,\n hh : '%d Stunden',\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn deCh;\n\n})));\n","/**\n * @namespace Chart\n */\nvar Chart = require('./core/core')();\n\nChart.helpers = require('./helpers/index');\n\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\nrequire('./core/core.helpers')(Chart);\n\nChart.defaults = require('./core/core.defaults');\nChart.Element = require('./core/core.element');\nChart.elements = require('./elements/index');\nChart.Interaction = require('./core/core.interaction');\nChart.platform = require('./platforms/platform');\n\nrequire('./core/core.plugin')(Chart);\nrequire('./core/core.animation')(Chart);\nrequire('./core/core.controller')(Chart);\nrequire('./core/core.datasetController')(Chart);\nrequire('./core/core.layoutService')(Chart);\nrequire('./core/core.scaleService')(Chart);\nrequire('./core/core.scale')(Chart);\nrequire('./core/core.tooltip')(Chart);\n\nrequire('./scales/scale.linearbase')(Chart);\nrequire('./scales/scale.category')(Chart);\nrequire('./scales/scale.linear')(Chart);\nrequire('./scales/scale.logarithmic')(Chart);\nrequire('./scales/scale.radialLinear')(Chart);\nrequire('./scales/scale.time')(Chart);\n\n// Controllers must be loaded after elements\n// See Chart.core.datasetController.dataElementType\nrequire('./controllers/controller.bar')(Chart);\nrequire('./controllers/controller.bubble')(Chart);\nrequire('./controllers/controller.doughnut')(Chart);\nrequire('./controllers/controller.line')(Chart);\nrequire('./controllers/controller.polarArea')(Chart);\nrequire('./controllers/controller.radar')(Chart);\nrequire('./controllers/controller.scatter')(Chart);\n\nrequire('./charts/Chart.Bar')(Chart);\nrequire('./charts/Chart.Bubble')(Chart);\nrequire('./charts/Chart.Doughnut')(Chart);\nrequire('./charts/Chart.Line')(Chart);\nrequire('./charts/Chart.PolarArea')(Chart);\nrequire('./charts/Chart.Radar')(Chart);\nrequire('./charts/Chart.Scatter')(Chart);\n\n// Loading built-it plugins\nvar plugins = [];\n\nplugins.push(\n\trequire('./plugins/plugin.filler')(Chart),\n\trequire('./plugins/plugin.legend')(Chart),\n\trequire('./plugins/plugin.title')(Chart)\n);\n\nChart.plugins.register(plugins);\n\nChart.platform.initialize();\n\nmodule.exports = Chart;\nif (typeof window !== 'undefined') {\n\twindow.Chart = Chart;\n}\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas instead.\n * @namespace Chart.canvasHelpers\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\nChart.canvasHelpers = Chart.helpers.canvas;\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('doughnut', {\n\tanimation: {\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\n\t\tanimateRotate: true,\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\n\t\tanimateScale: false\n\t},\n\thover: {\n\t\tmode: 'single'\n\t},\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('
    ');\n\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\n\t\tif (datasets.length) {\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\ttext.push('
  • ');\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t}\n\t\t\t\ttext.push('
  • ');\n\t\t\t}\n\t\t}\n\n\t\ttext.push('
');\n\t\treturn text.join('');\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\tvar custom = arc && arc.custom || {};\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t// toggle visibility of index if exists\n\t\t\t\tif (meta.data[index]) {\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// The percentage of the chart that we cut out of the middle.\n\tcutoutPercentage: 50,\n\n\t// The rotation of the chart, where the first data arc begins.\n\trotation: Math.PI * -0.5,\n\n\t// The total circumference of the chart.\n\tcircumference: Math.PI * 2.0,\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\n\t\t\t\tif (helpers.isArray(dataLabel)) {\n\t\t\t\t\t// show value on first line of multiline label\n\t\t\t\t\t// need to clone because we are changing the value\n\t\t\t\t\tdataLabel = dataLabel.slice();\n\t\t\t\t\tdataLabel[0] += value;\n\t\t\t\t} else {\n\t\t\t\t\tdataLabel += value;\n\t\t\t\t}\n\n\t\t\t\treturn dataLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\ndefaults._set('pie', helpers.clone(defaults.doughnut));\ndefaults._set('pie', {\n\tcutoutPercentage: 0\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Arc,\n\n\t\tlinkScales: helpers.noop,\n\n\t\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n\t\tgetRingIndex: function(datasetIndex) {\n\t\t\tvar ringIndex = 0;\n\n\t\t\tfor (var j = 0; j < datasetIndex; ++j) {\n\t\t\t\tif (this.chart.isDatasetVisible(j)) {\n\t\t\t\t\t++ringIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ringIndex;\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar arcOpts = opts.elements.arc;\n\t\t\tvar availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth;\n\t\t\tvar availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth;\n\t\t\tvar minSize = Math.min(availableWidth, availableHeight);\n\t\t\tvar offset = {x: 0, y: 0};\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar cutoutPercentage = opts.cutoutPercentage;\n\t\t\tvar circumference = opts.circumference;\n\n\t\t\t// If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc\n\t\t\tif (circumference < Math.PI * 2.0) {\n\t\t\t\tvar startAngle = opts.rotation % (Math.PI * 2.0);\n\t\t\t\tstartAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0);\n\t\t\t\tvar endAngle = startAngle + circumference;\n\t\t\t\tvar start = {x: Math.cos(startAngle), y: Math.sin(startAngle)};\n\t\t\t\tvar end = {x: Math.cos(endAngle), y: Math.sin(endAngle)};\n\t\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle);\n\t\t\t\tvar contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle);\n\t\t\t\tvar contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle);\n\t\t\t\tvar contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle);\n\t\t\t\tvar cutout = cutoutPercentage / 100.0;\n\t\t\t\tvar min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))};\n\t\t\t\tvar max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))};\n\t\t\t\tvar size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5};\n\t\t\t\tminSize = Math.min(availableWidth / size.width, availableHeight / size.height);\n\t\t\t\toffset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5};\n\t\t\t}\n\n\t\t\tchart.borderWidth = me.getMaxBorderWidth(meta.data);\n\t\t\tchart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0);\n\t\t\tchart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0);\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\t\t\tchart.offsetX = offset.x * chart.outerRadius;\n\t\t\tchart.offsetY = offset.y * chart.outerRadius;\n\n\t\t\tmeta.total = me.calculateTotal();\n\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index));\n\t\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0);\n\n\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t});\n\t\t},\n\n\t\tupdateElement: function(arc, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar animationOpts = opts.animation;\n\t\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\n\t\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\n\t\t\tvar startAngle = opts.rotation; // non reset case handled later\n\t\t\tvar endAngle = opts.rotation; // non reset case handled later\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI));\n\t\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\n\t\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\n\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n\t\t\thelpers.extend(arc, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: centerX + chart.offsetX,\n\t\t\t\t\ty: centerY + chart.offsetY,\n\t\t\t\t\tstartAngle: startAngle,\n\t\t\t\t\tendAngle: endAngle,\n\t\t\t\t\tcircumference: circumference,\n\t\t\t\t\touterRadius: outerRadius,\n\t\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\t\tlabel: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar model = arc._model;\n\t\t\t// Resets the visual styles\n\t\t\tthis.removeHoverStyle(arc);\n\n\t\t\t// Set correct angles if not resetting\n\t\t\tif (!reset || !animationOpts.animateRotate) {\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tmodel.startAngle = opts.rotation;\n\t\t\t\t} else {\n\t\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n\t\t\t\t}\n\n\t\t\t\tmodel.endAngle = model.startAngle + model.circumference;\n\t\t\t}\n\n\t\t\tarc.pivot();\n\t\t},\n\n\t\tremoveHoverStyle: function(arc) {\n\t\t\tChart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc);\n\t\t},\n\n\t\tcalculateTotal: function() {\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar total = 0;\n\t\t\tvar value;\n\n\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\tvalue = dataset.data[index];\n\t\t\t\tif (!isNaN(value) && !element.hidden) {\n\t\t\t\t\ttotal += Math.abs(value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t/* if (total === 0) {\n\t\t\t\ttotal = NaN;\n\t\t\t}*/\n\n\t\t\treturn total;\n\t\t},\n\n\t\tcalculateCircumference: function(value) {\n\t\t\tvar total = this.getMeta().total;\n\t\t\tif (total > 0 && !isNaN(value)) {\n\t\t\t\treturn (Math.PI * 2.0) * (value / total);\n\t\t\t}\n\t\t\treturn 0;\n\t\t},\n\n\t\t// gets the max border or hover width to properly scale pie charts\n\t\tgetMaxBorderWidth: function(arcs) {\n\t\t\tvar max = 0;\n\t\t\tvar index = this.index;\n\t\t\tvar length = arcs.length;\n\t\t\tvar borderWidth;\n\t\t\tvar hoverWidth;\n\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tborderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0;\n\t\t\t\thoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0;\n\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\n\t\t\t}\n\t\t\treturn max;\n\t\t}\n\t});\n};\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar tzmLatn = moment.defineLocale('tzm-latn', {\n months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'dadkh s yan %s',\n past : 'yan %s',\n s : 'imik',\n m : 'minuḍ',\n mm : '%d minuḍ',\n h : 'saɛa',\n hh : '%d tassaɛin',\n d : 'ass',\n dd : '%d ossan',\n M : 'ayowr',\n MM : '%d iyyirn',\n y : 'asgas',\n yy : '%d isgasn'\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n}\n\nvar sl = moment.defineLocale('sl', {\n months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[danes ob] LT',\n nextDay : '[jutri ob] LT',\n\n nextWeek : function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay : '[včeraj ob] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'čez %s',\n past : 'pred %s',\n s : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': '၁',\n '2': '၂',\n '3': '၃',\n '4': '၄',\n '5': '၅',\n '6': '၆',\n '7': '၇',\n '8': '၈',\n '9': '၉',\n '0': '၀'\n};\nvar numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0'\n};\n\nvar my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်'\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn my;\n\n})));\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\telements: {\n\t\tarc: {\n\t\t\tbackgroundColor: defaults.global.defaultColor,\n\t\t\tborderColor: '#fff',\n\t\t\tborderWidth: 2\n\t\t}\n\t}\n});\n\nmodule.exports = Element.extend({\n\tinLabelRange: function(mouseX) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\n\t\t}\n\t\treturn false;\n\t},\n\n\tinRange: function(chartX, chartY) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\tvar pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY});\n\t\t\tvar\tangle = pointRelativePosition.angle;\n\t\t\tvar distance = pointRelativePosition.distance;\n\n\t\t\t// Sanitise angle range\n\t\t\tvar startAngle = vm.startAngle;\n\t\t\tvar endAngle = vm.endAngle;\n\t\t\twhile (endAngle < startAngle) {\n\t\t\t\tendAngle += 2.0 * Math.PI;\n\t\t\t}\n\t\t\twhile (angle > endAngle) {\n\t\t\t\tangle -= 2.0 * Math.PI;\n\t\t\t}\n\t\t\twhile (angle < startAngle) {\n\t\t\t\tangle += 2.0 * Math.PI;\n\t\t\t}\n\n\t\t\t// Check if within the range of the open/close angle\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\n\n\t\t\treturn (betweenAngles && withinRadius);\n\t\t}\n\t\treturn false;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\n\t\treturn {\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\n\n\t\treturn {\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\n\t\t};\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar sA = vm.startAngle;\n\t\tvar eA = vm.endAngle;\n\n\t\tctx.beginPath();\n\n\t\tctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);\n\t\tctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);\n\n\t\tctx.closePath();\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = vm.borderWidth;\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\n\t\tctx.fill();\n\t\tctx.lineJoin = 'bevel';\n\n\t\tif (vm.borderWidth) {\n\t\t\tctx.stroke();\n\t\t}\n\t}\n});\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar helpers = require('../helpers/index');\nvar Ticks = require('../core/core.ticks');\n\nmodule.exports = function(Chart) {\n\n\tvar defaultConfig = {\n\t\tposition: 'left',\n\t\tticks: {\n\t\t\tcallback: Ticks.formatters.linear\n\t\t}\n\t};\n\n\tvar LinearScale = Chart.LinearScaleBase.extend({\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar chart = me.chart;\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tvar DEFAULT_MIN = 0;\n\t\t\tvar DEFAULT_MAX = 1;\n\n\t\t\tfunction IDMatches(meta) {\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t\t}\n\n\t\t\t// First Calculate the range\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\n\t\t\tvar hasStacks = opts.stacked;\n\t\t\tif (hasStacks === undefined) {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (hasStacks) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\t\thasStacks = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (opts.stacked || hasStacks) {\n\t\t\t\tvar valuesPerStack = {};\n\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tvar key = [\n\t\t\t\t\t\tmeta.type,\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\t\tmeta.stack\n\t\t\t\t\t].join('.');\n\n\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\tvaluesPerStack[key] = {\n\t\t\t\t\t\t\tpositiveValues: [],\n\t\t\t\t\t\t\tnegativeValues: []\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store these per type\n\t\t\t\t\tvar positiveValues = valuesPerStack[key].positiveValues;\n\t\t\t\t\tvar negativeValues = valuesPerStack[key].negativeValues;\n\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tpositiveValues[index] = positiveValues[index] || 0;\n\t\t\t\t\t\t\tnegativeValues[index] = negativeValues[index] || 0;\n\n\t\t\t\t\t\t\tif (opts.relativePoints) {\n\t\t\t\t\t\t\t\tpositiveValues[index] = 100;\n\t\t\t\t\t\t\t} else if (value < 0) {\n\t\t\t\t\t\t\t\tnegativeValues[index] += value;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpositiveValues[index] += value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\n\t\t\t\t\tvar values = valuesForType.positiveValues.concat(valuesForType.negativeValues);\n\t\t\t\t\tvar minVal = helpers.min(values);\n\t\t\t\t\tvar maxVal = helpers.max(values);\n\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\n\t\t\tme.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\t\tthis.handleTickRangeOptions();\n\t\t},\n\t\tgetTickLimit: function() {\n\t\t\tvar maxTicks;\n\t\t\tvar me = this;\n\t\t\tvar tickOpts = me.options.ticks;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50));\n\t\t\t} else {\n\t\t\t\t// The factor of 2 used to scale the font size has been experimentally determined.\n\t\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize);\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize)));\n\t\t\t}\n\n\t\t\treturn maxTicks;\n\t\t},\n\t\t// Called after the ticks are built. We need\n\t\thandleDirectionalChanges: function() {\n\t\t\tif (!this.isHorizontal()) {\n\t\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\n\t\t\t\tthis.ticks.reverse();\n\t\t\t}\n\t\t},\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\t// Utils\n\t\tgetPixelForValue: function(value) {\n\t\t\t// This must be called after fit has been run so that\n\t\t\t// this.left, this.top, this.right, and this.bottom have been defined\n\t\t\tvar me = this;\n\t\t\tvar start = me.start;\n\n\t\t\tvar rightValue = +me.getRightValue(value);\n\t\t\tvar pixel;\n\t\t\tvar range = me.end - start;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tpixel = me.left + (me.width / range * (rightValue - start));\n\t\t\t\treturn Math.round(pixel);\n\t\t\t}\n\n\t\t\tpixel = me.bottom - (me.height / range * (rightValue - start));\n\t\t\treturn Math.round(pixel);\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tvar innerDimension = isHorizontal ? me.width : me.height;\n\t\t\tvar offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension;\n\t\t\treturn me.start + ((me.end - me.start) * offset);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.ticksAsNumbers[index]);\n\t\t}\n\t});\n\tChart.scaleService.registerScaleType('linear', LinearScale, defaultConfig);\n\n};\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","'use strict';\n\nvar helpers = require('../helpers/index');\nvar Ticks = require('../core/core.ticks');\n\nmodule.exports = function(Chart) {\n\n\tvar defaultConfig = {\n\t\tposition: 'left',\n\n\t\t// label settings\n\t\tticks: {\n\t\t\tcallback: Ticks.formatters.logarithmic\n\t\t}\n\t};\n\n\tvar LogarithmicScale = Chart.Scale.extend({\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar chart = me.chart;\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tfunction IDMatches(meta) {\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t\t}\n\n\t\t\t// Calculate Range\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\t\t\tme.minNotZero = null;\n\n\t\t\tvar hasStacks = opts.stacked;\n\t\t\tif (hasStacks === undefined) {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (hasStacks) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\t\thasStacks = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (opts.stacked || hasStacks) {\n\t\t\t\tvar valuesPerStack = {};\n\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tvar key = [\n\t\t\t\t\t\tmeta.type,\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\t\tmeta.stack\n\t\t\t\t\t].join('.');\n\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\t\tvaluesPerStack[key] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar values = valuesPerStack[key];\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvalues[index] = values[index] || 0;\n\n\t\t\t\t\t\t\tif (opts.relativePoints) {\n\t\t\t\t\t\t\t\tvalues[index] = 100;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Don't need to split positive and negative since the log scale can't handle a 0 crossing\n\t\t\t\t\t\t\t\tvalues[index] += value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\n\t\t\t\t\tvar minVal = helpers.min(valuesForType);\n\t\t\t\t\tvar maxVal = helpers.max(valuesForType);\n\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) {\n\t\t\t\t\t\t\t\tme.minNotZero = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme.min = valueOrDefault(tickOpts.min, me.min);\n\t\t\tme.max = valueOrDefault(tickOpts.max, me.max);\n\n\t\t\tif (me.min === me.max) {\n\t\t\t\tif (me.min !== 0 && me.min !== null) {\n\t\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1);\n\t\t\t\t\tme.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1);\n\t\t\t\t} else {\n\t\t\t\t\tme.min = 1;\n\t\t\t\t\tme.max = 10;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\tvar generationOptions = {\n\t\t\t\tmin: tickOpts.min,\n\t\t\t\tmax: tickOpts.max\n\t\t\t};\n\t\t\tvar ticks = me.ticks = Ticks.generators.logarithmic(generationOptions, me);\n\n\t\t\tif (!me.isHorizontal()) {\n\t\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\n\t\t\t\tticks.reverse();\n\t\t\t}\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(ticks);\n\t\t\tme.min = helpers.min(ticks);\n\n\t\t\tif (tickOpts.reverse) {\n\t\t\t\tticks.reverse();\n\n\t\t\t\tme.start = me.max;\n\t\t\t\tme.end = me.min;\n\t\t\t} else {\n\t\t\t\tme.start = me.min;\n\t\t\t\tme.end = me.max;\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tthis.tickValues = this.ticks.slice();\n\n\t\t\tChart.Scale.prototype.convertTicksToLabels.call(this);\n\t\t},\n\t\t// Get the correct tooltip label\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.tickValues[index]);\n\t\t},\n\t\tgetPixelForValue: function(value) {\n\t\t\tvar me = this;\n\t\t\tvar start = me.start;\n\t\t\tvar newVal = +me.getRightValue(value);\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar innerDimension, pixel, range;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\trange = helpers.log10(me.end) - helpers.log10(start); // todo: if start === 0\n\t\t\t\tif (newVal === 0) {\n\t\t\t\t\tpixel = me.left;\n\t\t\t\t} else {\n\t\t\t\t\tinnerDimension = me.width;\n\t\t\t\t\tpixel = me.left + (innerDimension / range * (helpers.log10(newVal) - helpers.log10(start)));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Bottom - top since pixels increase downward on a screen\n\t\t\t\tinnerDimension = me.height;\n\t\t\t\tif (start === 0 && !tickOpts.reverse) {\n\t\t\t\t\trange = helpers.log10(me.end) - helpers.log10(me.minNotZero);\n\t\t\t\t\tif (newVal === start) {\n\t\t\t\t\t\tpixel = me.bottom;\n\t\t\t\t\t} else if (newVal === me.minNotZero) {\n\t\t\t\t\t\tpixel = me.bottom - innerDimension * 0.02;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpixel = me.bottom - innerDimension * 0.02 - (innerDimension * 0.98 / range * (helpers.log10(newVal) - helpers.log10(me.minNotZero)));\n\t\t\t\t\t}\n\t\t\t\t} else if (me.end === 0 && tickOpts.reverse) {\n\t\t\t\t\trange = helpers.log10(me.start) - helpers.log10(me.minNotZero);\n\t\t\t\t\tif (newVal === me.end) {\n\t\t\t\t\t\tpixel = me.top;\n\t\t\t\t\t} else if (newVal === me.minNotZero) {\n\t\t\t\t\t\tpixel = me.top + innerDimension * 0.02;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpixel = me.top + innerDimension * 0.02 + (innerDimension * 0.98 / range * (helpers.log10(newVal) - helpers.log10(me.minNotZero)));\n\t\t\t\t\t}\n\t\t\t\t} else if (newVal === 0) {\n\t\t\t\t\tpixel = tickOpts.reverse ? me.top : me.bottom;\n\t\t\t\t} else {\n\t\t\t\t\trange = helpers.log10(me.end) - helpers.log10(start);\n\t\t\t\t\tinnerDimension = me.height;\n\t\t\t\t\tpixel = me.bottom - (innerDimension / range * (helpers.log10(newVal) - helpers.log10(start)));\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn pixel;\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar range = helpers.log10(me.end) - helpers.log10(me.start);\n\t\t\tvar value, innerDimension;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tinnerDimension = me.width;\n\t\t\t\tvalue = me.start * Math.pow(10, (pixel - me.left) * range / innerDimension);\n\t\t\t} else { // todo: if start === 0\n\t\t\t\tinnerDimension = me.height;\n\t\t\t\tvalue = Math.pow(10, (me.bottom - pixel) * range / innerDimension) / me.start;\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t});\n\tChart.scaleService.registerScaleType('logarithmic', LogarithmicScale, defaultConfig);\n\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('bar', {\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\n\t\t\t// Specific to Bar Controller\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9,\n\n\t\t\t// offset settings\n\t\t\toffset: true,\n\n\t\t\t// grid line settings\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\ttype: 'linear'\n\t\t}]\n\t}\n});\n\ndefaults._set('horizontalBar', {\n\thover: {\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'bottom'\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\tposition: 'left',\n\t\t\ttype: 'category',\n\n\t\t\t// Specific to Horizontal Bar Controller\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9,\n\n\t\t\t// offset settings\n\t\t\toffset: true,\n\n\t\t\t// grid line settings\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}]\n\t},\n\n\telements: {\n\t\trectangle: {\n\t\t\tborderSkipped: 'left'\n\t\t}\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function(item, data) {\n\t\t\t\t// Pick first xLabel for now\n\t\t\t\tvar title = '';\n\n\t\t\t\tif (item.length > 0) {\n\t\t\t\t\tif (item[0].yLabel) {\n\t\t\t\t\t\ttitle = item[0].yLabel;\n\t\t\t\t\t} else if (data.labels.length > 0 && item[0].index < data.labels.length) {\n\t\t\t\t\t\ttitle = data.labels[item[0].index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn title;\n\t\t\t},\n\n\t\t\tlabel: function(item, data) {\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\n\t\t\t\treturn datasetLabel + ': ' + item.xLabel;\n\t\t\t}\n\t\t},\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.bar = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Rectangle,\n\n\t\tinitialize: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta;\n\n\t\t\tChart.DatasetController.prototype.initialize.apply(me, arguments);\n\n\t\t\tmeta = me.getMeta();\n\t\t\tmeta.stack = me.getDataset().stack;\n\t\t\tmeta.bar = true;\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar rects = me.getMeta().data;\n\t\t\tvar i, ilen;\n\n\t\t\tme._ruler = me.getRuler();\n\n\t\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\n\t\t\t\tme.updateElement(rects[i], i, reset);\n\t\t\t}\n\t\t},\n\n\t\tupdateElement: function(rectangle, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar custom = rectangle.custom || {};\n\t\t\tvar rectangleOptions = chart.options.elements.rectangle;\n\n\t\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\n\t\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\n\t\t\trectangle._datasetIndex = me.index;\n\t\t\trectangle._index = index;\n\n\t\t\trectangle._model = {\n\t\t\t\tdatasetLabel: dataset.label,\n\t\t\t\tlabel: chart.data.labels[index],\n\t\t\t\tborderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped,\n\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor),\n\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor),\n\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth)\n\t\t\t};\n\n\t\t\tme.updateElementGeometry(rectangle, index, reset);\n\n\t\t\trectangle.pivot();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tupdateElementGeometry: function(rectangle, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar model = rectangle._model;\n\t\t\tvar vscale = me.getValueScale();\n\t\t\tvar base = vscale.getBasePixel();\n\t\t\tvar horizontal = vscale.isHorizontal();\n\t\t\tvar ruler = me._ruler || me.getRuler();\n\t\t\tvar vpixels = me.calculateBarValuePixels(me.index, index);\n\t\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler);\n\n\t\t\tmodel.horizontal = horizontal;\n\t\t\tmodel.base = reset ? base : vpixels.base;\n\t\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\n\t\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\n\t\t\tmodel.height = horizontal ? ipixels.size : undefined;\n\t\t\tmodel.width = horizontal ? undefined : ipixels.size;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScaleId: function() {\n\t\t\treturn this.getMeta().yAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScaleId: function() {\n\t\t\treturn this.getMeta().xAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScale: function() {\n\t\t\treturn this.getScaleForId(this.getValueScaleId());\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScale: function() {\n\t\t\treturn this.getScaleForId(this.getIndexScaleId());\n\t\t},\n\n\t\t/**\n\t\t * Returns the effective number of stacks based on groups and bar visibility.\n\t\t * @private\n\t\t */\n\t\tgetStackCount: function(last) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar scale = me.getIndexScale();\n\t\t\tvar stacked = scale.options.stacked;\n\t\t\tvar ilen = last === undefined ? chart.data.datasets.length : last + 1;\n\t\t\tvar stacks = [];\n\t\t\tvar i, meta;\n\n\t\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tif (meta.bar && chart.isDatasetVisible(i) &&\n\t\t\t\t\t(stacked === false ||\n\t\t\t\t\t(stacked === true && stacks.indexOf(meta.stack) === -1) ||\n\t\t\t\t\t(stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) {\n\t\t\t\t\tstacks.push(meta.stack);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn stacks.length;\n\t\t},\n\n\t\t/**\n\t\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t\t * @private\n\t\t */\n\t\tgetStackIndex: function(datasetIndex) {\n\t\t\treturn this.getStackCount(datasetIndex) - 1;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetRuler: function() {\n\t\t\tvar me = this;\n\t\t\tvar scale = me.getIndexScale();\n\t\t\tvar stackCount = me.getStackCount();\n\t\t\tvar datasetIndex = me.index;\n\t\t\tvar pixels = [];\n\t\t\tvar isHorizontal = scale.isHorizontal();\n\t\t\tvar start = isHorizontal ? scale.left : scale.top;\n\t\t\tvar end = start + (isHorizontal ? scale.width : scale.height);\n\t\t\tvar i, ilen;\n\n\t\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\n\t\t\t\tpixels.push(scale.getPixelForValue(null, i, datasetIndex));\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tpixels: pixels,\n\t\t\t\tstart: start,\n\t\t\t\tend: end,\n\t\t\t\tstackCount: stackCount,\n\t\t\t\tscale: scale\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Note: pixel values are not clamped to the scale area.\n\t\t * @private\n\t\t */\n\t\tcalculateBarValuePixels: function(datasetIndex, index) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar scale = me.getValueScale();\n\t\t\tvar datasets = chart.data.datasets;\n\t\t\tvar value = scale.getRightValue(datasets[datasetIndex].data[index]);\n\t\t\tvar stacked = scale.options.stacked;\n\t\t\tvar stack = meta.stack;\n\t\t\tvar start = 0;\n\t\t\tvar i, imeta, ivalue, base, head, size;\n\n\t\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\n\t\t\t\tfor (i = 0; i < datasetIndex; ++i) {\n\t\t\t\t\timeta = chart.getDatasetMeta(i);\n\n\t\t\t\t\tif (imeta.bar &&\n\t\t\t\t\t\timeta.stack === stack &&\n\t\t\t\t\t\timeta.controller.getValueScaleId() === scale.id &&\n\t\t\t\t\t\tchart.isDatasetVisible(i)) {\n\n\t\t\t\t\t\tivalue = scale.getRightValue(datasets[i].data[index]);\n\t\t\t\t\t\tif ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) {\n\t\t\t\t\t\t\tstart += ivalue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbase = scale.getPixelForValue(start);\n\t\t\thead = scale.getPixelForValue(start + value);\n\t\t\tsize = (head - base) / 2;\n\n\t\t\treturn {\n\t\t\t\tsize: size,\n\t\t\t\tbase: base,\n\t\t\t\thead: head,\n\t\t\t\tcenter: head + size / 2\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tcalculateBarIndexPixels: function(datasetIndex, index, ruler) {\n\t\t\tvar me = this;\n\t\t\tvar options = ruler.scale.options;\n\t\t\tvar stackIndex = me.getStackIndex(datasetIndex);\n\t\t\tvar pixels = ruler.pixels;\n\t\t\tvar base = pixels[index];\n\t\t\tvar length = pixels.length;\n\t\t\tvar start = ruler.start;\n\t\t\tvar end = ruler.end;\n\t\t\tvar leftSampleSize, rightSampleSize, leftCategorySize, rightCategorySize, fullBarSize, size;\n\n\t\t\tif (length === 1) {\n\t\t\t\tleftSampleSize = base > start ? base - start : end - base;\n\t\t\t\trightSampleSize = base < end ? end - base : base - start;\n\t\t\t} else {\n\t\t\t\tif (index > 0) {\n\t\t\t\t\tleftSampleSize = (base - pixels[index - 1]) / 2;\n\t\t\t\t\tif (index === length - 1) {\n\t\t\t\t\t\trightSampleSize = leftSampleSize;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (index < length - 1) {\n\t\t\t\t\trightSampleSize = (pixels[index + 1] - base) / 2;\n\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\tleftSampleSize = rightSampleSize;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tleftCategorySize = leftSampleSize * options.categoryPercentage;\n\t\t\trightCategorySize = rightSampleSize * options.categoryPercentage;\n\t\t\tfullBarSize = (leftCategorySize + rightCategorySize) / ruler.stackCount;\n\t\t\tsize = fullBarSize * options.barPercentage;\n\n\t\t\tsize = Math.min(\n\t\t\t\thelpers.valueOrDefault(options.barThickness, size),\n\t\t\t\thelpers.valueOrDefault(options.maxBarThickness, Infinity));\n\n\t\t\tbase -= leftCategorySize;\n\t\t\tbase += fullBarSize * stackIndex;\n\t\t\tbase += (fullBarSize - size) / 2;\n\n\t\t\treturn {\n\t\t\t\tsize: size,\n\t\t\t\tbase: base,\n\t\t\t\thead: base + size,\n\t\t\t\tcenter: base + size / 2\n\t\t\t};\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar scale = me.getValueScale();\n\t\t\tvar rects = me.getMeta().data;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar ilen = rects.length;\n\t\t\tvar i = 0;\n\n\t\t\thelpers.canvas.clipArea(chart.ctx, chart.chartArea);\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\tif (!isNaN(scale.getRightValue(dataset.data[i]))) {\n\t\t\t\t\trects[i].draw();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thelpers.canvas.unclipArea(chart.ctx);\n\t\t},\n\n\t\tsetHoverStyle: function(rectangle) {\n\t\t\tvar dataset = this.chart.data.datasets[rectangle._datasetIndex];\n\t\t\tvar index = rectangle._index;\n\t\t\tvar custom = rectangle.custom || {};\n\t\t\tvar model = rectangle._model;\n\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.hoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.hoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);\n\t\t},\n\n\t\tremoveHoverStyle: function(rectangle) {\n\t\t\tvar dataset = this.chart.data.datasets[rectangle._datasetIndex];\n\t\t\tvar index = rectangle._index;\n\t\t\tvar custom = rectangle.custom || {};\n\t\t\tvar model = rectangle._model;\n\t\t\tvar rectangleElementOptions = this.chart.options.elements.rectangle;\n\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth);\n\t\t}\n\t});\n\n\tChart.controllers.horizontalBar = Chart.controllers.bar.extend({\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScaleId: function() {\n\t\t\treturn this.getMeta().xAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScaleId: function() {\n\t\t\treturn this.getMeta().yAxisID;\n\t\t}\n\t});\n};\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar enAu = moment.defineLocale('en-au', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn enAu;\n\n})));\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('radar', {\n\tscale: {\n\t\ttype: 'radialLinear'\n\t},\n\telements: {\n\t\tline: {\n\t\t\ttension: 0 // no bezier in radar\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.radar = Chart.DatasetController.extend({\n\n\t\tdatasetElementType: elements.Line,\n\n\t\tdataElementType: elements.Point,\n\n\t\tlinkScales: helpers.noop,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar line = meta.dataset;\n\t\t\tvar points = meta.data;\n\t\t\tvar custom = line.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar lineElementOptions = me.chart.options.elements.line;\n\t\t\tvar scale = me.chart.scale;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t}\n\n\t\t\thelpers.extend(meta.dataset, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_scale: scale,\n\t\t\t\t// Data\n\t\t\t\t_children: points,\n\t\t\t\t_loop: true,\n\t\t\t\t// Model\n\t\t\t\t_model: {\n\t\t\t\t\t// Appearance\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmeta.dataset.pivot();\n\n\t\t\t// Update Points\n\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t}, me);\n\n\t\t\t// Update bezier control points\n\t\t\tme.updateBezierControlPoints();\n\t\t},\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar scale = me.chart.scale;\n\t\t\tvar pointElementOptions = me.chart.options.elements.point;\n\t\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\n\t\t\t}\n\n\t\t\thelpers.extend(point, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\t\t\t\t_scale: scale,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales\n\t\t\t\t\ty: reset ? scale.yCenter : pointPosition.y,\n\n\t\t\t\t\t// Appearance\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension),\n\t\t\t\t\tradius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth),\n\t\t\t\t\tpointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle),\n\n\t\t\t\t\t// Tooltip\n\t\t\t\t\thitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius)\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tpoint._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y));\n\t\t},\n\t\tupdateBezierControlPoints: function() {\n\t\t\tvar chartArea = this.chart.chartArea;\n\t\t\tvar meta = this.getMeta();\n\n\t\t\thelpers.each(meta.data, function(point, index) {\n\t\t\t\tvar model = point._model;\n\t\t\t\tvar controlPoints = helpers.splineCurve(\n\t\t\t\t\thelpers.previousItem(meta.data, index, true)._model,\n\t\t\t\t\tmodel,\n\t\t\t\t\thelpers.nextItem(meta.data, index, true)._model,\n\t\t\t\t\tmodel.tension\n\t\t\t\t);\n\n\t\t\t\t// Prevent the bezier going outside of the bounds of the graph\n\t\t\t\tmodel.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left);\n\t\t\t\tmodel.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top);\n\n\t\t\t\tmodel.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left);\n\t\t\t\tmodel.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top);\n\n\t\t\t\t// Now pivot the point for animation\n\t\t\t\tpoint.pivot();\n\t\t\t});\n\t\t},\n\n\t\tsetHoverStyle: function(point) {\n\t\t\t// Point\n\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar index = point._index;\n\t\t\tvar model = point._model;\n\n\t\t\tmodel.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t},\n\n\t\tremoveHoverStyle: function(point) {\n\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar index = point._index;\n\t\t\tvar model = point._model;\n\t\t\tvar pointElementOptions = this.chart.options.elements.point;\n\n\t\t\tmodel.radius = custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius);\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth);\n\t\t}\n\t});\n};\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! Author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n}\nfunction relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n 'hh': 'час_часа_часов',\n 'dd': 'день_дня_дней',\n 'MM': 'месяц_месяца_месяцев',\n 'yy': 'год_года_лет'\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n }\n else {\n return number + ' ' + plural(format[key], +number);\n }\n}\nvar monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];\n\n// http://new.gramota.ru/spravka/rules/139-prop : § 103\n// Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n// CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\nvar ru = moment.defineLocale('ru', {\n months : {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')\n },\n monthsShort : {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку ?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')\n },\n weekdays : {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/\n },\n weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соотвествует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY г.',\n LLL : 'D MMMM YYYY г., HH:mm',\n LLLL : 'dddd, D MMMM YYYY г., HH:mm'\n },\n calendar : {\n sameDay: '[Сегодня в] LT',\n nextDay: '[Завтра в] LT',\n lastDay: '[Вчера в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd [в] LT';\n } else {\n return '[В] dddd [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd [в] LT';\n } else {\n return '[В] dddd [в] LT';\n }\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'через %s',\n past : '%s назад',\n s : 'несколько секунд',\n m : relativeTimeWithPlural,\n mm : relativeTimeWithPlural,\n h : 'час',\n hh : relativeTimeWithPlural,\n d : 'день',\n dd : relativeTimeWithPlural,\n M : 'месяц',\n MM : relativeTimeWithPlural,\n y : 'год',\n yy : relativeTimeWithPlural\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM : function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm'\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn mi;\n\n})));\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('bubble', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\n\t\t\tposition: 'bottom',\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.bubble = Chart.DatasetController.extend({\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tdataElementType: elements.Point,\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar points = meta.data;\n\n\t\t\t// Update Points\n\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar options = me._resolveElementOptions(point, index);\n\t\t\tvar data = me.getDataset().data[index];\n\t\t\tvar dsIndex = me.index;\n\n\t\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\n\t\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\n\n\t\t\tpoint._xScale = xScale;\n\t\t\tpoint._yScale = yScale;\n\t\t\tpoint._options = options;\n\t\t\tpoint._datasetIndex = dsIndex;\n\t\t\tpoint._index = index;\n\t\t\tpoint._model = {\n\t\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\t\tborderColor: options.borderColor,\n\t\t\t\tborderWidth: options.borderWidth,\n\t\t\t\thitRadius: options.hitRadius,\n\t\t\t\tpointStyle: options.pointStyle,\n\t\t\t\tradius: reset ? 0 : options.radius,\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t};\n\n\t\t\tpoint.pivot();\n\t\t},\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tsetHoverStyle: function(point) {\n\t\t\tvar model = point._model;\n\t\t\tvar options = point._options;\n\n\t\t\tmodel.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor));\n\t\t\tmodel.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor));\n\t\t\tmodel.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth);\n\t\t\tmodel.radius = options.radius + options.hoverRadius;\n\t\t},\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tremoveHoverStyle: function(point) {\n\t\t\tvar model = point._model;\n\t\t\tvar options = point._options;\n\n\t\t\tmodel.backgroundColor = options.backgroundColor;\n\t\t\tmodel.borderColor = options.borderColor;\n\t\t\tmodel.borderWidth = options.borderWidth;\n\t\t\tmodel.radius = options.radius;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_resolveElementOptions: function(point, index) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar datasets = chart.data.datasets;\n\t\t\tvar dataset = datasets[me.index];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar options = chart.options.elements.point;\n\t\t\tvar resolve = helpers.options.resolve;\n\t\t\tvar data = dataset.data[index];\n\t\t\tvar values = {};\n\t\t\tvar i, ilen, key;\n\n\t\t\t// Scriptable options\n\t\t\tvar context = {\n\t\t\t\tchart: chart,\n\t\t\t\tdataIndex: index,\n\t\t\t\tdataset: dataset,\n\t\t\t\tdatasetIndex: me.index\n\t\t\t};\n\n\t\t\tvar keys = [\n\t\t\t\t'backgroundColor',\n\t\t\t\t'borderColor',\n\t\t\t\t'borderWidth',\n\t\t\t\t'hoverBackgroundColor',\n\t\t\t\t'hoverBorderColor',\n\t\t\t\t'hoverBorderWidth',\n\t\t\t\t'hoverRadius',\n\t\t\t\t'hitRadius',\n\t\t\t\t'pointStyle'\n\t\t\t];\n\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\t\tkey = keys[i];\n\t\t\t\tvalues[key] = resolve([\n\t\t\t\t\tcustom[key],\n\t\t\t\t\tdataset[key],\n\t\t\t\t\toptions[key]\n\t\t\t\t], context, index);\n\t\t\t}\n\n\t\t\t// Custom radius resolution\n\t\t\tvalues.radius = resolve([\n\t\t\t\tcustom.radius,\n\t\t\t\tdata ? data.r : undefined,\n\t\t\t\tdataset.radius,\n\t\t\t\toptions.radius\n\t\t\t], context, index);\n\n\t\t\treturn values;\n\t\t}\n\t});\n};\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n 'm' : ['ühe minuti', 'üks minut'],\n 'mm': [number + ' minuti', number + ' minutit'],\n 'h' : ['ühe tunni', 'tund aega', 'üks tund'],\n 'hh': [number + ' tunni', number + ' tundi'],\n 'd' : ['ühe päeva', 'üks päev'],\n 'M' : ['kuu aja', 'kuu aega', 'üks kuu'],\n 'MM': [number + ' kuu', number + ' kuud'],\n 'y' : ['ühe aasta', 'aasta', 'üks aasta'],\n 'yy': [number + ' aasta', number + ' aastat']\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n}\n\nvar et = moment.defineLocale('et', {\n months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\n weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin : 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[Täna,] LT',\n nextDay : '[Homme,] LT',\n nextWeek : '[Järgmine] dddd LT',\n lastDay : '[Eile,] LT',\n lastWeek : '[Eelmine] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s pärast',\n past : '%s tagasi',\n s : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : '%d päeva',\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar da = moment.defineLocale('da', {\n months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\n },\n calendar : {\n sameDay : '[i dag kl.] LT',\n nextDay : '[i morgen kl.] LT',\n nextWeek : 'på dddd [kl.] LT',\n lastDay : '[i går kl.] LT',\n lastWeek : '[i] dddd[s kl.] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s siden',\n s : 'få sekunder',\n m : 'et minut',\n mm : '%d minutter',\n h : 'en time',\n hh : '%d timer',\n d : 'en dag',\n dd : '%d dage',\n M : 'en måned',\n MM : '%d måneder',\n y : 'et år',\n yy : '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn da;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar id = moment.defineLocale('id', {\n months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'),\n weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar : {\n sameDay : '[Hari ini pukul] LT',\n nextDay : '[Besok pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kemarin pukul] LT',\n lastWeek : 'dddd [lalu pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dalam %s',\n past : '%s yang lalu',\n s : 'beberapa detik',\n m : 'semenit',\n mm : '%d menit',\n h : 'sejam',\n hh : '%d jam',\n d : 'sehari',\n dd : '%d hari',\n M : 'sebulan',\n MM : '%d bulan',\n y : 'setahun',\n yy : '%d tahun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn id;\n\n})));\n","'use strict';\n\nvar defaults = require('./core.defaults');\nvar Element = require('./core.element');\nvar helpers = require('../helpers/index');\nvar Ticks = require('./core.ticks');\n\ndefaults._set('scale', {\n\tdisplay: true,\n\tposition: 'left',\n\toffset: false,\n\n\t// grid line settings\n\tgridLines: {\n\t\tdisplay: true,\n\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\tlineWidth: 1,\n\t\tdrawBorder: true,\n\t\tdrawOnChartArea: true,\n\t\tdrawTicks: true,\n\t\ttickMarkLength: 10,\n\t\tzeroLineWidth: 1,\n\t\tzeroLineColor: 'rgba(0,0,0,0.25)',\n\t\tzeroLineBorderDash: [],\n\t\tzeroLineBorderDashOffset: 0.0,\n\t\toffsetGridLines: false,\n\t\tborderDash: [],\n\t\tborderDashOffset: 0.0\n\t},\n\n\t// scale label\n\tscaleLabel: {\n\t\t// display property\n\t\tdisplay: false,\n\n\t\t// actual label\n\t\tlabelString: '',\n\n\t\t// line height\n\t\tlineHeight: 1.2,\n\n\t\t// top/bottom padding\n\t\tpadding: {\n\t\t\ttop: 4,\n\t\t\tbottom: 4\n\t\t}\n\t},\n\n\t// label settings\n\tticks: {\n\t\tbeginAtZero: false,\n\t\tminRotation: 0,\n\t\tmaxRotation: 50,\n\t\tmirror: false,\n\t\tpadding: 0,\n\t\treverse: false,\n\t\tdisplay: true,\n\t\tautoSkip: true,\n\t\tautoSkipPadding: 0,\n\t\tlabelOffset: 0,\n\t\t// We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n\t\tcallback: Ticks.formatters.values,\n\t\tminor: {},\n\t\tmajor: {}\n\t}\n});\n\nfunction labelsFromTicks(ticks) {\n\tvar labels = [];\n\tvar i, ilen;\n\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\tlabels.push(ticks[i].label);\n\t}\n\n\treturn labels;\n}\n\nfunction getLineValue(scale, index, offsetGridLines) {\n\tvar lineValue = scale.getPixelForTick(index);\n\n\tif (offsetGridLines) {\n\t\tif (index === 0) {\n\t\t\tlineValue -= (scale.getPixelForTick(1) - lineValue) / 2;\n\t\t} else {\n\t\t\tlineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2;\n\t\t}\n\t}\n\treturn lineValue;\n}\n\nmodule.exports = function(Chart) {\n\n\tfunction computeTextSize(context, tick, font) {\n\t\treturn helpers.isArray(tick) ?\n\t\t\thelpers.longestText(context, font, tick) :\n\t\t\tcontext.measureText(tick).width;\n\t}\n\n\tfunction parseFontOptions(options) {\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar globalDefaults = defaults.global;\n\t\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\n\t\tvar style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle);\n\t\tvar family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily);\n\n\t\treturn {\n\t\t\tsize: size,\n\t\t\tstyle: style,\n\t\t\tfamily: family,\n\t\t\tfont: helpers.fontString(size, style, family)\n\t\t};\n\t}\n\n\tfunction parseLineHeight(options) {\n\t\treturn helpers.options.toLineHeight(\n\t\t\thelpers.valueOrDefault(options.lineHeight, 1.2),\n\t\t\thelpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize));\n\t}\n\n\tChart.Scale = Element.extend({\n\t\t/**\n\t\t * Get the padding needed for the scale\n\t\t * @method getPadding\n\t\t * @private\n\t\t * @returns {Padding} the necessary padding\n\t\t */\n\t\tgetPadding: function() {\n\t\t\tvar me = this;\n\t\t\treturn {\n\t\t\t\tleft: me.paddingLeft || 0,\n\t\t\t\ttop: me.paddingTop || 0,\n\t\t\t\tright: me.paddingRight || 0,\n\t\t\t\tbottom: me.paddingBottom || 0\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Returns the scale tick objects ({label, major})\n\t\t * @since 2.7\n\t\t */\n\t\tgetTicks: function() {\n\t\t\treturn this._ticks;\n\t\t},\n\n\t\t// These methods are ordered by lifecyle. Utilities then follow.\n\t\t// Any function defined here is inherited by all scale types.\n\t\t// Any function can be extended by the scale type\n\n\t\tmergeTicksOptions: function() {\n\t\t\tvar ticks = this.options.ticks;\n\t\t\tif (ticks.minor === false) {\n\t\t\t\tticks.minor = {\n\t\t\t\t\tdisplay: false\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (ticks.major === false) {\n\t\t\t\tticks.major = {\n\t\t\t\t\tdisplay: false\n\t\t\t\t};\n\t\t\t}\n\t\t\tfor (var key in ticks) {\n\t\t\t\tif (key !== 'major' && key !== 'minor') {\n\t\t\t\t\tif (typeof ticks.minor[key] === 'undefined') {\n\t\t\t\t\t\tticks.minor[key] = ticks[key];\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof ticks.major[key] === 'undefined') {\n\t\t\t\t\t\tticks.major[key] = ticks[key];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tbeforeUpdate: function() {\n\t\t\thelpers.callback(this.options.beforeUpdate, [this]);\n\t\t},\n\t\tupdate: function(maxWidth, maxHeight, margins) {\n\t\t\tvar me = this;\n\t\t\tvar i, ilen, labels, label, ticks, tick;\n\n\t\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\t\tme.beforeUpdate();\n\n\t\t\t// Absorb the master measurements\n\t\t\tme.maxWidth = maxWidth;\n\t\t\tme.maxHeight = maxHeight;\n\t\t\tme.margins = helpers.extend({\n\t\t\t\tleft: 0,\n\t\t\t\tright: 0,\n\t\t\t\ttop: 0,\n\t\t\t\tbottom: 0\n\t\t\t}, margins);\n\t\t\tme.longestTextCache = me.longestTextCache || {};\n\n\t\t\t// Dimensions\n\t\t\tme.beforeSetDimensions();\n\t\t\tme.setDimensions();\n\t\t\tme.afterSetDimensions();\n\n\t\t\t// Data min/max\n\t\t\tme.beforeDataLimits();\n\t\t\tme.determineDataLimits();\n\t\t\tme.afterDataLimits();\n\n\t\t\t// Ticks - `this.ticks` is now DEPRECATED!\n\t\t\t// Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\n\t\t\t// and must not be accessed directly from outside this class. `this.ticks` being\n\t\t\t// around for long time and not marked as private, we can't change its structure\n\t\t\t// without unexpected breaking changes. If you need to access the scale ticks,\n\t\t\t// use scale.getTicks() instead.\n\n\t\t\tme.beforeBuildTicks();\n\n\t\t\t// New implementations should return an array of objects but for BACKWARD COMPAT,\n\t\t\t// we still support no return (`this.ticks` internally set by calling this method).\n\t\t\tticks = me.buildTicks() || [];\n\n\t\t\tme.afterBuildTicks();\n\n\t\t\tme.beforeTickToLabelConversion();\n\n\t\t\t// New implementations should return the formatted tick labels but for BACKWARD\n\t\t\t// COMPAT, we still support no return (`this.ticks` internally changed by calling\n\t\t\t// this method and supposed to contain only string values).\n\t\t\tlabels = me.convertTicksToLabels(ticks) || me.ticks;\n\n\t\t\tme.afterTickToLabelConversion();\n\n\t\t\tme.ticks = labels; // BACKWARD COMPATIBILITY\n\n\t\t\t// IMPORTANT: from this point, we consider that `this.ticks` will NEVER change!\n\n\t\t\t// BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\n\t\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\t\t\tlabel = labels[i];\n\t\t\t\ttick = ticks[i];\n\t\t\t\tif (!tick) {\n\t\t\t\t\tticks.push(tick = {\n\t\t\t\t\t\tlabel: label,\n\t\t\t\t\t\tmajor: false\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\ttick.label = label;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme._ticks = ticks;\n\n\t\t\t// Tick Rotation\n\t\t\tme.beforeCalculateTickRotation();\n\t\t\tme.calculateTickRotation();\n\t\t\tme.afterCalculateTickRotation();\n\t\t\t// Fit\n\t\t\tme.beforeFit();\n\t\t\tme.fit();\n\t\t\tme.afterFit();\n\t\t\t//\n\t\t\tme.afterUpdate();\n\n\t\t\treturn me.minSize;\n\n\t\t},\n\t\tafterUpdate: function() {\n\t\t\thelpers.callback(this.options.afterUpdate, [this]);\n\t\t},\n\n\t\t//\n\n\t\tbeforeSetDimensions: function() {\n\t\t\thelpers.callback(this.options.beforeSetDimensions, [this]);\n\t\t},\n\t\tsetDimensions: function() {\n\t\t\tvar me = this;\n\t\t\t// Set the unconstrained dimension before label rotation\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\t// Reset position before calculating rotation\n\t\t\t\tme.width = me.maxWidth;\n\t\t\t\tme.left = 0;\n\t\t\t\tme.right = me.width;\n\t\t\t} else {\n\t\t\t\tme.height = me.maxHeight;\n\n\t\t\t\t// Reset position before calculating rotation\n\t\t\t\tme.top = 0;\n\t\t\t\tme.bottom = me.height;\n\t\t\t}\n\n\t\t\t// Reset padding\n\t\t\tme.paddingLeft = 0;\n\t\t\tme.paddingTop = 0;\n\t\t\tme.paddingRight = 0;\n\t\t\tme.paddingBottom = 0;\n\t\t},\n\t\tafterSetDimensions: function() {\n\t\t\thelpers.callback(this.options.afterSetDimensions, [this]);\n\t\t},\n\n\t\t// Data limits\n\t\tbeforeDataLimits: function() {\n\t\t\thelpers.callback(this.options.beforeDataLimits, [this]);\n\t\t},\n\t\tdetermineDataLimits: helpers.noop,\n\t\tafterDataLimits: function() {\n\t\t\thelpers.callback(this.options.afterDataLimits, [this]);\n\t\t},\n\n\t\t//\n\t\tbeforeBuildTicks: function() {\n\t\t\thelpers.callback(this.options.beforeBuildTicks, [this]);\n\t\t},\n\t\tbuildTicks: helpers.noop,\n\t\tafterBuildTicks: function() {\n\t\t\thelpers.callback(this.options.afterBuildTicks, [this]);\n\t\t},\n\n\t\tbeforeTickToLabelConversion: function() {\n\t\t\thelpers.callback(this.options.beforeTickToLabelConversion, [this]);\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\t\t\t// Convert ticks to strings\n\t\t\tvar tickOpts = me.options.ticks;\n\t\t\tme.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\n\t\t},\n\t\tafterTickToLabelConversion: function() {\n\t\t\thelpers.callback(this.options.afterTickToLabelConversion, [this]);\n\t\t},\n\n\t\t//\n\n\t\tbeforeCalculateTickRotation: function() {\n\t\t\thelpers.callback(this.options.beforeCalculateTickRotation, [this]);\n\t\t},\n\t\tcalculateTickRotation: function() {\n\t\t\tvar me = this;\n\t\t\tvar context = me.ctx;\n\t\t\tvar tickOpts = me.options.ticks;\n\t\t\tvar labels = labelsFromTicks(me._ticks);\n\n\t\t\t// Get the width of each grid by calculating the difference\n\t\t\t// between x offsets between 0 and 1.\n\t\t\tvar tickFont = parseFontOptions(tickOpts);\n\t\t\tcontext.font = tickFont.font;\n\n\t\t\tvar labelRotation = tickOpts.minRotation || 0;\n\n\t\t\tif (labels.length && me.options.display && me.isHorizontal()) {\n\t\t\t\tvar originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache);\n\t\t\t\tvar labelWidth = originalLabelWidth;\n\t\t\t\tvar cosRotation, sinRotation;\n\n\t\t\t\t// Allow 3 pixels x2 padding either side for label readability\n\t\t\t\tvar tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6;\n\n\t\t\t\t// Max label rotation can be set or default to 90 - also act as a loop counter\n\t\t\t\twhile (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) {\n\t\t\t\t\tvar angleRadians = helpers.toRadians(labelRotation);\n\t\t\t\t\tcosRotation = Math.cos(angleRadians);\n\t\t\t\t\tsinRotation = Math.sin(angleRadians);\n\n\t\t\t\t\tif (sinRotation * originalLabelWidth > me.maxHeight) {\n\t\t\t\t\t\t// go back one step\n\t\t\t\t\t\tlabelRotation--;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tlabelRotation++;\n\t\t\t\t\tlabelWidth = cosRotation * originalLabelWidth;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.labelRotation = labelRotation;\n\t\t},\n\t\tafterCalculateTickRotation: function() {\n\t\t\thelpers.callback(this.options.afterCalculateTickRotation, [this]);\n\t\t},\n\n\t\t//\n\n\t\tbeforeFit: function() {\n\t\t\thelpers.callback(this.options.beforeFit, [this]);\n\t\t},\n\t\tfit: function() {\n\t\t\tvar me = this;\n\t\t\t// Reset\n\t\t\tvar minSize = me.minSize = {\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t};\n\n\t\t\tvar labels = labelsFromTicks(me._ticks);\n\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar scaleLabelOpts = opts.scaleLabel;\n\t\t\tvar gridLineOpts = opts.gridLines;\n\t\t\tvar display = opts.display;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\n\t\t\tvar tickFont = parseFontOptions(tickOpts);\n\t\t\tvar tickMarkLength = opts.gridLines.tickMarkLength;\n\n\t\t\t// Width\n\t\t\tif (isHorizontal) {\n\t\t\t\t// subtract the margins to line up with the chartArea if we are a full width scale\n\t\t\t\tminSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth;\n\t\t\t} else {\n\t\t\t\tminSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t\t}\n\n\t\t\t// height\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t\t} else {\n\t\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t\t}\n\n\t\t\t// Are we showing a title for the scale?\n\t\t\tif (scaleLabelOpts.display && display) {\n\t\t\t\tvar scaleLabelLineHeight = parseLineHeight(scaleLabelOpts);\n\t\t\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding);\n\t\t\t\tvar deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height;\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tminSize.height += deltaHeight;\n\t\t\t\t} else {\n\t\t\t\t\tminSize.width += deltaHeight;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Don't bother fitting the ticks if we are not showing them\n\t\t\tif (tickOpts.display && display) {\n\t\t\t\tvar largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache);\n\t\t\t\tvar tallestLabelHeightInLines = helpers.numberOfLabelLines(labels);\n\t\t\t\tvar lineSpace = tickFont.size * 0.5;\n\t\t\t\tvar tickPadding = me.options.ticks.padding;\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\t// A horizontal axis is more constrained by the height.\n\t\t\t\t\tme.longestLabelWidth = largestTextWidth;\n\n\t\t\t\t\tvar angleRadians = helpers.toRadians(me.labelRotation);\n\t\t\t\t\tvar cosRotation = Math.cos(angleRadians);\n\t\t\t\t\tvar sinRotation = Math.sin(angleRadians);\n\n\t\t\t\t\t// TODO - improve this calculation\n\t\t\t\t\tvar labelHeight = (sinRotation * largestTextWidth)\n\t\t\t\t\t\t+ (tickFont.size * tallestLabelHeightInLines)\n\t\t\t\t\t\t+ (lineSpace * (tallestLabelHeightInLines - 1))\n\t\t\t\t\t\t+ lineSpace; // padding\n\n\t\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\n\n\t\t\t\t\tme.ctx.font = tickFont.font;\n\t\t\t\t\tvar firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font);\n\t\t\t\t\tvar lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font);\n\n\t\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n\t\t\t\t\t// which means that the right padding is dominated by the font height\n\t\t\t\t\tif (me.labelRotation !== 0) {\n\t\t\t\t\t\tme.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges\n\t\t\t\t\t\tme.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tme.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges\n\t\t\t\t\t\tme.paddingRight = lastLabelWidth / 2 + 3;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// A vertical axis is more constrained by the width. Labels are the\n\t\t\t\t\t// dominant factor here, so get that length first and account for padding\n\t\t\t\t\tif (tickOpts.mirror) {\n\t\t\t\t\t\tlargestTextWidth = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// use lineSpace for consistency with horizontal axis\n\t\t\t\t\t\t// tickPadding is not implemented for horizontal\n\t\t\t\t\t\tlargestTextWidth += tickPadding + lineSpace;\n\t\t\t\t\t}\n\n\t\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth);\n\n\t\t\t\t\tme.paddingTop = tickFont.size / 2;\n\t\t\t\t\tme.paddingBottom = tickFont.size / 2;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.handleMargins();\n\n\t\t\tme.width = minSize.width;\n\t\t\tme.height = minSize.height;\n\t\t},\n\n\t\t/**\n\t\t * Handle margins and padding interactions\n\t\t * @private\n\t\t */\n\t\thandleMargins: function() {\n\t\t\tvar me = this;\n\t\t\tif (me.margins) {\n\t\t\t\tme.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0);\n\t\t\t\tme.paddingTop = Math.max(me.paddingTop - me.margins.top, 0);\n\t\t\t\tme.paddingRight = Math.max(me.paddingRight - me.margins.right, 0);\n\t\t\t\tme.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0);\n\t\t\t}\n\t\t},\n\n\t\tafterFit: function() {\n\t\t\thelpers.callback(this.options.afterFit, [this]);\n\t\t},\n\n\t\t// Shared Methods\n\t\tisHorizontal: function() {\n\t\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t\t},\n\t\tisFullWidth: function() {\n\t\t\treturn (this.options.fullWidth);\n\t\t},\n\n\t\t// Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not\n\t\tgetRightValue: function(rawValue) {\n\t\t\t// Null and undefined values first\n\t\t\tif (helpers.isNullOrUndef(rawValue)) {\n\t\t\t\treturn NaN;\n\t\t\t}\n\t\t\t// isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\n\t\t\tif (typeof rawValue === 'number' && !isFinite(rawValue)) {\n\t\t\t\treturn NaN;\n\t\t\t}\n\t\t\t// If it is in fact an object, dive in one more level\n\t\t\tif (rawValue) {\n\t\t\t\tif (this.isHorizontal()) {\n\t\t\t\t\tif (rawValue.x !== undefined) {\n\t\t\t\t\t\treturn this.getRightValue(rawValue.x);\n\t\t\t\t\t}\n\t\t\t\t} else if (rawValue.y !== undefined) {\n\t\t\t\t\treturn this.getRightValue(rawValue.y);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Value is good, return it\n\t\t\treturn rawValue;\n\t\t},\n\n\t\t/**\n\t\t * Used to get the value to display in the tooltip for the data at the given index\n\t\t * @param index\n\t\t * @param datasetIndex\n\t\t */\n\t\tgetLabelForIndex: helpers.noop,\n\n\t\t/**\n\t\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t\t * @param value\n\t\t * @param index\n\t\t * @param datasetIndex\n\t\t */\n\t\tgetPixelForValue: helpers.noop,\n\n\t\t/**\n\t\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t\t * @param pixel\n\t\t */\n\t\tgetValueForPixel: helpers.noop,\n\n\t\t/**\n\t\t * Returns the location of the tick at the given index\n\t\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t\t */\n\t\tgetPixelForTick: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar offset = me.options.offset;\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\t\tvar tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n\t\t\t\tvar pixel = (tickWidth * index) + me.paddingLeft;\n\n\t\t\t\tif (offset) {\n\t\t\t\t\tpixel += tickWidth / 2;\n\t\t\t\t}\n\n\t\t\t\tvar finalVal = me.left + Math.round(pixel);\n\t\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\t\treturn finalVal;\n\t\t\t}\n\t\t\tvar innerHeight = me.height - (me.paddingTop + me.paddingBottom);\n\t\t\treturn me.top + (index * (innerHeight / (me._ticks.length - 1)));\n\t\t},\n\n\t\t/**\n\t\t * Utility for getting the pixel location of a percentage of scale\n\t\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t\t */\n\t\tgetPixelForDecimal: function(decimal) {\n\t\t\tvar me = this;\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\t\tvar valueOffset = (innerWidth * decimal) + me.paddingLeft;\n\n\t\t\t\tvar finalVal = me.left + Math.round(valueOffset);\n\t\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\t\treturn finalVal;\n\t\t\t}\n\t\t\treturn me.top + (decimal * me.height);\n\t\t},\n\n\t\t/**\n\t\t * Returns the pixel for the minimum chart value\n\t\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t\t */\n\t\tgetBasePixel: function() {\n\t\t\treturn this.getPixelForValue(this.getBaseValue());\n\t\t},\n\n\t\tgetBaseValue: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\n\t\t\treturn me.beginAtZero ? 0 :\n\t\t\t\tmin < 0 && max < 0 ? max :\n\t\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t\t0;\n\t\t},\n\n\t\t/**\n\t\t * Returns a subset of ticks to be plotted to avoid overlapping labels.\n\t\t * @private\n\t\t */\n\t\t_autoSkip: function(ticks) {\n\t\t\tvar skipRatio;\n\t\t\tvar me = this;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tvar optionTicks = me.options.ticks.minor;\n\t\t\tvar tickCount = ticks.length;\n\t\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\n\t\t\tvar cosRotation = Math.cos(labelRotationRadians);\n\t\t\tvar longestRotatedLabel = me.longestLabelWidth * cosRotation;\n\t\t\tvar result = [];\n\t\t\tvar i, tick, shouldSkip;\n\n\t\t\t// figure out the maximum number of gridlines to show\n\t\t\tvar maxTicks;\n\t\t\tif (optionTicks.maxTicksLimit) {\n\t\t\t\tmaxTicks = optionTicks.maxTicksLimit;\n\t\t\t}\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tskipRatio = false;\n\n\t\t\t\tif ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) {\n\t\t\t\t\tskipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight)));\n\t\t\t\t}\n\n\t\t\t\t// if they defined a max number of optionTicks,\n\t\t\t\t// increase skipRatio until that number is met\n\t\t\t\tif (maxTicks && tickCount > maxTicks) {\n\t\t\t\t\tskipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (i = 0; i < tickCount; i++) {\n\t\t\t\ttick = ticks[i];\n\n\t\t\t\t// Since we always show the last tick,we need may need to hide the last shown one before\n\t\t\t\tshouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount);\n\t\t\t\tif (shouldSkip && i !== tickCount - 1) {\n\t\t\t\t\t// leave tick in place but make sure it's not displayed (#4635)\n\t\t\t\t\tdelete tick.label;\n\t\t\t\t}\n\t\t\t\tresult.push(tick);\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\n\t\t// Actually draw the scale on the canvas\n\t\t// @param {rectangle} chartArea : the area of the chart to draw full grid lines on\n\t\tdraw: function(chartArea) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tif (!options.display) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar context = me.ctx;\n\t\t\tvar globalDefaults = defaults.global;\n\t\t\tvar optionTicks = options.ticks.minor;\n\t\t\tvar optionMajorTicks = options.ticks.major || optionTicks;\n\t\t\tvar gridLines = options.gridLines;\n\t\t\tvar scaleLabel = options.scaleLabel;\n\n\t\t\tvar isRotated = me.labelRotation !== 0;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\n\t\t\tvar ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks();\n\t\t\tvar tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor);\n\t\t\tvar tickFont = parseFontOptions(optionTicks);\n\t\t\tvar majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor);\n\t\t\tvar majorTickFont = parseFontOptions(optionMajorTicks);\n\n\t\t\tvar tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0;\n\n\t\t\tvar scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor);\n\t\t\tvar scaleLabelFont = parseFontOptions(scaleLabel);\n\t\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding);\n\t\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\n\n\t\t\tvar itemsToDraw = [];\n\n\t\t\tvar xTickStart = options.position === 'right' ? me.left : me.right - tl;\n\t\t\tvar xTickEnd = options.position === 'right' ? me.left + tl : me.right;\n\t\t\tvar yTickStart = options.position === 'bottom' ? me.top : me.bottom - tl;\n\t\t\tvar yTickEnd = options.position === 'bottom' ? me.top + tl : me.bottom;\n\n\t\t\thelpers.each(ticks, function(tick, index) {\n\t\t\t\t// autoskipper skipped this tick (#4635)\n\t\t\t\tif (helpers.isNullOrUndef(tick.label)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar label = tick.label;\n\t\t\t\tvar lineWidth, lineColor, borderDash, borderDashOffset;\n\t\t\t\tif (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) {\n\t\t\t\t\t// Draw the first index specially\n\t\t\t\t\tlineWidth = gridLines.zeroLineWidth;\n\t\t\t\t\tlineColor = gridLines.zeroLineColor;\n\t\t\t\t\tborderDash = gridLines.zeroLineBorderDash;\n\t\t\t\t\tborderDashOffset = gridLines.zeroLineBorderDashOffset;\n\t\t\t\t} else {\n\t\t\t\t\tlineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index);\n\t\t\t\t\tlineColor = helpers.valueAtIndexOrDefault(gridLines.color, index);\n\t\t\t\t\tborderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash);\n\t\t\t\t\tborderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset);\n\t\t\t\t}\n\n\t\t\t\t// Common properties\n\t\t\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY;\n\t\t\t\tvar textAlign = 'middle';\n\t\t\t\tvar textBaseline = 'middle';\n\t\t\t\tvar tickPadding = optionTicks.padding;\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tvar labelYOffset = tl + tickPadding;\n\n\t\t\t\t\tif (options.position === 'bottom') {\n\t\t\t\t\t\t// bottom\n\t\t\t\t\t\ttextBaseline = !isRotated ? 'top' : 'middle';\n\t\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'right';\n\t\t\t\t\t\tlabelY = me.top + labelYOffset;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// top\n\t\t\t\t\t\ttextBaseline = !isRotated ? 'bottom' : 'middle';\n\t\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'left';\n\t\t\t\t\t\tlabelY = me.bottom - labelYOffset;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\n\t\t\t\t\tif (xLineValue < me.left) {\n\t\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\n\t\t\t\t\t}\n\t\t\t\t\txLineValue += helpers.aliasPixel(lineWidth);\n\n\t\t\t\t\tlabelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option)\n\n\t\t\t\t\ttx1 = tx2 = x1 = x2 = xLineValue;\n\t\t\t\t\tty1 = yTickStart;\n\t\t\t\t\tty2 = yTickEnd;\n\t\t\t\t\ty1 = chartArea.top;\n\t\t\t\t\ty2 = chartArea.bottom;\n\t\t\t\t} else {\n\t\t\t\t\tvar isLeft = options.position === 'left';\n\t\t\t\t\tvar labelXOffset;\n\n\t\t\t\t\tif (optionTicks.mirror) {\n\t\t\t\t\t\ttextAlign = isLeft ? 'left' : 'right';\n\t\t\t\t\t\tlabelXOffset = tickPadding;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttextAlign = isLeft ? 'right' : 'left';\n\t\t\t\t\t\tlabelXOffset = tl + tickPadding;\n\t\t\t\t\t}\n\n\t\t\t\t\tlabelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset;\n\n\t\t\t\t\tvar yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\n\t\t\t\t\tif (yLineValue < me.top) {\n\t\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\n\t\t\t\t\t}\n\t\t\t\t\tyLineValue += helpers.aliasPixel(lineWidth);\n\n\t\t\t\t\tlabelY = me.getPixelForTick(index) + optionTicks.labelOffset;\n\n\t\t\t\t\ttx1 = xTickStart;\n\t\t\t\t\ttx2 = xTickEnd;\n\t\t\t\t\tx1 = chartArea.left;\n\t\t\t\t\tx2 = chartArea.right;\n\t\t\t\t\tty1 = ty2 = y1 = y2 = yLineValue;\n\t\t\t\t}\n\n\t\t\t\titemsToDraw.push({\n\t\t\t\t\ttx1: tx1,\n\t\t\t\t\tty1: ty1,\n\t\t\t\t\ttx2: tx2,\n\t\t\t\t\tty2: ty2,\n\t\t\t\t\tx1: x1,\n\t\t\t\t\ty1: y1,\n\t\t\t\t\tx2: x2,\n\t\t\t\t\ty2: y2,\n\t\t\t\t\tlabelX: labelX,\n\t\t\t\t\tlabelY: labelY,\n\t\t\t\t\tglWidth: lineWidth,\n\t\t\t\t\tglColor: lineColor,\n\t\t\t\t\tglBorderDash: borderDash,\n\t\t\t\t\tglBorderDashOffset: borderDashOffset,\n\t\t\t\t\trotation: -1 * labelRotationRadians,\n\t\t\t\t\tlabel: label,\n\t\t\t\t\tmajor: tick.major,\n\t\t\t\t\ttextBaseline: textBaseline,\n\t\t\t\t\ttextAlign: textAlign\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// Draw all of the tick labels, tick marks, and grid lines at the correct places\n\t\t\thelpers.each(itemsToDraw, function(itemToDraw) {\n\t\t\t\tif (gridLines.display) {\n\t\t\t\t\tcontext.save();\n\t\t\t\t\tcontext.lineWidth = itemToDraw.glWidth;\n\t\t\t\t\tcontext.strokeStyle = itemToDraw.glColor;\n\t\t\t\t\tif (context.setLineDash) {\n\t\t\t\t\t\tcontext.setLineDash(itemToDraw.glBorderDash);\n\t\t\t\t\t\tcontext.lineDashOffset = itemToDraw.glBorderDashOffset;\n\t\t\t\t\t}\n\n\t\t\t\t\tcontext.beginPath();\n\n\t\t\t\t\tif (gridLines.drawTicks) {\n\t\t\t\t\t\tcontext.moveTo(itemToDraw.tx1, itemToDraw.ty1);\n\t\t\t\t\t\tcontext.lineTo(itemToDraw.tx2, itemToDraw.ty2);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (gridLines.drawOnChartArea) {\n\t\t\t\t\t\tcontext.moveTo(itemToDraw.x1, itemToDraw.y1);\n\t\t\t\t\t\tcontext.lineTo(itemToDraw.x2, itemToDraw.y2);\n\t\t\t\t\t}\n\n\t\t\t\t\tcontext.stroke();\n\t\t\t\t\tcontext.restore();\n\t\t\t\t}\n\n\t\t\t\tif (optionTicks.display) {\n\t\t\t\t\t// Make sure we draw text in the correct color and font\n\t\t\t\t\tcontext.save();\n\t\t\t\t\tcontext.translate(itemToDraw.labelX, itemToDraw.labelY);\n\t\t\t\t\tcontext.rotate(itemToDraw.rotation);\n\t\t\t\t\tcontext.font = itemToDraw.major ? majorTickFont.font : tickFont.font;\n\t\t\t\t\tcontext.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor;\n\t\t\t\t\tcontext.textBaseline = itemToDraw.textBaseline;\n\t\t\t\t\tcontext.textAlign = itemToDraw.textAlign;\n\n\t\t\t\t\tvar label = itemToDraw.label;\n\t\t\t\t\tif (helpers.isArray(label)) {\n\t\t\t\t\t\tfor (var i = 0, y = 0; i < label.length; ++i) {\n\t\t\t\t\t\t\t// We just make sure the multiline element is a string here..\n\t\t\t\t\t\t\tcontext.fillText('' + label[i], 0, y);\n\t\t\t\t\t\t\t// apply same lineSpacing as calculated @ L#320\n\t\t\t\t\t\t\ty += (tickFont.size * 1.5);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.fillText(label, 0, 0);\n\t\t\t\t\t}\n\t\t\t\t\tcontext.restore();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (scaleLabel.display) {\n\t\t\t\t// Draw the scale label\n\t\t\t\tvar scaleLabelX;\n\t\t\t\tvar scaleLabelY;\n\t\t\t\tvar rotation = 0;\n\t\t\t\tvar halfLineHeight = parseLineHeight(scaleLabel) / 2;\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tscaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width\n\t\t\t\t\tscaleLabelY = options.position === 'bottom'\n\t\t\t\t\t\t? me.bottom - halfLineHeight - scaleLabelPadding.bottom\n\t\t\t\t\t\t: me.top + halfLineHeight + scaleLabelPadding.top;\n\t\t\t\t} else {\n\t\t\t\t\tvar isLeft = options.position === 'left';\n\t\t\t\t\tscaleLabelX = isLeft\n\t\t\t\t\t\t? me.left + halfLineHeight + scaleLabelPadding.top\n\t\t\t\t\t\t: me.right - halfLineHeight - scaleLabelPadding.top;\n\t\t\t\t\tscaleLabelY = me.top + ((me.bottom - me.top) / 2);\n\t\t\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\n\t\t\t\t}\n\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.translate(scaleLabelX, scaleLabelY);\n\t\t\t\tcontext.rotate(rotation);\n\t\t\t\tcontext.textAlign = 'center';\n\t\t\t\tcontext.textBaseline = 'middle';\n\t\t\t\tcontext.fillStyle = scaleLabelFontColor; // render in correct colour\n\t\t\t\tcontext.font = scaleLabelFont.font;\n\t\t\t\tcontext.fillText(scaleLabel.labelString, 0, 0);\n\t\t\t\tcontext.restore();\n\t\t\t}\n\n\t\t\tif (gridLines.drawBorder) {\n\t\t\t\t// Draw the line at the edge of the axis\n\t\t\t\tcontext.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0);\n\t\t\t\tcontext.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0);\n\t\t\t\tvar x1 = me.left;\n\t\t\t\tvar x2 = me.right;\n\t\t\t\tvar y1 = me.top;\n\t\t\t\tvar y2 = me.bottom;\n\n\t\t\t\tvar aliasPixel = helpers.aliasPixel(context.lineWidth);\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\ty1 = y2 = options.position === 'top' ? me.bottom : me.top;\n\t\t\t\t\ty1 += aliasPixel;\n\t\t\t\t\ty2 += aliasPixel;\n\t\t\t\t} else {\n\t\t\t\t\tx1 = x2 = options.position === 'left' ? me.right : me.left;\n\t\t\t\t\tx1 += aliasPixel;\n\t\t\t\t\tx2 += aliasPixel;\n\t\t\t\t}\n\n\t\t\t\tcontext.beginPath();\n\t\t\t\tcontext.moveTo(x1, y1);\n\t\t\t\tcontext.lineTo(x2, y2);\n\t\t\t\tcontext.stroke();\n\t\t\t}\n\t\t}\n\t});\n};\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': '১',\n '2': '২',\n '3': '৩',\n '4': '৪',\n '5': '৫',\n '6': '৬',\n '7': '৭',\n '8': '৮',\n '9': '৯',\n '0': '০'\n};\nvar numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0'\n};\n\nvar bn = moment.defineLocale('bn', {\n months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),\n monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),\n weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),\n weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),\n longDateFormat : {\n LT : 'A h:mm সময়',\n LTS : 'A h:mm:ss সময়',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm সময়',\n LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'\n },\n calendar : {\n sameDay : '[আজ] LT',\n nextDay : '[আগামীকাল] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[গতকাল] LT',\n lastWeek : '[গত] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s পরে',\n past : '%s আগে',\n s : 'কয়েক সেকেন্ড',\n m : 'এক মিনিট',\n mm : '%d মিনিট',\n h : 'এক ঘন্টা',\n hh : '%d ঘন্টা',\n d : 'এক দিন',\n dd : '%d দিন',\n M : 'এক মাস',\n MM : '%d মাস',\n y : 'এক বছর',\n yy : '%d বছর'\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if ((meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddineme\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar arDz = moment.defineLocale('ar-dz', {\n months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 4 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n}\nfunction relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n 'dd': 'дзень_дні_дзён',\n 'MM': 'месяц_месяцы_месяцаў',\n 'yy': 'год_гады_гадоў'\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n }\n else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n }\n else {\n return number + ' ' + plural(format[key], +number);\n }\n}\n\nvar be = moment.defineLocale('be', {\n months : {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')\n },\n monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays : {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),\n isFormat: /\\[ ?[Вв] ?(?:мінулую|наступную)? ?\\] ?dddd/\n },\n weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY г.',\n LLL : 'D MMMM YYYY г., HH:mm',\n LLLL : 'dddd, D MMMM YYYY г., HH:mm'\n },\n calendar : {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'праз %s',\n past : '%s таму',\n s : 'некалькі секунд',\n m : relativeTimeWithPlural,\n mm : relativeTimeWithPlural,\n h : relativeTimeWithPlural,\n hh : relativeTimeWithPlural,\n d : 'дзень',\n dd : relativeTimeWithPlural,\n M : 'месяц',\n MM : relativeTimeWithPlural,\n y : 'год',\n yy : relativeTimeWithPlural\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM : function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_');\nvar monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\nfunction plural(n) {\n return (n > 1) && (n < 5);\n}\nfunction translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n break;\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n break;\n case 'd': // a day / in a day / a day ago\n return (withoutSuffix || isFuture) ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n break;\n case 'M': // a month / in a month / a month ago\n return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n break;\n case 'y': // a year / in a year / a year ago\n return (withoutSuffix || isFuture) ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n break;\n }\n}\n\nvar sk = moment.defineLocale('sk', {\n months : months,\n monthsShort : monthsShort,\n weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat : {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'pred %s',\n s : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar sw = moment.defineLocale('sw', {\n months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),\n weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[leo saa] LT',\n nextDay : '[kesho saa] LT',\n nextWeek : '[wiki ijayo] dddd [saat] LT',\n lastDay : '[jana] LT',\n lastWeek : '[wiki iliyopita] dddd [saat] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s baadaye',\n past : 'tokea %s',\n s : 'hivi punde',\n m : 'dakika moja',\n mm : 'dakika %d',\n h : 'saa limoja',\n hh : 'masaa %d',\n d : 'siku moja',\n dd : 'masiku %d',\n M : 'mwezi mmoja',\n MM : 'miezi %d',\n y : 'mwaka mmoja',\n yy : 'miaka %d'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠'\n};\nvar numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n};\nvar pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n};\nvar plurals = {\n s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n};\nvar pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n};\nvar months = [\n 'كانون الثاني يناير',\n 'شباط فبراير',\n 'آذار مارس',\n 'نيسان أبريل',\n 'أيار مايو',\n 'حزيران يونيو',\n 'تموز يوليو',\n 'آب أغسطس',\n 'أيلول سبتمبر',\n 'تشرين الأول أكتوبر',\n 'تشرين الثاني نوفمبر',\n 'كانون الأول ديسمبر'\n];\n\nvar ar = moment.defineLocale('ar', {\n months : months,\n monthsShort : months,\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'D/\\u200FM/\\u200FYYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM : function (input) {\n return 'م' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar : {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'بعد %s',\n past : 'منذ %s',\n s : pluralize('s'),\n m : pluralize('m'),\n mm : pluralize('m'),\n h : pluralize('h'),\n hh : pluralize('h'),\n d : pluralize('d'),\n dd : pluralize('d'),\n M : pluralize('M'),\n MM : pluralize('M'),\n y : pluralize('y'),\n yy : pluralize('y')\n },\n preparse: function (string) {\n return string.replace(/\\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact : true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS : 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed\n 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar ja = moment.defineLocale('ja', {\n months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort : '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin : '日_月_火_水_木_金_土'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY年M月D日',\n LLL : 'YYYY年M月D日 HH:mm',\n LLLL : 'YYYY年M月D日 HH:mm dddd',\n l : 'YYYY/MM/DD',\n ll : 'YYYY年M月D日',\n lll : 'YYYY年M月D日 HH:mm',\n llll : 'YYYY年M月D日 HH:mm dddd'\n },\n meridiemParse: /午前|午後/i,\n isPM : function (input) {\n return input === '午後';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar : {\n sameDay : '[今日] LT',\n nextDay : '[明日] LT',\n nextWeek : '[来週]dddd LT',\n lastDay : '[昨日] LT',\n lastWeek : '[前週]dddd LT',\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}日/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime : {\n future : '%s後',\n past : '%s前',\n s : '数秒',\n m : '1分',\n mm : '%d分',\n h : '1時間',\n hh : '%d時間',\n d : '1日',\n dd : '%d日',\n M : '1ヶ月',\n MM : '%dヶ月',\n y : '1年',\n yy : '%d年'\n }\n});\n\nreturn ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar bg = moment.defineLocale('bg', {\n months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),\n monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),\n weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'D.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY H:mm',\n LLLL : 'dddd, D MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[Днес в] LT',\n nextDay : '[Утре в] LT',\n nextWeek : 'dddd [в] LT',\n lastDay : '[Вчера в] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[В изминалата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[В изминалия] dddd [в] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'след %s',\n past : 'преди %s',\n s : 'няколко секунди',\n m : 'минута',\n mm : '%d минути',\n h : 'час',\n hh : '%d часа',\n d : 'ден',\n dd : '%d дни',\n M : 'месец',\n MM : '%d месеца',\n y : 'година',\n yy : '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal : function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު'\n];\nvar weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު'\n];\n\nvar dv = moment.defineLocale('dv', {\n months : months,\n monthsShort : months,\n weekdays : weekdays,\n weekdaysShort : weekdays,\n weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat : {\n\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'D/M/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /މކ|މފ/,\n isPM : function (input) {\n return 'މފ' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar : {\n sameDay : '[މިއަދު] LT',\n nextDay : '[މާދަމާ] LT',\n nextWeek : 'dddd LT',\n lastDay : '[އިއްޔެ] LT',\n lastWeek : '[ފާއިތުވި] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ތެރޭގައި %s',\n past : 'ކުރިން %s',\n s : 'ސިކުންތުކޮޅެއް',\n m : 'މިނިޓެއް',\n mm : 'މިނިޓު %d',\n h : 'ގަޑިއިރެއް',\n hh : 'ގަޑިއިރު %d',\n d : 'ދުވަހެއް',\n dd : 'ދުވަސް %d',\n M : 'މަހެއް',\n MM : 'މަސް %d',\n y : 'އަހަރެއް',\n yy : 'އަހަރު %d'\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week : {\n dow : 7, // Sunday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar af = moment.defineLocale('af', {\n months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),\n monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),\n weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM : function (input) {\n return /^nm$/i.test(input);\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Vandag om] LT',\n nextDay : '[Môre om] LT',\n nextWeek : 'dddd [om] LT',\n lastDay : '[Gister om] LT',\n lastWeek : '[Laas] dddd [om] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'oor %s',\n past : '%s gelede',\n s : '\\'n paar sekondes',\n m : '\\'n minuut',\n mm : '%d minute',\n h : '\\'n uur',\n hh : '%d ure',\n d : '\\'n dag',\n dd : '%d dae',\n M : '\\'n maand',\n MM : '%d maande',\n y : '\\'n jaar',\n yy : '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week : {\n dow : 1, // Maandag is die eerste dag van die week.\n doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n }\n});\n\nreturn af;\n\n})));\n","'use strict';\n\nvar helpers = require('../helpers/index');\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nmodule.exports = {\n\t/**\n\t * Namespace to hold generators for different types of ticks\n\t * @namespace Chart.Ticks.generators\n\t */\n\tgenerators: {\n\t\t/**\n\t\t * Interface for the options provided to the numeric tick generator\n\t\t * @interface INumericTickGenerationOptions\n\t\t */\n\t\t/**\n\t\t * The maximum number of ticks to display\n\t\t * @name INumericTickGenerationOptions#maxTicks\n\t\t * @type Number\n\t\t */\n\t\t/**\n\t\t * The distance between each tick.\n\t\t * @name INumericTickGenerationOptions#stepSize\n\t\t * @type Number\n\t\t * @optional\n\t\t */\n\t\t/**\n\t\t * Forced minimum for the ticks. If not specified, the minimum of the data range is used to calculate the tick minimum\n\t\t * @name INumericTickGenerationOptions#min\n\t\t * @type Number\n\t\t * @optional\n\t\t */\n\t\t/**\n\t\t * The maximum value of the ticks. If not specified, the maximum of the data range is used to calculate the tick maximum\n\t\t * @name INumericTickGenerationOptions#max\n\t\t * @type Number\n\t\t * @optional\n\t\t */\n\n\t\t/**\n\t\t * Generate a set of linear ticks\n\t\t * @method Chart.Ticks.generators.linear\n\t\t * @param generationOptions {INumericTickGenerationOptions} the options used to generate the ticks\n\t\t * @param dataRange {IRange} the range of the data\n\t\t * @returns {Array} array of tick values\n\t\t */\n\t\tlinear: function(generationOptions, dataRange) {\n\t\t\tvar ticks = [];\n\t\t\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\n\t\t\t// \"nice number\" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n\t\t\t// for details.\n\n\t\t\tvar spacing;\n\t\t\tif (generationOptions.stepSize && generationOptions.stepSize > 0) {\n\t\t\t\tspacing = generationOptions.stepSize;\n\t\t\t} else {\n\t\t\t\tvar niceRange = helpers.niceNum(dataRange.max - dataRange.min, false);\n\t\t\t\tspacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true);\n\t\t\t}\n\t\t\tvar niceMin = Math.floor(dataRange.min / spacing) * spacing;\n\t\t\tvar niceMax = Math.ceil(dataRange.max / spacing) * spacing;\n\n\t\t\t// If min, max and stepSize is set and they make an evenly spaced scale use it.\n\t\t\tif (generationOptions.min && generationOptions.max && generationOptions.stepSize) {\n\t\t\t\t// If very close to our whole number, use it.\n\t\t\t\tif (helpers.almostWhole((generationOptions.max - generationOptions.min) / generationOptions.stepSize, spacing / 1000)) {\n\t\t\t\t\tniceMin = generationOptions.min;\n\t\t\t\t\tniceMax = generationOptions.max;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar numSpaces = (niceMax - niceMin) / spacing;\n\t\t\t// If very close to our rounded value, use it.\n\t\t\tif (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n\t\t\t\tnumSpaces = Math.round(numSpaces);\n\t\t\t} else {\n\t\t\t\tnumSpaces = Math.ceil(numSpaces);\n\t\t\t}\n\n\t\t\t// Put the values into the ticks array\n\t\t\tticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin);\n\t\t\tfor (var j = 1; j < numSpaces; ++j) {\n\t\t\t\tticks.push(niceMin + (j * spacing));\n\t\t\t}\n\t\t\tticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax);\n\n\t\t\treturn ticks;\n\t\t},\n\n\t\t/**\n\t\t * Generate a set of logarithmic ticks\n\t\t * @method Chart.Ticks.generators.logarithmic\n\t\t * @param generationOptions {INumericTickGenerationOptions} the options used to generate the ticks\n\t\t * @param dataRange {IRange} the range of the data\n\t\t * @returns {Array} array of tick values\n\t\t */\n\t\tlogarithmic: function(generationOptions, dataRange) {\n\t\t\tvar ticks = [];\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\n\t\t\t// Figure out what the max number of ticks we can support it is based on the size of\n\t\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n\t\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t\t\t// the graph\n\t\t\tvar tickVal = valueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min))));\n\n\t\t\tvar endExp = Math.floor(helpers.log10(dataRange.max));\n\t\t\tvar endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n\t\t\tvar exp, significand;\n\n\t\t\tif (tickVal === 0) {\n\t\t\t\texp = Math.floor(helpers.log10(dataRange.minNotZero));\n\t\t\t\tsignificand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\n\n\t\t\t\tticks.push(tickVal);\n\t\t\t\ttickVal = significand * Math.pow(10, exp);\n\t\t\t} else {\n\t\t\t\texp = Math.floor(helpers.log10(tickVal));\n\t\t\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp));\n\t\t\t}\n\n\t\t\tdo {\n\t\t\t\tticks.push(tickVal);\n\n\t\t\t\t++significand;\n\t\t\t\tif (significand === 10) {\n\t\t\t\t\tsignificand = 1;\n\t\t\t\t\t++exp;\n\t\t\t\t}\n\n\t\t\t\ttickVal = significand * Math.pow(10, exp);\n\t\t\t} while (exp < endExp || (exp === endExp && significand < endSignificand));\n\n\t\t\tvar lastTick = valueOrDefault(generationOptions.max, tickVal);\n\t\t\tticks.push(lastTick);\n\n\t\t\treturn ticks;\n\t\t}\n\t},\n\n\t/**\n\t * Namespace to hold formatters for different types of ticks\n\t * @namespace Chart.Ticks.formatters\n\t */\n\tformatters: {\n\t\t/**\n\t\t * Formatter for value labels\n\t\t * @method Chart.Ticks.formatters.values\n\t\t * @param value the value to display\n\t\t * @return {String|Array} the label to display\n\t\t */\n\t\tvalues: function(value) {\n\t\t\treturn helpers.isArray(value) ? value : '' + value;\n\t\t},\n\n\t\t/**\n\t\t * Formatter for linear numeric ticks\n\t\t * @method Chart.Ticks.formatters.linear\n\t\t * @param tickValue {Number} the value to be formatted\n\t\t * @param index {Number} the position of the tickValue parameter in the ticks array\n\t\t * @param ticks {Array} the list of ticks being converted\n\t\t * @return {String} string representation of the tickValue parameter\n\t\t */\n\t\tlinear: function(tickValue, index, ticks) {\n\t\t\t// If we have lots of ticks, don't use the ones\n\t\t\tvar delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\n\n\t\t\t// If we have a number like 2.5 as the delta, figure out how many decimal places we need\n\t\t\tif (Math.abs(delta) > 1) {\n\t\t\t\tif (tickValue !== Math.floor(tickValue)) {\n\t\t\t\t\t// not an integer\n\t\t\t\t\tdelta = tickValue - Math.floor(tickValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar logDelta = helpers.log10(Math.abs(delta));\n\t\t\tvar tickString = '';\n\n\t\t\tif (tickValue !== 0) {\n\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\n\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\n\t\t\t\ttickString = tickValue.toFixed(numDecimal);\n\t\t\t} else {\n\t\t\t\ttickString = '0'; // never show decimal places for 0\n\t\t\t}\n\n\t\t\treturn tickString;\n\t\t},\n\n\t\tlogarithmic: function(tickValue, index, ticks) {\n\t\t\tvar remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue))));\n\n\t\t\tif (tickValue === 0) {\n\t\t\t\treturn '0';\n\t\t\t} else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\n\t\t\t\treturn tickValue.toExponential();\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\t}\n};\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\nfunction translateFuture(output) {\n var time = output;\n time = (output.indexOf('jaj') !== -1) ?\n time.slice(0, -3) + 'leS' :\n (output.indexOf('jar') !== -1) ?\n time.slice(0, -3) + 'waQ' :\n (output.indexOf('DIS') !== -1) ?\n time.slice(0, -3) + 'nem' :\n time + ' pIq';\n return time;\n}\n\nfunction translatePast(output) {\n var time = output;\n time = (output.indexOf('jaj') !== -1) ?\n time.slice(0, -3) + 'Hu’' :\n (output.indexOf('jar') !== -1) ?\n time.slice(0, -3) + 'wen' :\n (output.indexOf('DIS') !== -1) ?\n time.slice(0, -3) + 'ben' :\n time + ' ret';\n return time;\n}\n\nfunction translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n}\n\nfunction numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += ((word !== '') ? ' ' : '') + numbersNouns[one];\n }\n return (word === '') ? 'pagh' : word;\n}\n\nvar tlh = moment.defineLocale('tlh', {\n months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),\n monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),\n monthsParseExact : true,\n weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L'\n },\n relativeTime : {\n future : translateFuture,\n past : translatePast,\n s : 'puS lup',\n m : 'wa’ tup',\n mm : translate,\n h : 'wa’ rep',\n hh : translate,\n d : 'wa’ jaj',\n dd : translate,\n M : 'wa’ jar',\n MM : translate,\n y : 'wa’ DIS',\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar zhCn = moment.defineLocale('zh-cn', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY年MMMD日',\n LL : 'YYYY年MMMD日',\n LLL : 'YYYY年MMMD日Ah点mm分',\n LLLL : 'YYYY年MMMD日ddddAh点mm分',\n l : 'YYYY年MMMD日',\n ll : 'YYYY年MMMD日',\n lll : 'YYYY年MMMD日 HH:mm',\n llll : 'YYYY年MMMD日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' ||\n meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar : {\n sameDay : '[今天]LT',\n nextDay : '[明天]LT',\n nextWeek : '[下]ddddLT',\n lastDay : '[昨天]LT',\n lastWeek : '[上]ddddLT',\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime : {\n future : '%s内',\n past : '%s前',\n s : '几秒',\n m : '1 分钟',\n mm : '%d 分钟',\n h : '1 小时',\n hh : '%d 小时',\n d : '1 天',\n dd : '%d 天',\n M : '1 个月',\n MM : '%d 个月',\n y : '1 年',\n yy : '%d 年'\n },\n week : {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar translator = {\n words: { //Different grammatical cases\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n};\n\nvar sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[juče u] LT',\n lastWeek : function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT'\n ];\n return lastWeekDays[this.day()];\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'pre %s',\n s : 'nekoliko sekundi',\n m : translator.translate,\n mm : translator.translate,\n h : translator.translate,\n hh : translator.translate,\n d : 'dan',\n dd : translator.translate,\n M : 'mesec',\n MM : translator.translate,\n y : 'godinu',\n yy : translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar th = moment.defineLocale('th', {\n months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n monthsParseExact: true,\n weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY เวลา H:mm',\n LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm'\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar : {\n sameDay : '[วันนี้ เวลา] LT',\n nextDay : '[พรุ่งนี้ เวลา] LT',\n nextWeek : 'dddd[หน้า เวลา] LT',\n lastDay : '[เมื่อวานนี้ เวลา] LT',\n lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'อีก %s',\n past : '%sที่แล้ว',\n s : 'ไม่กี่วินาที',\n m : '1 นาที',\n mm : '%d นาที',\n h : '1 ชั่วโมง',\n hh : '%d ชั่วโมง',\n d : '1 วัน',\n dd : '%d วัน',\n M : '1 เดือน',\n MM : '%d เดือน',\n y : '1 ปี',\n yy : '%d ปี'\n }\n});\n\nreturn th;\n\n})));\n","'use strict';\n\nvar helpers = require('../helpers/index');\nvar basic = require('./platform.basic');\nvar dom = require('./platform.dom');\n\n// @TODO Make possible to select another platform at build time.\nvar implementation = dom._enabled ? dom : basic;\n\n/**\n * @namespace Chart.platform\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\n * @since 2.4.0\n */\nmodule.exports = helpers.extend({\n\t/**\n\t * @since 2.7.0\n\t */\n\tinitialize: function() {},\n\n\t/**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {*} item - The native item from which to acquire context (platform specific)\n\t * @param {Object} options - The chart options\n\t * @returns {CanvasRenderingContext2D} context2d instance\n\t */\n\tacquireContext: function() {},\n\n\t/**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {Boolean} true if the method succeeded, else false\n\t */\n\treleaseContext: function() {},\n\n\t/**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {String} type - The ({@link IEvent}) type to listen for\n\t * @param {Function} listener - Receives a notification (an object that implements\n\t * the {@link IEvent} interface) when an event of the specified type occurs.\n\t */\n\taddEventListener: function() {},\n\n\t/**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart -Chart from which to remove the listener\n\t * @param {String} type - The ({@link IEvent}) type to remove\n\t * @param {Function} listener - The listener function to remove from the event target.\n\t */\n\tremoveEventListener: function() {}\n\n}, implementation);\n\n/**\n * @interface IPlatform\n * Allows abstracting platform dependencies away from the chart\n * @borrows Chart.platform.acquireContext as acquireContext\n * @borrows Chart.platform.releaseContext as releaseContext\n * @borrows Chart.platform.addEventListener as addEventListener\n * @borrows Chart.platform.removeEventListener as removeEventListener\n */\n\n/**\n * @interface IEvent\n * @prop {String} type - The event type name, possible values are:\n * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout',\n * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize'\n * @prop {*} native - The original native event (null for emulated events, e.g. 'resize')\n * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events)\n * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events)\n */\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Radar = function(context, config) {\n\t\tconfig.type = 'radar';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [number + ' Tage', number + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [number + ' Monate', number + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n}\n\nvar de = moment.defineLocale('de', {\n months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime : {\n future : 'in %s',\n past : 'vor %s',\n s : 'ein paar Sekunden',\n m : processRelativeTime,\n mm : '%d Minuten',\n h : processRelativeTime,\n hh : '%d Stunden',\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar mk = moment.defineLocale('mk', {\n months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),\n monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),\n weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'D.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY H:mm',\n LLLL : 'dddd, D MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[Денес во] LT',\n nextDay : '[Утре во] LT',\n nextWeek : '[Во] dddd [во] LT',\n lastDay : '[Вчера во] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'после %s',\n past : 'пред %s',\n s : 'неколку секунди',\n m : 'минута',\n mm : '%d минути',\n h : 'час',\n hh : '%d часа',\n d : 'ден',\n dd : '%d дена',\n M : 'месец',\n MM : '%d месеци',\n y : 'година',\n yy : '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal : function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar arKw = moment.defineLocale('ar-kw', {\n months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar xPseudo = moment.defineLocale('x-pseudo', {\n months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),\n monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),\n monthsParseExact : true,\n weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),\n weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[T~ódá~ý át] LT',\n nextDay : '[T~ómó~rró~w át] LT',\n nextWeek : 'dddd [át] LT',\n lastDay : '[Ý~ést~érdá~ý át] LT',\n lastWeek : '[L~ást] dddd [át] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'í~ñ %s',\n past : '%s á~gó',\n s : 'á ~féw ~sécó~ñds',\n m : 'á ~míñ~úté',\n mm : '%d m~íñú~tés',\n h : 'á~ñ hó~úr',\n hh : '%d h~óúrs',\n d : 'á ~dáý',\n dd : '%d d~áýs',\n M : 'á ~móñ~th',\n MM : '%d m~óñt~hs',\n y : 'á ~ýéár',\n yy : '%d ý~éárs'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');\nvar monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\nvar monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\nvar monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\nvar nlBe = moment.defineLocale('nl-be', {\n months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n\n weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'over %s',\n past : '%s geleden',\n s : 'een paar seconden',\n m : 'één minuut',\n mm : '%d minuten',\n h : 'één uur',\n hh : '%d uur',\n d : 'één dag',\n dd : '%d dagen',\n M : 'één maand',\n MM : '%d maanden',\n y : 'één jaar',\n yy : '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\nfunction translate(number, withoutSuffix, key, isFuture) {\n var num = number,\n suffix;\n switch (key) {\n case 's':\n return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n}\nfunction week(isFuture) {\n return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';\n}\n\nvar hu = moment.defineLocale('hu', {\n months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),\n weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'YYYY.MM.DD.',\n LL : 'YYYY. MMMM D.',\n LLL : 'YYYY. MMMM D. H:mm',\n LLLL : 'YYYY. MMMM D., dddd H:mm'\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar : {\n sameDay : '[ma] LT[-kor]',\n nextDay : '[holnap] LT[-kor]',\n nextWeek : function () {\n return week.call(this, true);\n },\n lastDay : '[tegnap] LT[-kor]',\n lastWeek : function () {\n return week.call(this, false);\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s múlva',\n past : '%s',\n s : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn hu;\n\n})));\n","/* MIT license */\nvar colorNames = require('color-name');\n\nmodule.exports = {\n getRgba: getRgba,\n getHsla: getHsla,\n getRgb: getRgb,\n getHsl: getHsl,\n getHwb: getHwb,\n getAlpha: getAlpha,\n\n hexString: hexString,\n rgbString: rgbString,\n rgbaString: rgbaString,\n percentString: percentString,\n percentaString: percentaString,\n hslString: hslString,\n hslaString: hslaString,\n hwbString: hwbString,\n keyword: keyword\n}\n\nfunction getRgba(string) {\n if (!string) {\n return;\n }\n var abbr = /^#([a-fA-F0-9]{3})$/i,\n hex = /^#([a-fA-F0-9]{6})$/i,\n rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n keyword = /(\\w+)/;\n\n var rgb = [0, 0, 0],\n a = 1,\n match = string.match(abbr);\n if (match) {\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n }\n else if (match = string.match(hex)) {\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n }\n }\n else if (match = string.match(rgba)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i + 1]);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(per)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(keyword)) {\n if (match[1] == \"transparent\") {\n return [0, 0, 0, 0];\n }\n rgb = colorNames[match[1]];\n if (!rgb) {\n return;\n }\n }\n\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = scale(rgb[i], 0, 255);\n }\n if (!a && a != 0) {\n a = 1;\n }\n else {\n a = scale(a, 0, 1);\n }\n rgb[3] = a;\n return rgb;\n}\n\nfunction getHsla(string) {\n if (!string) {\n return;\n }\n var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hsl);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n s = scale(parseFloat(match[2]), 0, 100),\n l = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, s, l, a];\n }\n}\n\nfunction getHwb(string) {\n if (!string) {\n return;\n }\n var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hwb);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n w = scale(parseFloat(match[2]), 0, 100),\n b = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, w, b, a];\n }\n}\n\nfunction getRgb(string) {\n var rgba = getRgba(string);\n return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n var hsla = getHsla(string);\n return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n var vals = getRgba(string);\n if (vals) {\n return vals[3];\n }\n else if (vals = getHsla(string)) {\n return vals[3];\n }\n else if (vals = getHwb(string)) {\n return vals[3];\n }\n}\n\n// generators\nfunction hexString(rgb) {\n return \"#\" + hexDouble(rgb[0]) + hexDouble(rgb[1])\n + hexDouble(rgb[2]);\n}\n\nfunction rgbString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return rgbaString(rgba, alpha);\n }\n return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n if (alpha === undefined) {\n alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n }\n return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return percentaString(rgba, alpha);\n }\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n\n return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n return hslaString(hsla, alpha);\n }\n return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n if (alpha === undefined) {\n alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n }\n return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n if (alpha === undefined) {\n alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n }\n return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n var str = num.toString(16).toUpperCase();\n return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorNames) {\n reverseNames[colorNames[name]] = name;\n}\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\ttitle: {\n\t\tdisplay: false,\n\t\tfontStyle: 'bold',\n\t\tfullWidth: true,\n\t\tlineHeight: 1.2,\n\t\tpadding: 10,\n\t\tposition: 'top',\n\t\ttext: '',\n\t\tweight: 2000 // by default greater than legend (1000) to be above\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tvar layout = Chart.layoutService;\n\tvar noop = helpers.noop;\n\n\tChart.Title = Element.extend({\n\t\tinitialize: function(config) {\n\t\t\tvar me = this;\n\t\t\thelpers.extend(me, config);\n\n\t\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\t\tme.legendHitBoxes = [];\n\t\t},\n\n\t\t// These methods are ordered by lifecycle. Utilities then follow.\n\n\t\tbeforeUpdate: noop,\n\t\tupdate: function(maxWidth, maxHeight, margins) {\n\t\t\tvar me = this;\n\n\t\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\t\tme.beforeUpdate();\n\n\t\t\t// Absorb the master measurements\n\t\t\tme.maxWidth = maxWidth;\n\t\t\tme.maxHeight = maxHeight;\n\t\t\tme.margins = margins;\n\n\t\t\t// Dimensions\n\t\t\tme.beforeSetDimensions();\n\t\t\tme.setDimensions();\n\t\t\tme.afterSetDimensions();\n\t\t\t// Labels\n\t\t\tme.beforeBuildLabels();\n\t\t\tme.buildLabels();\n\t\t\tme.afterBuildLabels();\n\n\t\t\t// Fit\n\t\t\tme.beforeFit();\n\t\t\tme.fit();\n\t\t\tme.afterFit();\n\t\t\t//\n\t\t\tme.afterUpdate();\n\n\t\t\treturn me.minSize;\n\n\t\t},\n\t\tafterUpdate: noop,\n\n\t\t//\n\n\t\tbeforeSetDimensions: noop,\n\t\tsetDimensions: function() {\n\t\t\tvar me = this;\n\t\t\t// Set the unconstrained dimension before label rotation\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\t// Reset position before calculating rotation\n\t\t\t\tme.width = me.maxWidth;\n\t\t\t\tme.left = 0;\n\t\t\t\tme.right = me.width;\n\t\t\t} else {\n\t\t\t\tme.height = me.maxHeight;\n\n\t\t\t\t// Reset position before calculating rotation\n\t\t\t\tme.top = 0;\n\t\t\t\tme.bottom = me.height;\n\t\t\t}\n\n\t\t\t// Reset padding\n\t\t\tme.paddingLeft = 0;\n\t\t\tme.paddingTop = 0;\n\t\t\tme.paddingRight = 0;\n\t\t\tme.paddingBottom = 0;\n\n\t\t\t// Reset minSize\n\t\t\tme.minSize = {\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t};\n\t\t},\n\t\tafterSetDimensions: noop,\n\n\t\t//\n\n\t\tbeforeBuildLabels: noop,\n\t\tbuildLabels: noop,\n\t\tafterBuildLabels: noop,\n\n\t\t//\n\n\t\tbeforeFit: noop,\n\t\tfit: function() {\n\t\t\tvar me = this;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\t\tvar opts = me.options;\n\t\t\tvar display = opts.display;\n\t\t\tvar fontSize = valueOrDefault(opts.fontSize, defaults.global.defaultFontSize);\n\t\t\tvar minSize = me.minSize;\n\t\t\tvar lineCount = helpers.isArray(opts.text) ? opts.text.length : 1;\n\t\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\n\t\t\tvar textSize = display ? (lineCount * lineHeight) + (opts.padding * 2) : 0;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\t\tminSize.height = textSize;\n\t\t\t} else {\n\t\t\t\tminSize.width = textSize;\n\t\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t\t}\n\n\t\t\tme.width = minSize.width;\n\t\t\tme.height = minSize.height;\n\n\t\t},\n\t\tafterFit: noop,\n\n\t\t// Shared Methods\n\t\tisHorizontal: function() {\n\t\t\tvar pos = this.options.position;\n\t\t\treturn pos === 'top' || pos === 'bottom';\n\t\t},\n\n\t\t// Actually draw the title block on the canvas\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar ctx = me.ctx;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\t\tvar opts = me.options;\n\t\t\tvar globalDefaults = defaults.global;\n\n\t\t\tif (opts.display) {\n\t\t\t\tvar fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize);\n\t\t\t\tvar fontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\t\tvar fontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\t\tvar titleFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\t\t\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\n\t\t\t\tvar offset = lineHeight / 2 + opts.padding;\n\t\t\t\tvar rotation = 0;\n\t\t\t\tvar top = me.top;\n\t\t\t\tvar left = me.left;\n\t\t\t\tvar bottom = me.bottom;\n\t\t\t\tvar right = me.right;\n\t\t\t\tvar maxWidth, titleX, titleY;\n\n\t\t\t\tctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour\n\t\t\t\tctx.font = titleFont;\n\n\t\t\t\t// Horizontal\n\t\t\t\tif (me.isHorizontal()) {\n\t\t\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\n\t\t\t\t\ttitleY = top + offset;\n\t\t\t\t\tmaxWidth = right - left;\n\t\t\t\t} else {\n\t\t\t\t\ttitleX = opts.position === 'left' ? left + offset : right - offset;\n\t\t\t\t\ttitleY = top + ((bottom - top) / 2);\n\t\t\t\t\tmaxWidth = bottom - top;\n\t\t\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\n\t\t\t\t}\n\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(titleX, titleY);\n\t\t\t\tctx.rotate(rotation);\n\t\t\t\tctx.textAlign = 'center';\n\t\t\t\tctx.textBaseline = 'middle';\n\n\t\t\t\tvar text = opts.text;\n\t\t\t\tif (helpers.isArray(text)) {\n\t\t\t\t\tvar y = 0;\n\t\t\t\t\tfor (var i = 0; i < text.length; ++i) {\n\t\t\t\t\t\tctx.fillText(text[i], 0, y, maxWidth);\n\t\t\t\t\t\ty += lineHeight;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tctx.fillText(text, 0, 0, maxWidth);\n\t\t\t\t}\n\n\t\t\t\tctx.restore();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction createNewTitleBlockAndAttach(chart, titleOpts) {\n\t\tvar title = new Chart.Title({\n\t\t\tctx: chart.ctx,\n\t\t\toptions: titleOpts,\n\t\t\tchart: chart\n\t\t});\n\n\t\tlayout.configure(chart, title, titleOpts);\n\t\tlayout.addBox(chart, title);\n\t\tchart.titleBlock = title;\n\t}\n\n\treturn {\n\t\tid: 'title',\n\n\t\tbeforeInit: function(chart) {\n\t\t\tvar titleOpts = chart.options.title;\n\n\t\t\tif (titleOpts) {\n\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t\t}\n\t\t},\n\n\t\tbeforeUpdate: function(chart) {\n\t\t\tvar titleOpts = chart.options.title;\n\t\t\tvar titleBlock = chart.titleBlock;\n\n\t\t\tif (titleOpts) {\n\t\t\t\thelpers.mergeIf(titleOpts, defaults.global.title);\n\n\t\t\t\tif (titleBlock) {\n\t\t\t\t\tlayout.configure(chart, titleBlock, titleOpts);\n\t\t\t\t\ttitleBlock.options = titleOpts;\n\t\t\t\t} else {\n\t\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t\t\t}\n\t\t\t} else if (titleBlock) {\n\t\t\t\tChart.layoutService.removeBox(chart, titleBlock);\n\t\t\t\tdelete chart.titleBlock;\n\t\t\t}\n\t\t}\n\t};\n};\n","'use strict';\n\nvar helpers = require('../helpers/index');\n\n/**\n * Helper function to get relative position for an event\n * @param {Event|IEvent} event - The event to get the position for\n * @param {Chart} chart - The chart\n * @returns {Point} the event position\n */\nfunction getRelativePosition(e, chart) {\n\tif (e.native) {\n\t\treturn {\n\t\t\tx: e.x,\n\t\t\ty: e.y\n\t\t};\n\t}\n\n\treturn helpers.getRelativePosition(e, chart);\n}\n\n/**\n * Helper function to traverse all of the visible elements in the chart\n * @param chart {chart} the chart\n * @param handler {Function} the callback to execute for each visible item\n */\nfunction parseVisibleItems(chart, handler) {\n\tvar datasets = chart.data.datasets;\n\tvar meta, i, j, ilen, jlen;\n\n\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\n\t\tif (!chart.isDatasetVisible(i)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tmeta = chart.getDatasetMeta(i);\n\t\tfor (j = 0, jlen = meta.data.length; j < jlen; ++j) {\n\t\t\tvar element = meta.data[j];\n\t\t\tif (!element._view.skip) {\n\t\t\t\thandler(element);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param items {ChartElement[]} elements to filter\n * @param position {Point} the point to be nearest to\n * @return {ChartElement[]} the nearest items\n */\nfunction getIntersectItems(chart, position) {\n\tvar elements = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (element.inRange(position.x, position.y)) {\n\t\t\telements.push(element);\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\n * @param chart {Chart} the chart to look at elements from\n * @param position {Point} the point to be nearest to\n * @param intersect {Boolean} if true, only consider items that intersect the position\n * @param distanceMetric {Function} function to provide the distance between points\n * @return {ChartElement[]} the nearest items\n */\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\n\tvar minDistance = Number.POSITIVE_INFINITY;\n\tvar nearestItems = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar center = element.getCenterPoint();\n\t\tvar distance = distanceMetric(position, center);\n\n\t\tif (distance < minDistance) {\n\t\t\tnearestItems = [element];\n\t\t\tminDistance = distance;\n\t\t} else if (distance === minDistance) {\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\n\t\t\tnearestItems.push(element);\n\t\t}\n\t});\n\n\treturn nearestItems;\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {String} axis the axis mode. x|y|xy\n */\nfunction getDistanceMetricForAxis(axis) {\n\tvar useX = axis.indexOf('x') !== -1;\n\tvar useY = axis.indexOf('y') !== -1;\n\n\treturn function(pt1, pt2) {\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n\t};\n}\n\nfunction indexMode(chart, e, options) {\n\tvar position = getRelativePosition(e, chart);\n\t// Default axis for index mode is 'x' to match old behaviour\n\toptions.axis = options.axis || 'x';\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\tvar elements = [];\n\n\tif (!items.length) {\n\t\treturn [];\n\t}\n\n\tchart.data.datasets.forEach(function(dataset, datasetIndex) {\n\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\tvar element = meta.data[items[0]._index];\n\n\t\t\t// don't count items that are skipped (null data)\n\t\t\tif (element && !element._view.skip) {\n\t\t\t\telements.push(element);\n\t\t\t}\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * @interface IInteractionOptions\n */\n/**\n * If true, only consider items that intersect the point\n * @name IInterfaceOptions#boolean\n * @type Boolean\n */\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nmodule.exports = {\n\t// Helper function for different modes\n\tmodes: {\n\t\tsingle: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar elements = [];\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\telements.push(element);\n\t\t\t\t\treturn elements;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn elements.slice(0, 1);\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.label\n\t\t * @deprecated since version 2.4.0\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\tlabel: indexMode,\n\n\t\t/**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tindex: indexMode,\n\n\t\t/**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tdataset: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\n\t\t\tif (items.length > 0) {\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\n\t\t\t}\n\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.x-axis\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\t'x-axis': function(chart, e) {\n\t\t\treturn indexMode(chart, e, {intersect: false});\n\t\t},\n\n\t\t/**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tpoint: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\treturn getIntersectItems(chart, position);\n\t\t},\n\n\t\t/**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tnearest: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\tvar nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric);\n\n\t\t\t// We have multiple items at the same distance from the event. Now sort by smallest\n\t\t\tif (nearestItems.length > 1) {\n\t\t\t\tnearestItems.sort(function(a, b) {\n\t\t\t\t\tvar sizeA = a.getArea();\n\t\t\t\t\tvar sizeB = b.getArea();\n\t\t\t\t\tvar ret = sizeA - sizeB;\n\n\t\t\t\t\tif (ret === 0) {\n\t\t\t\t\t\t// if equal sort by dataset index\n\t\t\t\t\t\tret = a._datasetIndex - b._datasetIndex;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn ret;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Return only 1 item\n\t\t\treturn nearestItems.slice(0, 1);\n\t\t},\n\n\t\t/**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tx: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inXRange(position.x)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\ty: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inYRange(position.y)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t}\n\t}\n};\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar units = {\n 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n 'h': 'stundas_stundām_stunda_stundas'.split('_'),\n 'hh': 'stundas_stundām_stunda_stundas'.split('_'),\n 'd': 'dienas_dienām_diena_dienas'.split('_'),\n 'dd': 'dienas_dienām_diena_dienas'.split('_'),\n 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n 'y': 'gada_gadiem_gads_gadi'.split('_'),\n 'yy': 'gada_gadiem_gads_gadi'.split('_')\n};\n/**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\nfunction format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n}\nfunction relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n}\nfunction relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n}\nfunction relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n}\n\nvar lv = moment.defineLocale('lv', {\n months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),\n monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),\n weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY.',\n LL : 'YYYY. [gada] D. MMMM',\n LLL : 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'\n },\n calendar : {\n sameDay : '[Šodien pulksten] LT',\n nextDay : '[Rīt pulksten] LT',\n nextWeek : 'dddd [pulksten] LT',\n lastDay : '[Vakar pulksten] LT',\n lastWeek : '[Pagājušā] dddd [pulksten] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'pēc %s',\n past : 'pirms %s',\n s : relativeSeconds,\n m : relativeTimeWithSingular,\n mm : relativeTimeWithPlural,\n h : relativeTimeWithSingular,\n hh : relativeTimeWithPlural,\n d : relativeTimeWithSingular,\n dd : relativeTimeWithPlural,\n M : relativeTimeWithSingular,\n MM : relativeTimeWithPlural,\n y : relativeTimeWithSingular,\n yy : relativeTimeWithPlural\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar te = moment.defineLocale('te', {\n months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),\n monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),\n monthsParseExact : true,\n weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),\n weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm',\n LLLL : 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar : {\n sameDay : '[నేడు] LT',\n nextDay : '[రేపు] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[నిన్న] LT',\n lastWeek : '[గత] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s లో',\n past : '%s క్రితం',\n s : 'కొన్ని క్షణాలు',\n m : 'ఒక నిమిషం',\n mm : '%d నిమిషాలు',\n h : 'ఒక గంట',\n hh : '%d గంటలు',\n d : 'ఒక రోజు',\n dd : '%d రోజులు',\n M : 'ఒక నెల',\n MM : '%d నెలలు',\n y : 'ఒక సంవత్సరం',\n yy : '%d సంవత్సరాలు'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}వ/,\n ordinal : '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn te;\n\n})));\n","/* global window: false */\n/* global document: false */\n'use strict';\n\nvar color = require('chartjs-color');\nvar defaults = require('./core.defaults');\nvar helpers = require('../helpers/index');\n\nmodule.exports = function(Chart) {\n\n\t// -- Basic js utility methods\n\n\thelpers.configMerge = function(/* objects ... */) {\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\n\t\t\tmerger: function(key, target, source, options) {\n\t\t\t\tvar tval = target[key] || {};\n\t\t\t\tvar sval = source[key];\n\n\t\t\t\tif (key === 'scales') {\n\t\t\t\t\t// scale config merging is complex. Add our own function here for that\n\t\t\t\t\ttarget[key] = helpers.scaleMerge(tval, sval);\n\t\t\t\t} else if (key === 'scale') {\n\t\t\t\t\t// used in polar area & radar charts since there is only one scale\n\t\t\t\t\ttarget[key] = helpers.merge(tval, [Chart.scaleService.getScaleDefaults(sval.type), sval]);\n\t\t\t\t} else {\n\t\t\t\t\thelpers._merger(key, target, source, options);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\thelpers.scaleMerge = function(/* objects ... */) {\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\n\t\t\tmerger: function(key, target, source, options) {\n\t\t\t\tif (key === 'xAxes' || key === 'yAxes') {\n\t\t\t\t\tvar slen = source[key].length;\n\t\t\t\t\tvar i, type, scale;\n\n\t\t\t\t\tif (!target[key]) {\n\t\t\t\t\t\ttarget[key] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (i = 0; i < slen; ++i) {\n\t\t\t\t\t\tscale = source[key][i];\n\t\t\t\t\t\ttype = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear');\n\n\t\t\t\t\t\tif (i >= target[key].length) {\n\t\t\t\t\t\t\ttarget[key].push({});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {\n\t\t\t\t\t\t\t// new/untyped scale or type changed: let's apply the new defaults\n\t\t\t\t\t\t\t// then merge source scale to correctly overwrite the defaults.\n\t\t\t\t\t\t\thelpers.merge(target[key][i], [Chart.scaleService.getScaleDefaults(type), scale]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// scales type are the same\n\t\t\t\t\t\t\thelpers.merge(target[key][i], scale);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\thelpers._merger(key, target, source, options);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\thelpers.where = function(collection, filterCallback) {\n\t\tif (helpers.isArray(collection) && Array.prototype.filter) {\n\t\t\treturn collection.filter(filterCallback);\n\t\t}\n\t\tvar filtered = [];\n\n\t\thelpers.each(collection, function(item) {\n\t\t\tif (filterCallback(item)) {\n\t\t\t\tfiltered.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn filtered;\n\t};\n\thelpers.findIndex = Array.prototype.findIndex ?\n\t\tfunction(array, callback, scope) {\n\t\t\treturn array.findIndex(callback, scope);\n\t\t} :\n\t\tfunction(array, callback, scope) {\n\t\t\tscope = scope === undefined ? array : scope;\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\n\t\t\t\tif (callback.call(scope, array[i], i, array)) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t};\n\thelpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to start of the array\n\t\tif (helpers.isNullOrUndef(startIndex)) {\n\t\t\tstartIndex = -1;\n\t\t}\n\t\tfor (var i = startIndex + 1; i < arrayToSearch.length; i++) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to end of the array\n\t\tif (helpers.isNullOrUndef(startIndex)) {\n\t\t\tstartIndex = arrayToSearch.length;\n\t\t}\n\t\tfor (var i = startIndex - 1; i >= 0; i--) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\n\t// -- Math methods\n\thelpers.isNumber = function(n) {\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\n\t};\n\thelpers.almostEquals = function(x, y, epsilon) {\n\t\treturn Math.abs(x - y) < epsilon;\n\t};\n\thelpers.almostWhole = function(x, epsilon) {\n\t\tvar rounded = Math.round(x);\n\t\treturn (((rounded - epsilon) < x) && ((rounded + epsilon) > x));\n\t};\n\thelpers.max = function(array) {\n\t\treturn array.reduce(function(max, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.max(max, value);\n\t\t\t}\n\t\t\treturn max;\n\t\t}, Number.NEGATIVE_INFINITY);\n\t};\n\thelpers.min = function(array) {\n\t\treturn array.reduce(function(min, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.min(min, value);\n\t\t\t}\n\t\t\treturn min;\n\t\t}, Number.POSITIVE_INFINITY);\n\t};\n\thelpers.sign = Math.sign ?\n\t\tfunction(x) {\n\t\t\treturn Math.sign(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\tx = +x; // convert to a number\n\t\t\tif (x === 0 || isNaN(x)) {\n\t\t\t\treturn x;\n\t\t\t}\n\t\t\treturn x > 0 ? 1 : -1;\n\t\t};\n\thelpers.log10 = Math.log10 ?\n\t\tfunction(x) {\n\t\t\treturn Math.log10(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\treturn Math.log(x) / Math.LN10;\n\t\t};\n\thelpers.toRadians = function(degrees) {\n\t\treturn degrees * (Math.PI / 180);\n\t};\n\thelpers.toDegrees = function(radians) {\n\t\treturn radians * (180 / Math.PI);\n\t};\n\t// Gets the angle from vertical upright to the point about a centre.\n\thelpers.getAngleFromPoint = function(centrePoint, anglePoint) {\n\t\tvar distanceFromXCenter = anglePoint.x - centrePoint.x;\n\t\tvar distanceFromYCenter = anglePoint.y - centrePoint.y;\n\t\tvar radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n\t\tvar angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n\t\tif (angle < (-0.5 * Math.PI)) {\n\t\t\tangle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n\t\t}\n\n\t\treturn {\n\t\t\tangle: angle,\n\t\t\tdistance: radialDistanceFromCenter\n\t\t};\n\t};\n\thelpers.distanceBetweenPoints = function(pt1, pt2) {\n\t\treturn Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n\t};\n\thelpers.aliasPixel = function(pixelWidth) {\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\n\t};\n\thelpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\n\t\t// Props to Rob Spencer at scaled innovation for his post on splining between points\n\t\t// http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n\t\t// This function must also respect \"skipped\" points\n\n\t\tvar previous = firstPoint.skip ? middlePoint : firstPoint;\n\t\tvar current = middlePoint;\n\t\tvar next = afterPoint.skip ? middlePoint : afterPoint;\n\n\t\tvar d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\n\t\tvar d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\n\n\t\tvar s01 = d01 / (d01 + d12);\n\t\tvar s12 = d12 / (d01 + d12);\n\n\t\t// If all points are the same, s01 & s02 will be inf\n\t\ts01 = isNaN(s01) ? 0 : s01;\n\t\ts12 = isNaN(s12) ? 0 : s12;\n\n\t\tvar fa = t * s01; // scaling factor for triangle Ta\n\t\tvar fb = t * s12;\n\n\t\treturn {\n\t\t\tprevious: {\n\t\t\t\tx: current.x - fa * (next.x - previous.x),\n\t\t\t\ty: current.y - fa * (next.y - previous.y)\n\t\t\t},\n\t\t\tnext: {\n\t\t\t\tx: current.x + fb * (next.x - previous.x),\n\t\t\t\ty: current.y + fb * (next.y - previous.y)\n\t\t\t}\n\t\t};\n\t};\n\thelpers.EPSILON = Number.EPSILON || 1e-14;\n\thelpers.splineCurveMonotone = function(points) {\n\t\t// This function calculates Bézier control points in a similar way than |splineCurve|,\n\t\t// but preserves monotonicity of the provided data and ensures no local extremums are added\n\t\t// between the dataset discrete points due to the interpolation.\n\t\t// See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n\n\t\tvar pointsWithTangents = (points || []).map(function(point) {\n\t\t\treturn {\n\t\t\t\tmodel: point._model,\n\t\t\t\tdeltaK: 0,\n\t\t\t\tmK: 0\n\t\t\t};\n\t\t});\n\n\t\t// Calculate slopes (deltaK) and initialize tangents (mK)\n\t\tvar pointsLen = pointsWithTangents.length;\n\t\tvar i, pointBefore, pointCurrent, pointAfter;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tvar slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);\n\n\t\t\t\t// In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n\t\t\t\tpointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\n\t\t\t}\n\n\t\t\tif (!pointBefore || pointBefore.model.skip) {\n\t\t\t\tpointCurrent.mK = pointCurrent.deltaK;\n\t\t\t} else if (!pointAfter || pointAfter.model.skip) {\n\t\t\t\tpointCurrent.mK = pointBefore.deltaK;\n\t\t\t} else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\n\t\t\t\tpointCurrent.mK = 0;\n\t\t\t} else {\n\t\t\t\tpointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\n\t\t\t}\n\t\t}\n\n\t\t// Adjust tangents to ensure monotonic properties\n\t\tvar alphaK, betaK, tauK, squaredMagnitude;\n\t\tfor (i = 0; i < pointsLen - 1; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tpointAfter = pointsWithTangents[i + 1];\n\t\t\tif (pointCurrent.model.skip || pointAfter.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\n\t\t\t\tpointCurrent.mK = pointAfter.mK = 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\talphaK = pointCurrent.mK / pointCurrent.deltaK;\n\t\t\tbetaK = pointAfter.mK / pointCurrent.deltaK;\n\t\t\tsquaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n\t\t\tif (squaredMagnitude <= 9) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ttauK = 3 / Math.sqrt(squaredMagnitude);\n\t\t\tpointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\n\t\t\tpointAfter.mK = betaK * tauK * pointCurrent.deltaK;\n\t\t}\n\n\t\t// Compute control points\n\t\tvar deltaX;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointBefore && !pointBefore.model.skip) {\n\t\t\t\tdeltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\n\t\t\t\tpointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tdeltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\n\t\t\t\tpointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.nextItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index >= collection.length - 1 ? collection[0] : collection[index + 1];\n\t\t}\n\t\treturn index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\n\t};\n\thelpers.previousItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index <= 0 ? collection[collection.length - 1] : collection[index - 1];\n\t\t}\n\t\treturn index <= 0 ? collection[0] : collection[index - 1];\n\t};\n\t// Implementation of the nice number algorithm used in determining where axis labels will go\n\thelpers.niceNum = function(range, round) {\n\t\tvar exponent = Math.floor(helpers.log10(range));\n\t\tvar fraction = range / Math.pow(10, exponent);\n\t\tvar niceFraction;\n\n\t\tif (round) {\n\t\t\tif (fraction < 1.5) {\n\t\t\t\tniceFraction = 1;\n\t\t\t} else if (fraction < 3) {\n\t\t\t\tniceFraction = 2;\n\t\t\t} else if (fraction < 7) {\n\t\t\t\tniceFraction = 5;\n\t\t\t} else {\n\t\t\t\tniceFraction = 10;\n\t\t\t}\n\t\t} else if (fraction <= 1.0) {\n\t\t\tniceFraction = 1;\n\t\t} else if (fraction <= 2) {\n\t\t\tniceFraction = 2;\n\t\t} else if (fraction <= 5) {\n\t\t\tniceFraction = 5;\n\t\t} else {\n\t\t\tniceFraction = 10;\n\t\t}\n\n\t\treturn niceFraction * Math.pow(10, exponent);\n\t};\n\t// Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\n\thelpers.requestAnimFrame = (function() {\n\t\tif (typeof window === 'undefined') {\n\t\t\treturn function(callback) {\n\t\t\t\tcallback();\n\t\t\t};\n\t\t}\n\t\treturn window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\twindow.oRequestAnimationFrame ||\n\t\t\twindow.msRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000 / 60);\n\t\t\t};\n\t}());\n\t// -- DOM methods\n\thelpers.getRelativePosition = function(evt, chart) {\n\t\tvar mouseX, mouseY;\n\t\tvar e = evt.originalEvent || evt;\n\t\tvar canvas = evt.currentTarget || evt.srcElement;\n\t\tvar boundingRect = canvas.getBoundingClientRect();\n\n\t\tvar touches = e.touches;\n\t\tif (touches && touches.length > 0) {\n\t\t\tmouseX = touches[0].clientX;\n\t\t\tmouseY = touches[0].clientY;\n\n\t\t} else {\n\t\t\tmouseX = e.clientX;\n\t\t\tmouseY = e.clientY;\n\t\t}\n\n\t\t// Scale mouse coordinates into canvas coordinates\n\t\t// by following the pattern laid out by 'jerryj' in the comments of\n\t\t// http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\n\t\tvar paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left'));\n\t\tvar paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top'));\n\t\tvar paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right'));\n\t\tvar paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom'));\n\t\tvar width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\n\t\tvar height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\n\n\t\t// We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\n\t\t// the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\n\t\tmouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\n\t\tmouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\n\n\t\treturn {\n\t\t\tx: mouseX,\n\t\t\ty: mouseY\n\t\t};\n\n\t};\n\n\t// Private helper function to convert max-width/max-height values that may be percentages into a number\n\tfunction parseMaxStyle(styleValue, node, parentProperty) {\n\t\tvar valueInPixels;\n\t\tif (typeof styleValue === 'string') {\n\t\t\tvalueInPixels = parseInt(styleValue, 10);\n\n\t\t\tif (styleValue.indexOf('%') !== -1) {\n\t\t\t\t// percentage * size in dimension\n\t\t\t\tvalueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n\t\t\t}\n\t\t} else {\n\t\t\tvalueInPixels = styleValue;\n\t\t}\n\n\t\treturn valueInPixels;\n\t}\n\n\t/**\n\t * Returns if the given value contains an effective constraint.\n\t * @private\n\t */\n\tfunction isConstrainedValue(value) {\n\t\treturn value !== undefined && value !== null && value !== 'none';\n\t}\n\n\t// Private helper to get a constraint dimension\n\t// @param domNode : the node to check the constraint on\n\t// @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight)\n\t// @param percentageProperty : property of parent to use when calculating width as a percentage\n\t// @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\n\t\tvar view = document.defaultView;\n\t\tvar parentNode = domNode.parentNode;\n\t\tvar constrainedNode = view.getComputedStyle(domNode)[maxStyle];\n\t\tvar constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\n\t\tvar hasCNode = isConstrainedValue(constrainedNode);\n\t\tvar hasCContainer = isConstrainedValue(constrainedContainer);\n\t\tvar infinity = Number.POSITIVE_INFINITY;\n\n\t\tif (hasCNode || hasCContainer) {\n\t\t\treturn Math.min(\n\t\t\t\thasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\n\t\t\t\thasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\n\t\t}\n\n\t\treturn 'none';\n\t}\n\t// returns Number or undefined if no constraint\n\thelpers.getConstraintWidth = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\n\t};\n\t// returns Number or undefined if no constraint\n\thelpers.getConstraintHeight = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\n\t};\n\thelpers.getMaximumWidth = function(domNode) {\n\t\tvar container = domNode.parentNode;\n\t\tif (!container) {\n\t\t\treturn domNode.clientWidth;\n\t\t}\n\n\t\tvar paddingLeft = parseInt(helpers.getStyle(container, 'padding-left'), 10);\n\t\tvar paddingRight = parseInt(helpers.getStyle(container, 'padding-right'), 10);\n\t\tvar w = container.clientWidth - paddingLeft - paddingRight;\n\t\tvar cw = helpers.getConstraintWidth(domNode);\n\t\treturn isNaN(cw) ? w : Math.min(w, cw);\n\t};\n\thelpers.getMaximumHeight = function(domNode) {\n\t\tvar container = domNode.parentNode;\n\t\tif (!container) {\n\t\t\treturn domNode.clientHeight;\n\t\t}\n\n\t\tvar paddingTop = parseInt(helpers.getStyle(container, 'padding-top'), 10);\n\t\tvar paddingBottom = parseInt(helpers.getStyle(container, 'padding-bottom'), 10);\n\t\tvar h = container.clientHeight - paddingTop - paddingBottom;\n\t\tvar ch = helpers.getConstraintHeight(domNode);\n\t\treturn isNaN(ch) ? h : Math.min(h, ch);\n\t};\n\thelpers.getStyle = function(el, property) {\n\t\treturn el.currentStyle ?\n\t\t\tel.currentStyle[property] :\n\t\t\tdocument.defaultView.getComputedStyle(el, null).getPropertyValue(property);\n\t};\n\thelpers.retinaScale = function(chart, forceRatio) {\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = forceRatio || window.devicePixelRatio || 1;\n\t\tif (pixelRatio === 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar canvas = chart.canvas;\n\t\tvar height = chart.height;\n\t\tvar width = chart.width;\n\n\t\tcanvas.height = height * pixelRatio;\n\t\tcanvas.width = width * pixelRatio;\n\t\tchart.ctx.scale(pixelRatio, pixelRatio);\n\n\t\t// If no style has been set on the canvas, the render size is used as display size,\n\t\t// making the chart visually bigger, so let's enforce it to the \"correct\" values.\n\t\t// See https://github.com/chartjs/Chart.js/issues/3575\n\t\tcanvas.style.height = height + 'px';\n\t\tcanvas.style.width = width + 'px';\n\t};\n\t// -- Canvas methods\n\thelpers.fontString = function(pixelSize, fontStyle, fontFamily) {\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n\t};\n\thelpers.longestText = function(ctx, font, arrayOfThings, cache) {\n\t\tcache = cache || {};\n\t\tvar data = cache.data = cache.data || {};\n\t\tvar gc = cache.garbageCollect = cache.garbageCollect || [];\n\n\t\tif (cache.font !== font) {\n\t\t\tdata = cache.data = {};\n\t\t\tgc = cache.garbageCollect = [];\n\t\t\tcache.font = font;\n\t\t}\n\n\t\tctx.font = font;\n\t\tvar longest = 0;\n\t\thelpers.each(arrayOfThings, function(thing) {\n\t\t\t// Undefined strings and arrays should not be measured\n\t\t\tif (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) {\n\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, thing);\n\t\t\t} else if (helpers.isArray(thing)) {\n\t\t\t\t// if it is an array lets measure each element\n\t\t\t\t// to do maybe simplify this function a bit so we can do this more recursively?\n\t\t\t\thelpers.each(thing, function(nestedThing) {\n\t\t\t\t\t// Undefined strings and arrays should not be measured\n\t\t\t\t\tif (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) {\n\t\t\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, nestedThing);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tvar gcLen = gc.length / 2;\n\t\tif (gcLen > arrayOfThings.length) {\n\t\t\tfor (var i = 0; i < gcLen; i++) {\n\t\t\t\tdelete data[gc[i]];\n\t\t\t}\n\t\t\tgc.splice(0, gcLen);\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers.measureText = function(ctx, data, gc, longest, string) {\n\t\tvar textWidth = data[string];\n\t\tif (!textWidth) {\n\t\t\ttextWidth = data[string] = ctx.measureText(string).width;\n\t\t\tgc.push(string);\n\t\t}\n\t\tif (textWidth > longest) {\n\t\t\tlongest = textWidth;\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers.numberOfLabelLines = function(arrayOfThings) {\n\t\tvar numberOfLines = 1;\n\t\thelpers.each(arrayOfThings, function(thing) {\n\t\t\tif (helpers.isArray(thing)) {\n\t\t\t\tif (thing.length > numberOfLines) {\n\t\t\t\t\tnumberOfLines = thing.length;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn numberOfLines;\n\t};\n\n\thelpers.color = !color ?\n\t\tfunction(value) {\n\t\t\tconsole.error('Color.js not found!');\n\t\t\treturn value;\n\t\t} :\n\t\tfunction(value) {\n\t\t\t/* global CanvasGradient */\n\t\t\tif (value instanceof CanvasGradient) {\n\t\t\t\tvalue = defaults.global.defaultColor;\n\t\t\t}\n\n\t\t\treturn color(value);\n\t\t};\n\n\thelpers.getHoverColor = function(colorValue) {\n\t\t/* global CanvasPattern */\n\t\treturn (colorValue instanceof CanvasPattern) ?\n\t\t\tcolorValue :\n\t\t\thelpers.color(colorValue).saturate(0.5).darken(0.1).rgbString();\n\t};\n};\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar enNz = moment.defineLocale('en-nz', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar tlPh = moment.defineLocale('tl-ph', {\n months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'MM/D/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY HH:mm',\n LLLL : 'dddd, MMMM DD, YYYY HH:mm'\n },\n calendar : {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'sa loob ng %s',\n past : '%s ang nakalipas',\n s : 'ilang segundo',\n m : 'isang minuto',\n mm : '%d minuto',\n h : 'isang oras',\n hh : '%d oras',\n d : 'isang araw',\n dd : '%d araw',\n M : 'isang buwan',\n MM : '%d buwan',\n y : 'isang taon',\n yy : '%d taon'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal : function (number) {\n return number;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar tzm = moment.defineLocale('tzm', {\n months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past : 'ⵢⴰⵏ %s',\n s : 'ⵉⵎⵉⴽ',\n m : 'ⵎⵉⵏⵓⴺ',\n mm : '%d ⵎⵉⵏⵓⴺ',\n h : 'ⵙⴰⵄⴰ',\n hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d : 'ⴰⵙⵙ',\n dd : '%d oⵙⵙⴰⵏ',\n M : 'ⴰⵢoⵓⵔ',\n MM : '%d ⵉⵢⵢⵉⵔⵏ',\n y : 'ⴰⵙⴳⴰⵙ',\n yy : '%d ⵉⵙⴳⴰⵙⵏ'\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar uz = moment.defineLocale('uz', {\n months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'D MMMM YYYY, dddd HH:mm'\n },\n calendar : {\n sameDay : '[Бугун соат] LT [да]',\n nextDay : '[Эртага] LT [да]',\n nextWeek : 'dddd [куни соат] LT [да]',\n lastDay : '[Кеча соат] LT [да]',\n lastWeek : '[Утган] dddd [куни соат] LT [да]',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'Якин %s ичида',\n past : 'Бир неча %s олдин',\n s : 'фурсат',\n m : 'бир дакика',\n mm : '%d дакика',\n h : 'бир соат',\n hh : '%d соат',\n d : 'бир кун',\n dd : '%d кун',\n M : 'бир ой',\n MM : '%d ой',\n y : 'бир йил',\n yy : '%d йил'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar zhTw = moment.defineLocale('zh-tw', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY年MMMD日',\n LL : 'YYYY年MMMD日',\n LLL : 'YYYY年MMMD日 HH:mm',\n LLLL : 'YYYY年MMMD日dddd HH:mm',\n l : 'YYYY年MMMD日',\n ll : 'YYYY年MMMD日',\n lll : 'YYYY年MMMD日 HH:mm',\n llll : 'YYYY年MMMD日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar : {\n sameDay : '[今天]LT',\n nextDay : '[明天]LT',\n nextWeek : '[下]ddddLT',\n lastDay : '[昨天]LT',\n lastWeek : '[上]ddddLT',\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd' :\n case 'D' :\n case 'DDD' :\n return number + '日';\n case 'M' :\n return number + '月';\n case 'w' :\n case 'W' :\n return number + '週';\n default :\n return number;\n }\n },\n relativeTime : {\n future : '%s內',\n past : '%s前',\n s : '幾秒',\n m : '1 分鐘',\n mm : '%d 分鐘',\n h : '1 小時',\n hh : '%d 小時',\n d : '1 天',\n dd : '%d 天',\n M : '1 個月',\n MM : '%d 個月',\n y : '1 年',\n yy : '%d 年'\n }\n});\n\nreturn zhTw;\n\n})));\n","'use strict';\n\nvar helpers = require('../helpers/index');\nvar Ticks = require('../core/core.ticks');\n\nmodule.exports = function(Chart) {\n\n\tvar noop = helpers.noop;\n\n\tChart.LinearScaleBase = Chart.Scale.extend({\n\t\tgetRightValue: function(value) {\n\t\t\tif (typeof value === 'string') {\n\t\t\t\treturn +value;\n\t\t\t}\n\t\t\treturn Chart.Scale.prototype.getRightValue.call(this, value);\n\t\t},\n\n\t\thandleTickRangeOptions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\n\t\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\n\t\t\t// axis, they can manually override it\n\t\t\tif (tickOpts.beginAtZero) {\n\t\t\t\tvar minSign = helpers.sign(me.min);\n\t\t\t\tvar maxSign = helpers.sign(me.max);\n\n\t\t\t\tif (minSign < 0 && maxSign < 0) {\n\t\t\t\t\t// move the top up to 0\n\t\t\t\t\tme.max = 0;\n\t\t\t\t} else if (minSign > 0 && maxSign > 0) {\n\t\t\t\t\t// move the bottom down to 0\n\t\t\t\t\tme.min = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\n\t\t\tvar setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\n\n\t\t\tif (tickOpts.min !== undefined) {\n\t\t\t\tme.min = tickOpts.min;\n\t\t\t} else if (tickOpts.suggestedMin !== undefined) {\n\t\t\t\tif (me.min === null) {\n\t\t\t\t\tme.min = tickOpts.suggestedMin;\n\t\t\t\t} else {\n\t\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tickOpts.max !== undefined) {\n\t\t\t\tme.max = tickOpts.max;\n\t\t\t} else if (tickOpts.suggestedMax !== undefined) {\n\t\t\t\tif (me.max === null) {\n\t\t\t\t\tme.max = tickOpts.suggestedMax;\n\t\t\t\t} else {\n\t\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (setMin !== setMax) {\n\t\t\t\t// We set the min or the max but not both.\n\t\t\t\t// So ensure that our range is good\n\t\t\t\t// Inverted or 0 length range can happen when\n\t\t\t\t// ticks.min is set, and no datasets are visible\n\t\t\t\tif (me.min >= me.max) {\n\t\t\t\t\tif (setMin) {\n\t\t\t\t\t\tme.max = me.min + 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tme.min = me.max - 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.min === me.max) {\n\t\t\t\tme.max++;\n\n\t\t\t\tif (!tickOpts.beginAtZero) {\n\t\t\t\t\tme.min--;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetTickLimit: noop,\n\t\thandleDirectionalChanges: noop,\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\t// Figure out what the max number of ticks we can support it is based on the size of\n\t\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n\t\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t\t\t// the graph. Make sure we always have at least 2 ticks\n\t\t\tvar maxTicks = me.getTickLimit();\n\t\t\tmaxTicks = Math.max(2, maxTicks);\n\n\t\t\tvar numericGeneratorOptions = {\n\t\t\t\tmaxTicks: maxTicks,\n\t\t\t\tmin: tickOpts.min,\n\t\t\t\tmax: tickOpts.max,\n\t\t\t\tstepSize: helpers.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\n\t\t\t};\n\t\t\tvar ticks = me.ticks = Ticks.generators.linear(numericGeneratorOptions, me);\n\n\t\t\tme.handleDirectionalChanges();\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(ticks);\n\t\t\tme.min = helpers.min(ticks);\n\n\t\t\tif (tickOpts.reverse) {\n\t\t\t\tticks.reverse();\n\n\t\t\t\tme.start = me.max;\n\t\t\t\tme.end = me.min;\n\t\t\t} else {\n\t\t\t\tme.start = me.min;\n\t\t\t\tme.end = me.max;\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\t\t\tme.ticksAsNumbers = me.ticks.slice();\n\t\t\tme.zeroLineIndex = me.ticks.indexOf(0);\n\n\t\t\tChart.Scale.prototype.convertTicksToLabels.call(me);\n\t\t}\n\t});\n};\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_');\nvar monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');\nfunction plural(n) {\n return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);\n}\nfunction translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n}\n\nvar pl = moment.defineLocale('pl', {\n months : function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (format === '') {\n // Hack: if format empty we know this is used to generate\n // RegExp by moment. Give then back both valid forms of months\n // in RegExp ready format.\n return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: '[W] dddd [o] LT',\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : '%s temu',\n s : 'kilka sekund',\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : '1 dzień',\n dd : '%d dni',\n M : 'miesiąc',\n MM : translate,\n y : 'rok',\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn pl;\n\n})));\n","var map = {\n\t\"./af\": \"838d\",\n\t\"./af.js\": \"838d\",\n\t\"./ar\": \"784e\",\n\t\"./ar-dz\": \"73b7\",\n\t\"./ar-dz.js\": \"73b7\",\n\t\"./ar-kw\": \"90b7\",\n\t\"./ar-kw.js\": \"90b7\",\n\t\"./ar-ly\": \"d532\",\n\t\"./ar-ly.js\": \"d532\",\n\t\"./ar-ma\": \"e1cf\",\n\t\"./ar-ma.js\": \"e1cf\",\n\t\"./ar-sa\": \"d8a0\",\n\t\"./ar-sa.js\": \"d8a0\",\n\t\"./ar-tn\": \"3405\",\n\t\"./ar-tn.js\": \"3405\",\n\t\"./ar.js\": \"784e\",\n\t\"./az\": \"1551\",\n\t\"./az.js\": \"1551\",\n\t\"./be\": \"74a2\",\n\t\"./be.js\": \"74a2\",\n\t\"./bg\": \"818d\",\n\t\"./bg.js\": \"818d\",\n\t\"./bn\": \"733a\",\n\t\"./bn.js\": \"733a\",\n\t\"./bo\": \"3fae\",\n\t\"./bo.js\": \"3fae\",\n\t\"./br\": \"e578\",\n\t\"./br.js\": \"e578\",\n\t\"./bs\": \"aa1c\",\n\t\"./bs.js\": \"aa1c\",\n\t\"./ca\": \"bf58\",\n\t\"./ca.js\": \"bf58\",\n\t\"./cs\": \"39b3\",\n\t\"./cs.js\": \"39b3\",\n\t\"./cv\": \"d077\",\n\t\"./cv.js\": \"d077\",\n\t\"./cy\": \"7b15\",\n\t\"./cy.js\": \"7b15\",\n\t\"./da\": \"7012\",\n\t\"./da.js\": \"7012\",\n\t\"./de\": \"8ef4\",\n\t\"./de-at\": \"c2c4\",\n\t\"./de-at.js\": \"c2c4\",\n\t\"./de-ch\": \"59e8\",\n\t\"./de-ch.js\": \"59e8\",\n\t\"./de.js\": \"8ef4\",\n\t\"./dv\": \"8229\",\n\t\"./dv.js\": \"8229\",\n\t\"./el\": \"3df5\",\n\t\"./el.js\": \"3df5\",\n\t\"./en-au\": \"64fc\",\n\t\"./en-au.js\": \"64fc\",\n\t\"./en-ca\": \"d02e\",\n\t\"./en-ca.js\": \"d02e\",\n\t\"./en-gb\": \"e4ab\",\n\t\"./en-gb.js\": \"e4ab\",\n\t\"./en-ie\": \"2078\",\n\t\"./en-ie.js\": \"2078\",\n\t\"./en-nz\": \"9e37\",\n\t\"./en-nz.js\": \"9e37\",\n\t\"./eo\": \"03d2\",\n\t\"./eo.js\": \"03d2\",\n\t\"./es\": \"f014\",\n\t\"./es-do\": \"c04e\",\n\t\"./es-do.js\": \"c04e\",\n\t\"./es.js\": \"f014\",\n\t\"./et\": \"7005\",\n\t\"./et.js\": \"7005\",\n\t\"./eu\": \"53ec\",\n\t\"./eu.js\": \"53ec\",\n\t\"./fa\": \"ccae\",\n\t\"./fa.js\": \"ccae\",\n\t\"./fi\": \"4bbe\",\n\t\"./fi.js\": \"4bbe\",\n\t\"./fo\": \"bee3\",\n\t\"./fo.js\": \"bee3\",\n\t\"./fr\": \"1f77\",\n\t\"./fr-ca\": \"ffd0\",\n\t\"./fr-ca.js\": \"ffd0\",\n\t\"./fr-ch\": \"3236\",\n\t\"./fr-ch.js\": \"3236\",\n\t\"./fr.js\": \"1f77\",\n\t\"./fy\": \"37c5\",\n\t\"./fy.js\": \"37c5\",\n\t\"./gd\": \"1ba1\",\n\t\"./gd.js\": \"1ba1\",\n\t\"./gl\": \"34cf\",\n\t\"./gl.js\": \"34cf\",\n\t\"./gom-latn\": \"313c\",\n\t\"./gom-latn.js\": \"313c\",\n\t\"./he\": \"cee8\",\n\t\"./he.js\": \"cee8\",\n\t\"./hi\": \"cb39\",\n\t\"./hi.js\": \"cb39\",\n\t\"./hr\": \"cea2\",\n\t\"./hr.js\": \"cea2\",\n\t\"./hu\": \"97cb\",\n\t\"./hu.js\": \"97cb\",\n\t\"./hy-am\": \"d0b1\",\n\t\"./hy-am.js\": \"d0b1\",\n\t\"./id\": \"7113\",\n\t\"./id.js\": \"7113\",\n\t\"./is\": \"269f\",\n\t\"./is.js\": \"269f\",\n\t\"./it\": \"1c5f\",\n\t\"./it.js\": \"1c5f\",\n\t\"./ja\": \"7c17\",\n\t\"./ja.js\": \"7c17\",\n\t\"./jv\": \"fc82\",\n\t\"./jv.js\": \"fc82\",\n\t\"./ka\": \"b0a4\",\n\t\"./ka.js\": \"b0a4\",\n\t\"./kk\": \"5858\",\n\t\"./kk.js\": \"5858\",\n\t\"./km\": \"024c\",\n\t\"./km.js\": \"024c\",\n\t\"./kn\": \"eeda\",\n\t\"./kn.js\": \"eeda\",\n\t\"./ko\": \"c9f3\",\n\t\"./ko.js\": \"c9f3\",\n\t\"./ky\": \"2886\",\n\t\"./ky.js\": \"2886\",\n\t\"./lb\": \"0691\",\n\t\"./lb.js\": \"0691\",\n\t\"./lo\": \"c132\",\n\t\"./lo.js\": \"c132\",\n\t\"./lt\": \"0413\",\n\t\"./lt.js\": \"0413\",\n\t\"./lv\": \"9a87\",\n\t\"./lv.js\": \"9a87\",\n\t\"./me\": \"07b9\",\n\t\"./me.js\": \"07b9\",\n\t\"./mi\": \"6da7\",\n\t\"./mi.js\": \"6da7\",\n\t\"./mk\": \"8f7a\",\n\t\"./mk.js\": \"8f7a\",\n\t\"./ml\": \"f2fd\",\n\t\"./ml.js\": \"f2fd\",\n\t\"./mr\": \"3b71\",\n\t\"./mr.js\": \"3b71\",\n\t\"./ms\": \"0660\",\n\t\"./ms-my\": \"bdd0\",\n\t\"./ms-my.js\": \"bdd0\",\n\t\"./ms.js\": \"0660\",\n\t\"./my\": \"5e5c\",\n\t\"./my.js\": \"5e5c\",\n\t\"./nb\": \"dcfb\",\n\t\"./nb.js\": \"dcfb\",\n\t\"./ne\": \"cba4\",\n\t\"./ne.js\": \"cba4\",\n\t\"./nl\": \"aa9a\",\n\t\"./nl-be\": \"9610\",\n\t\"./nl-be.js\": \"9610\",\n\t\"./nl.js\": \"aa9a\",\n\t\"./nn\": \"0461\",\n\t\"./nn.js\": \"0461\",\n\t\"./pa-in\": \"53d5\",\n\t\"./pa-in.js\": \"53d5\",\n\t\"./pl\": \"a609\",\n\t\"./pl.js\": \"a609\",\n\t\"./pt\": \"3417\",\n\t\"./pt-br\": \"f586\",\n\t\"./pt-br.js\": \"f586\",\n\t\"./pt.js\": \"3417\",\n\t\"./ro\": \"2f06\",\n\t\"./ro.js\": \"2f06\",\n\t\"./ru\": \"6d99\",\n\t\"./ru.js\": \"6d99\",\n\t\"./sd\": \"c4b0\",\n\t\"./sd.js\": \"c4b0\",\n\t\"./se\": \"43f2\",\n\t\"./se.js\": \"43f2\",\n\t\"./si\": \"3389\",\n\t\"./si.js\": \"3389\",\n\t\"./sk\": \"753b\",\n\t\"./sk.js\": \"753b\",\n\t\"./sl\": \"5e34\",\n\t\"./sl.js\": \"5e34\",\n\t\"./sq\": \"33bf\",\n\t\"./sq.js\": \"33bf\",\n\t\"./sr\": \"8843\",\n\t\"./sr-cyrl\": \"4068\",\n\t\"./sr-cyrl.js\": \"4068\",\n\t\"./sr.js\": \"8843\",\n\t\"./ss\": \"339e\",\n\t\"./ss.js\": \"339e\",\n\t\"./sv\": \"1428\",\n\t\"./sv.js\": \"1428\",\n\t\"./sw\": \"7581\",\n\t\"./sw.js\": \"7581\",\n\t\"./ta\": \"2e92\",\n\t\"./ta.js\": \"2e92\",\n\t\"./te\": \"9bcc\",\n\t\"./te.js\": \"9bcc\",\n\t\"./tet\": \"dc6d\",\n\t\"./tet.js\": \"dc6d\",\n\t\"./th\": \"8854\",\n\t\"./th.js\": \"8854\",\n\t\"./tl-ph\": \"9f93\",\n\t\"./tl-ph.js\": \"9f93\",\n\t\"./tlh\": \"8429\",\n\t\"./tlh.js\": \"8429\",\n\t\"./tr\": \"109e\",\n\t\"./tr.js\": \"109e\",\n\t\"./tzl\": \"593e\",\n\t\"./tzl.js\": \"593e\",\n\t\"./tzm\": \"a007\",\n\t\"./tzm-latn\": \"5d9b\",\n\t\"./tzm-latn.js\": \"5d9b\",\n\t\"./tzm.js\": \"a007\",\n\t\"./uk\": \"1e2a\",\n\t\"./uk.js\": \"1e2a\",\n\t\"./ur\": \"f26f\",\n\t\"./ur.js\": \"f26f\",\n\t\"./uz\": \"a18a\",\n\t\"./uz-latn\": \"c96c\",\n\t\"./uz-latn.js\": \"c96c\",\n\t\"./uz.js\": \"a18a\",\n\t\"./vi\": \"2fe7\",\n\t\"./vi.js\": \"2fe7\",\n\t\"./x-pseudo\": \"95bd\",\n\t\"./x-pseudo.js\": \"95bd\",\n\t\"./yo\": \"352b\",\n\t\"./yo.js\": \"352b\",\n\t\"./zh-cn\": \"865c\",\n\t\"./zh-cn.js\": \"865c\",\n\t\"./zh-hk\": \"0302\",\n\t\"./zh-hk.js\": \"0302\",\n\t\"./zh-tw\": \"a24e\",\n\t\"./zh-tw.js\": \"a24e\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"a7d7\";","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n}\n\nvar bs = moment.defineLocale('bs', {\n months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[danas u] LT',\n nextDay : '[sutra u] LT',\n nextWeek : function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[jučer u] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'prije %s',\n s : 'par sekundi',\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : 'dan',\n dd : translate,\n M : 'mjesec',\n MM : translate,\n y : 'godinu',\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');\nvar monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\nvar monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\nvar monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\nvar nl = moment.defineLocale('nl', {\n months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n\n weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'over %s',\n past : '%s geleden',\n s : 'een paar seconden',\n m : 'één minuut',\n mm : '%d minuten',\n h : 'één uur',\n hh : '%d uur',\n d : 'één dag',\n dd : '%d dagen',\n M : 'één maand',\n MM : '%d maanden',\n y : 'één jaar',\n yy : '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn nl;\n\n})));\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.PolarArea = function(context, config) {\n\t\tconfig.type = 'polarArea';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","/**\n * Chart.Platform implementation for targeting a web browser\n */\n\n'use strict';\n\nvar helpers = require('../helpers/index');\n\nvar EXPANDO_KEY = '$chartjs';\nvar CSS_PREFIX = 'chartjs-';\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nvar EVENT_TYPES = {\n\ttouchstart: 'mousedown',\n\ttouchmove: 'mousemove',\n\ttouchend: 'mouseup',\n\tpointerenter: 'mouseenter',\n\tpointerdown: 'mousedown',\n\tpointermove: 'mousemove',\n\tpointerup: 'mouseup',\n\tpointerleave: 'mouseout',\n\tpointerout: 'mouseout'\n};\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns {Number} Size in pixels or undefined if unknown.\n */\nfunction readUsedSize(element, property) {\n\tvar value = helpers.getStyle(element, property);\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n\treturn matches ? Number(matches[1]) : undefined;\n}\n\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n */\nfunction initCanvas(canvas, config) {\n\tvar style = canvas.style;\n\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\n\tvar renderHeight = canvas.getAttribute('height');\n\tvar renderWidth = canvas.getAttribute('width');\n\n\t// Chart.js modifies some canvas values that we want to restore on destroy\n\tcanvas[EXPANDO_KEY] = {\n\t\tinitial: {\n\t\t\theight: renderHeight,\n\t\t\twidth: renderWidth,\n\t\t\tstyle: {\n\t\t\t\tdisplay: style.display,\n\t\t\t\theight: style.height,\n\t\t\t\twidth: style.width\n\t\t\t}\n\t\t}\n\t};\n\n\t// Force canvas to display as block to avoid extra space caused by inline\n\t// elements, which would interfere with the responsive resize process.\n\t// https://github.com/chartjs/Chart.js/issues/2538\n\tstyle.display = style.display || 'block';\n\n\tif (renderWidth === null || renderWidth === '') {\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\n\t\tif (displayWidth !== undefined) {\n\t\t\tcanvas.width = displayWidth;\n\t\t}\n\t}\n\n\tif (renderHeight === null || renderHeight === '') {\n\t\tif (canvas.style.height === '') {\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\n\t\t\t// which one can be specified by the user but also by charts as default option\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\n\t\t} else {\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\n\t\t\tif (displayWidth !== undefined) {\n\t\t\t\tcanvas.height = displayHeight;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn canvas;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nvar supportsEventListenerOptions = (function() {\n\tvar supports = false;\n\ttry {\n\t\tvar options = Object.defineProperty({}, 'passive', {\n\t\t\tget: function() {\n\t\t\t\tsupports = true;\n\t\t\t}\n\t\t});\n\t\twindow.addEventListener('e', null, options);\n\t} catch (e) {\n\t\t// continue regardless of error\n\t}\n\treturn supports;\n}());\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addEventListener(node, type, listener) {\n\tnode.addEventListener(type, listener, eventListenerOptions);\n}\n\nfunction removeEventListener(node, type, listener) {\n\tnode.removeEventListener(type, listener, eventListenerOptions);\n}\n\nfunction createEvent(type, chart, x, y, nativeEvent) {\n\treturn {\n\t\ttype: type,\n\t\tchart: chart,\n\t\tnative: nativeEvent || null,\n\t\tx: x !== undefined ? x : null,\n\t\ty: y !== undefined ? y : null,\n\t};\n}\n\nfunction fromNativeEvent(event, chart) {\n\tvar type = EVENT_TYPES[event.type] || event.type;\n\tvar pos = helpers.getRelativePosition(event, chart);\n\treturn createEvent(type, chart, pos.x, pos.y, event);\n}\n\nfunction throttled(fn, thisArg) {\n\tvar ticking = false;\n\tvar args = [];\n\n\treturn function() {\n\t\targs = Array.prototype.slice.call(arguments);\n\t\tthisArg = thisArg || this;\n\n\t\tif (!ticking) {\n\t\t\tticking = true;\n\t\t\thelpers.requestAnimFrame.call(window, function() {\n\t\t\t\tticking = false;\n\t\t\t\tfn.apply(thisArg, args);\n\t\t\t});\n\t\t}\n\t};\n}\n\n// Implementation based on https://github.com/marcj/css-element-queries\nfunction createResizer(handler) {\n\tvar resizer = document.createElement('div');\n\tvar cls = CSS_PREFIX + 'size-monitor';\n\tvar maxSize = 1000000;\n\tvar style =\n\t\t'position:absolute;' +\n\t\t'left:0;' +\n\t\t'top:0;' +\n\t\t'right:0;' +\n\t\t'bottom:0;' +\n\t\t'overflow:hidden;' +\n\t\t'pointer-events:none;' +\n\t\t'visibility:hidden;' +\n\t\t'z-index:-1;';\n\n\tresizer.style.cssText = style;\n\tresizer.className = cls;\n\tresizer.innerHTML =\n\t\t'
' +\n\t\t\t'
' +\n\t\t\t'
' +\n\t\t'
' +\n\t\t'
' +\n\t\t\t'
' +\n\t\t\t'
' +\n\t\t'
';\n\n\tvar expand = resizer.childNodes[0];\n\tvar shrink = resizer.childNodes[1];\n\n\tresizer._reset = function() {\n\t\texpand.scrollLeft = maxSize;\n\t\texpand.scrollTop = maxSize;\n\t\tshrink.scrollLeft = maxSize;\n\t\tshrink.scrollTop = maxSize;\n\t};\n\tvar onScroll = function() {\n\t\tresizer._reset();\n\t\thandler();\n\t};\n\n\taddEventListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\n\taddEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\n\n\treturn resizer;\n}\n\n// https://davidwalsh.name/detect-node-insertion\nfunction watchForRender(node, handler) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\tvar proxy = expando.renderProxy = function(e) {\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\n\t\t\thandler();\n\t\t}\n\t};\n\n\thelpers.each(ANIMATION_START_EVENTS, function(type) {\n\t\taddEventListener(node, type, proxy);\n\t});\n\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\n\t// is removed then added back immediately (same animation frame?). Accessing the\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\n\t// https://github.com/chartjs/Chart.js/issues/4737\n\texpando.reflow = !!node.offsetParent;\n\n\tnode.classList.add(CSS_RENDER_MONITOR);\n}\n\nfunction unwatchForRender(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar proxy = expando.renderProxy;\n\n\tif (proxy) {\n\t\thelpers.each(ANIMATION_START_EVENTS, function(type) {\n\t\t\tremoveEventListener(node, type, proxy);\n\t\t});\n\n\t\tdelete expando.renderProxy;\n\t}\n\n\tnode.classList.remove(CSS_RENDER_MONITOR);\n}\n\nfunction addResizeListener(node, listener, chart) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\n\t\tif (expando.resizer) {\n\t\t\treturn listener(createEvent('resize', chart));\n\t\t}\n\t}));\n\n\t// The resizer needs to be attached to the node parent, so we first need to be\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\n\twatchForRender(node, function() {\n\t\tif (expando.resizer) {\n\t\t\tvar container = node.parentNode;\n\t\t\tif (container && container !== resizer.parentNode) {\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\n\t\t\t}\n\n\t\t\t// The container size might have changed, let's reset the resizer state.\n\t\t\tresizer._reset();\n\t\t}\n\t});\n}\n\nfunction removeResizeListener(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar resizer = expando.resizer;\n\n\tdelete expando.resizer;\n\tunwatchForRender(node);\n\n\tif (resizer && resizer.parentNode) {\n\t\tresizer.parentNode.removeChild(resizer);\n\t}\n}\n\nfunction injectCSS(platform, css) {\n\t// http://stackoverflow.com/q/3922139\n\tvar style = platform._style || document.createElement('style');\n\tif (!platform._style) {\n\t\tplatform._style = style;\n\t\tcss = '/* Chart.js */\\n' + css;\n\t\tstyle.setAttribute('type', 'text/css');\n\t\tdocument.getElementsByTagName('head')[0].appendChild(style);\n\t}\n\n\tstyle.appendChild(document.createTextNode(css));\n}\n\nmodule.exports = {\n\t/**\n\t * This property holds whether this platform is enabled for the current environment.\n\t * Currently used by platform.js to select the proper implementation.\n\t * @private\n\t */\n\t_enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\n\n\tinitialize: function() {\n\t\tvar keyframes = 'from{opacity:0.99}to{opacity:1}';\n\n\t\tinjectCSS(this,\n\t\t\t// DOM rendering detection\n\t\t\t// https://davidwalsh.name/detect-node-insertion\n\t\t\t'@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\n\t\t\t'@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\n\t\t\t'.' + CSS_RENDER_MONITOR + '{' +\n\t\t\t\t'-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\n\t\t\t\t'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\n\t\t\t'}'\n\t\t);\n\t},\n\n\tacquireContext: function(item, config) {\n\t\tif (typeof item === 'string') {\n\t\t\titem = document.getElementById(item);\n\t\t} else if (item.length) {\n\t\t\t// Support for array based queries (such as jQuery)\n\t\t\titem = item[0];\n\t\t}\n\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\t// To prevent canvas fingerprinting, some add-ons undefine the getContext\n\t\t// method, for example: https://github.com/kkapsner/CanvasBlocker\n\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\tvar context = item && item.getContext && item.getContext('2d');\n\n\t\t// `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\n\t\t// inside an iframe or when running in a protected environment. We could guess the\n\t\t// types from their toString() value but let's keep things flexible and assume it's\n\t\t// a sufficient condition if the item has a context2D which has item as `canvas`.\n\t\t// https://github.com/chartjs/Chart.js/issues/3887\n\t\t// https://github.com/chartjs/Chart.js/issues/4102\n\t\t// https://github.com/chartjs/Chart.js/issues/4152\n\t\tif (context && context.canvas === item) {\n\t\t\tinitCanvas(item, config);\n\t\t\treturn context;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\treleaseContext: function(context) {\n\t\tvar canvas = context.canvas;\n\t\tif (!canvas[EXPANDO_KEY]) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar initial = canvas[EXPANDO_KEY].initial;\n\t\t['height', 'width'].forEach(function(prop) {\n\t\t\tvar value = initial[prop];\n\t\t\tif (helpers.isNullOrUndef(value)) {\n\t\t\t\tcanvas.removeAttribute(prop);\n\t\t\t} else {\n\t\t\t\tcanvas.setAttribute(prop, value);\n\t\t\t}\n\t\t});\n\n\t\thelpers.each(initial.style || {}, function(value, key) {\n\t\t\tcanvas.style[key] = value;\n\t\t});\n\n\t\t// The canvas render size might have been changed (and thus the state stack discarded),\n\t\t// we can't use save() and restore() to restore the initial state. So make sure that at\n\t\t// least the canvas context is reset to the default state by setting the canvas width.\n\t\t// https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n\t\tcanvas.width = canvas.width;\n\n\t\tdelete canvas[EXPANDO_KEY];\n\t},\n\n\taddEventListener: function(chart, type, listener) {\n\t\tvar canvas = chart.canvas;\n\t\tif (type === 'resize') {\n\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\taddResizeListener(canvas, listener, chart);\n\t\t\treturn;\n\t\t}\n\n\t\tvar expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\n\t\tvar proxies = expando.proxies || (expando.proxies = {});\n\t\tvar proxy = proxies[chart.id + '_' + type] = function(event) {\n\t\t\tlistener(fromNativeEvent(event, chart));\n\t\t};\n\n\t\taddEventListener(canvas, type, proxy);\n\t},\n\n\tremoveEventListener: function(chart, type, listener) {\n\t\tvar canvas = chart.canvas;\n\t\tif (type === 'resize') {\n\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\tremoveResizeListener(canvas, listener);\n\t\t\treturn;\n\t\t}\n\n\t\tvar expando = listener[EXPANDO_KEY] || {};\n\t\tvar proxies = expando.proxies || {};\n\t\tvar proxy = proxies[chart.id + '_' + type];\n\t\tif (!proxy) {\n\t\t\treturn;\n\t\t}\n\n\t\tremoveEventListener(canvas, type, proxy);\n\t}\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use EventTarget.addEventListener instead.\n * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n * @function Chart.helpers.addEvent\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.addEvent = addEventListener;\n\n/**\n * Provided for backward compatibility, use EventTarget.removeEventListener instead.\n * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\n * @function Chart.helpers.removeEvent\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.removeEvent = removeEventListener;\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar ka = moment.defineLocale('ka', {\n months : {\n standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),\n format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')\n },\n monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays : {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),\n isFormat: /(წინა|შემდეგ)/\n },\n weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[დღეს] LT[-ზე]',\n nextDay : '[ხვალ] LT[-ზე]',\n lastDay : '[გუშინ] LT[-ზე]',\n nextWeek : '[შემდეგ] dddd LT[-ზე]',\n lastWeek : '[წინა] dddd LT-ზე',\n sameElse : 'L'\n },\n relativeTime : {\n future : function (s) {\n return (/(წამი|წუთი|საათი|წელი)/).test(s) ?\n s.replace(/ი$/, 'ში') :\n s + 'ში';\n },\n past : function (s) {\n if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {\n return s.replace(/(ი|ე)$/, 'ის უკან');\n }\n if ((/წელი/).test(s)) {\n return s.replace(/წელი$/, 'წლის უკან');\n }\n },\n s : 'რამდენიმე წამი',\n m : 'წუთი',\n mm : '%d წუთი',\n h : 'საათი',\n hh : '%d საათი',\n d : 'დღე',\n dd : '%d დღე',\n M : 'თვე',\n MM : '%d თვე',\n y : 'წელი',\n yy : '%d წელი'\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal : function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week : {\n dow : 1,\n doy : 7\n }\n});\n\nreturn ka;\n\n})));\n","'use strict';\n\nvar defaults = require('./core.defaults');\nvar helpers = require('../helpers/index');\n\nmodule.exports = function(Chart) {\n\n\tChart.scaleService = {\n\t\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\n\t\t// use the new chart options to grab the correct scale\n\t\tconstructors: {},\n\t\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\n\t\t// old browsers\n\n\t\t// Scale config defaults\n\t\tdefaults: {},\n\t\tregisterScaleType: function(type, scaleConstructor, scaleDefaults) {\n\t\t\tthis.constructors[type] = scaleConstructor;\n\t\t\tthis.defaults[type] = helpers.clone(scaleDefaults);\n\t\t},\n\t\tgetScaleConstructor: function(type) {\n\t\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\n\t\t},\n\t\tgetScaleDefaults: function(type) {\n\t\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\n\t\t\treturn this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {};\n\t\t},\n\t\tupdateScaleDefaults: function(type, additions) {\n\t\t\tvar me = this;\n\t\t\tif (me.defaults.hasOwnProperty(type)) {\n\t\t\t\tme.defaults[type] = helpers.extend(me.defaults[type], additions);\n\t\t\t}\n\t\t},\n\t\taddScalesToLayout: function(chart) {\n\t\t\t// Adds each scale to the chart.boxes array to be sized accordingly\n\t\t\thelpers.each(chart.scales, function(scale) {\n\t\t\t\t// Set ILayoutItem parameters for backwards compatibility\n\t\t\t\tscale.fullWidth = scale.options.fullWidth;\n\t\t\t\tscale.position = scale.options.position;\n\t\t\t\tscale.weight = scale.options.weight;\n\t\t\t\tChart.layoutService.addBox(chart, scale);\n\t\t\t});\n\t\t}\n\t};\n};\n","'use strict';\n\nvar helpers = require('./helpers.core');\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easingEffects\n * @see http://www.robertpenner.com/easing/\n */\nvar effects = {\n\tlinear: function(t) {\n\t\treturn t;\n\t},\n\n\teaseInQuad: function(t) {\n\t\treturn t * t;\n\t},\n\n\teaseOutQuad: function(t) {\n\t\treturn -t * (t - 2);\n\t},\n\n\teaseInOutQuad: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t;\n\t\t}\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\n\t},\n\n\teaseInCubic: function(t) {\n\t\treturn t * t * t;\n\t},\n\n\teaseOutCubic: function(t) {\n\t\treturn (t = t - 1) * t * t + 1;\n\t},\n\n\teaseInOutCubic: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\n\t},\n\n\teaseInQuart: function(t) {\n\t\treturn t * t * t * t;\n\t},\n\n\teaseOutQuart: function(t) {\n\t\treturn -((t = t - 1) * t * t * t - 1);\n\t},\n\n\teaseInOutQuart: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t;\n\t\t}\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\n\t},\n\n\teaseInQuint: function(t) {\n\t\treturn t * t * t * t * t;\n\t},\n\n\teaseOutQuint: function(t) {\n\t\treturn (t = t - 1) * t * t * t * t + 1;\n\t},\n\n\teaseInOutQuint: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\n\t},\n\n\teaseInSine: function(t) {\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\n\t},\n\n\teaseOutSine: function(t) {\n\t\treturn Math.sin(t * (Math.PI / 2));\n\t},\n\n\teaseInOutSine: function(t) {\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\n\t},\n\n\teaseInExpo: function(t) {\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\n\t},\n\n\teaseOutExpo: function(t) {\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\n\t},\n\n\teaseInOutExpo: function(t) {\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\n\t\t}\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\n\t},\n\n\teaseInCirc: function(t) {\n\t\tif (t >= 1) {\n\t\t\treturn t;\n\t\t}\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\n\t},\n\n\teaseOutCirc: function(t) {\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\n\t},\n\n\teaseInOutCirc: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\n\t\t}\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n\t},\n\n\teaseInElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t},\n\n\teaseOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\n\t},\n\n\teaseInOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif ((t /= 0.5) === 2) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.45;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\tif (t < 1) {\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t\t}\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\n\t},\n\teaseInBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn t * t * ((s + 1) * t - s);\n\t},\n\n\teaseOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\n\t},\n\n\teaseInOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n\t},\n\n\teaseInBounce: function(t) {\n\t\treturn 1 - effects.easeOutBounce(1 - t);\n\t},\n\n\teaseOutBounce: function(t) {\n\t\tif (t < (1 / 2.75)) {\n\t\t\treturn 7.5625 * t * t;\n\t\t}\n\t\tif (t < (2 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\n\t\t}\n\t\tif (t < (2.5 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\n\t\t}\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\n\t},\n\n\teaseInOutBounce: function(t) {\n\t\tif (t < 0.5) {\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\n\t\t}\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n\t}\n};\n\nmodule.exports = {\n\teffects: effects\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\n * @function Chart.helpers.easingEffects\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.easingEffects = effects;\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar msMy = moment.defineLocale('ms-my', {\n months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar : {\n sameDay : '[Hari ini pukul] LT',\n nextDay : '[Esok pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kelmarin pukul] LT',\n lastWeek : 'dddd [lepas pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dalam %s',\n past : '%s yang lepas',\n s : 'beberapa saat',\n m : 'seminit',\n mm : '%d minit',\n h : 'sejam',\n hh : '%d jam',\n d : 'sehari',\n dd : '%d hari',\n M : 'sebulan',\n MM : '%d bulan',\n y : 'setahun',\n yy : '%d tahun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn msMy;\n\n})));\n","/**\n * Plugin based on discussion from the following Chart.js issues:\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\n */\n\n'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\tplugins: {\n\t\tfiller: {\n\t\t\tpropagate: true\n\t\t}\n\t}\n});\n\nmodule.exports = function() {\n\n\tvar mappers = {\n\t\tdataset: function(source) {\n\t\t\tvar index = source.fill;\n\t\t\tvar chart = source.chart;\n\t\t\tvar meta = chart.getDatasetMeta(index);\n\t\t\tvar visible = meta && chart.isDatasetVisible(index);\n\t\t\tvar points = (visible && meta.dataset._children) || [];\n\t\t\tvar length = points.length || 0;\n\n\t\t\treturn !length ? null : function(point, i) {\n\t\t\t\treturn (i < length && points[i]._view) || null;\n\t\t\t};\n\t\t},\n\n\t\tboundary: function(source) {\n\t\t\tvar boundary = source.boundary;\n\t\t\tvar x = boundary ? boundary.x : null;\n\t\t\tvar y = boundary ? boundary.y : null;\n\n\t\t\treturn function(point) {\n\t\t\t\treturn {\n\t\t\t\t\tx: x === null ? point.x : x,\n\t\t\t\t\ty: y === null ? point.y : y,\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\t};\n\n\t// @todo if (fill[0] === '#')\n\tfunction decodeFill(el, index, count) {\n\t\tvar model = el._model || {};\n\t\tvar fill = model.fill;\n\t\tvar target;\n\n\t\tif (fill === undefined) {\n\t\t\tfill = !!model.backgroundColor;\n\t\t}\n\n\t\tif (fill === false || fill === null) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (fill === true) {\n\t\t\treturn 'origin';\n\t\t}\n\n\t\ttarget = parseFloat(fill, 10);\n\t\tif (isFinite(target) && Math.floor(target) === target) {\n\t\t\tif (fill[0] === '-' || fill[0] === '+') {\n\t\t\t\ttarget = index + target;\n\t\t\t}\n\n\t\t\tif (target === index || target < 0 || target >= count) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn target;\n\t\t}\n\n\t\tswitch (fill) {\n\t\t// compatibility\n\t\tcase 'bottom':\n\t\t\treturn 'start';\n\t\tcase 'top':\n\t\t\treturn 'end';\n\t\tcase 'zero':\n\t\t\treturn 'origin';\n\t\t// supported boundaries\n\t\tcase 'origin':\n\t\tcase 'start':\n\t\tcase 'end':\n\t\t\treturn fill;\n\t\t// invalid fill values\n\t\tdefault:\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tfunction computeBoundary(source) {\n\t\tvar model = source.el._model || {};\n\t\tvar scale = source.el._scale || {};\n\t\tvar fill = source.fill;\n\t\tvar target = null;\n\t\tvar horizontal;\n\n\t\tif (isFinite(fill)) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Backward compatibility: until v3, we still need to support boundary values set on\n\t\t// the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\n\t\t// controllers might still use it (e.g. the Smith chart).\n\n\t\tif (fill === 'start') {\n\t\t\ttarget = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\n\t\t} else if (fill === 'end') {\n\t\t\ttarget = model.scaleTop === undefined ? scale.top : model.scaleTop;\n\t\t} else if (model.scaleZero !== undefined) {\n\t\t\ttarget = model.scaleZero;\n\t\t} else if (scale.getBasePosition) {\n\t\t\ttarget = scale.getBasePosition();\n\t\t} else if (scale.getBasePixel) {\n\t\t\ttarget = scale.getBasePixel();\n\t\t}\n\n\t\tif (target !== undefined && target !== null) {\n\t\t\tif (target.x !== undefined && target.y !== undefined) {\n\t\t\t\treturn target;\n\t\t\t}\n\n\t\t\tif (typeof target === 'number' && isFinite(target)) {\n\t\t\t\thorizontal = scale.isHorizontal();\n\t\t\t\treturn {\n\t\t\t\t\tx: horizontal ? target : null,\n\t\t\t\t\ty: horizontal ? null : target\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction resolveTarget(sources, index, propagate) {\n\t\tvar source = sources[index];\n\t\tvar fill = source.fill;\n\t\tvar visited = [index];\n\t\tvar target;\n\n\t\tif (!propagate) {\n\t\t\treturn fill;\n\t\t}\n\n\t\twhile (fill !== false && visited.indexOf(fill) === -1) {\n\t\t\tif (!isFinite(fill)) {\n\t\t\t\treturn fill;\n\t\t\t}\n\n\t\t\ttarget = sources[fill];\n\t\t\tif (!target) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (target.visible) {\n\t\t\t\treturn fill;\n\t\t\t}\n\n\t\t\tvisited.push(fill);\n\t\t\tfill = target.fill;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tfunction createMapper(source) {\n\t\tvar fill = source.fill;\n\t\tvar type = 'dataset';\n\n\t\tif (fill === false) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (!isFinite(fill)) {\n\t\t\ttype = 'boundary';\n\t\t}\n\n\t\treturn mappers[type](source);\n\t}\n\n\tfunction isDrawable(point) {\n\t\treturn point && !point.skip;\n\t}\n\n\tfunction drawArea(ctx, curve0, curve1, len0, len1) {\n\t\tvar i;\n\n\t\tif (!len0 || !len1) {\n\t\t\treturn;\n\t\t}\n\n\t\t// building first area curve (normal)\n\t\tctx.moveTo(curve0[0].x, curve0[0].y);\n\t\tfor (i = 1; i < len0; ++i) {\n\t\t\thelpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\n\t\t}\n\n\t\t// joining the two area curves\n\t\tctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\n\n\t\t// building opposite area curve (reverse)\n\t\tfor (i = len1 - 1; i > 0; --i) {\n\t\t\thelpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\n\t\t}\n\t}\n\n\tfunction doFill(ctx, points, mapper, view, color, loop) {\n\t\tvar count = points.length;\n\t\tvar span = view.spanGaps;\n\t\tvar curve0 = [];\n\t\tvar curve1 = [];\n\t\tvar len0 = 0;\n\t\tvar len1 = 0;\n\t\tvar i, ilen, index, p0, p1, d0, d1;\n\n\t\tctx.beginPath();\n\n\t\tfor (i = 0, ilen = (count + !!loop); i < ilen; ++i) {\n\t\t\tindex = i % count;\n\t\t\tp0 = points[index]._view;\n\t\t\tp1 = mapper(p0, index, view);\n\t\t\td0 = isDrawable(p0);\n\t\t\td1 = isDrawable(p1);\n\n\t\t\tif (d0 && d1) {\n\t\t\t\tlen0 = curve0.push(p0);\n\t\t\t\tlen1 = curve1.push(p1);\n\t\t\t} else if (len0 && len1) {\n\t\t\t\tif (!span) {\n\t\t\t\t\tdrawArea(ctx, curve0, curve1, len0, len1);\n\t\t\t\t\tlen0 = len1 = 0;\n\t\t\t\t\tcurve0 = [];\n\t\t\t\t\tcurve1 = [];\n\t\t\t\t} else {\n\t\t\t\t\tif (d0) {\n\t\t\t\t\t\tcurve0.push(p0);\n\t\t\t\t\t}\n\t\t\t\t\tif (d1) {\n\t\t\t\t\t\tcurve1.push(p1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdrawArea(ctx, curve0, curve1, len0, len1);\n\n\t\tctx.closePath();\n\t\tctx.fillStyle = color;\n\t\tctx.fill();\n\t}\n\n\treturn {\n\t\tid: 'filler',\n\n\t\tafterDatasetsUpdate: function(chart, options) {\n\t\t\tvar count = (chart.data.datasets || []).length;\n\t\t\tvar propagate = options.propagate;\n\t\t\tvar sources = [];\n\t\t\tvar meta, i, el, source;\n\n\t\t\tfor (i = 0; i < count; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tel = meta.dataset;\n\t\t\t\tsource = null;\n\n\t\t\t\tif (el && el._model && el instanceof elements.Line) {\n\t\t\t\t\tsource = {\n\t\t\t\t\t\tvisible: chart.isDatasetVisible(i),\n\t\t\t\t\t\tfill: decodeFill(el, i, count),\n\t\t\t\t\t\tchart: chart,\n\t\t\t\t\t\tel: el\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tmeta.$filler = source;\n\t\t\t\tsources.push(source);\n\t\t\t}\n\n\t\t\tfor (i = 0; i < count; ++i) {\n\t\t\t\tsource = sources[i];\n\t\t\t\tif (!source) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tsource.fill = resolveTarget(sources, i, propagate);\n\t\t\t\tsource.boundary = computeBoundary(source);\n\t\t\t\tsource.mapper = createMapper(source);\n\t\t\t}\n\t\t},\n\n\t\tbeforeDatasetDraw: function(chart, args) {\n\t\t\tvar meta = args.meta.$filler;\n\t\t\tif (!meta) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar ctx = chart.ctx;\n\t\t\tvar el = meta.el;\n\t\t\tvar view = el._view;\n\t\t\tvar points = el._children || [];\n\t\t\tvar mapper = meta.mapper;\n\t\t\tvar color = view.backgroundColor || defaults.global.defaultColor;\n\n\t\t\tif (mapper && color && points.length) {\n\t\t\t\thelpers.canvas.clipArea(ctx, chart.chartArea);\n\t\t\t\tdoFill(ctx, points, mapper, view, color, el._loop);\n\t\t\t\thelpers.canvas.unclipArea(ctx);\n\t\t\t}\n\t\t}\n\t};\n};\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar fo = moment.defineLocale('fo', {\n months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),\n weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D. MMMM, YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Í dag kl.] LT',\n nextDay : '[Í morgin kl.] LT',\n nextWeek : 'dddd [kl.] LT',\n lastDay : '[Í gjár kl.] LT',\n lastWeek : '[síðstu] dddd [kl] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'um %s',\n past : '%s síðani',\n s : 'fá sekund',\n m : 'ein minutt',\n mm : '%d minuttir',\n h : 'ein tími',\n hh : '%d tímar',\n d : 'ein dagur',\n dd : '%d dagar',\n M : 'ein mánaði',\n MM : '%d mánaðir',\n y : 'eitt ár',\n yy : '%d ár'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn fo;\n\n})));\n","'use strict';\n\nmodule.exports = {};\nmodule.exports.Arc = require('./element.arc');\nmodule.exports.Line = require('./element.line');\nmodule.exports.Point = require('./element.point');\nmodule.exports.Rectangle = require('./element.rectangle');\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar ca = moment.defineLocale('ca', {\n months : {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\n format: 'de gener_de febrer_de març_d\\'abril_de maig_de juny_de juliol_d\\'agost_de setembre_d\\'octubre_de novembre_de desembre'.split('_'),\n isFormat: /D[oD]?(\\s)+MMMM/\n },\n monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),\n monthsParseExact : true,\n weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\n weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : '[el] D MMMM [de] YYYY',\n ll : 'D MMM YYYY',\n LLL : '[el] D MMMM [de] YYYY [a les] H:mm',\n lll : 'D MMM YYYY, H:mm',\n LLLL : '[el] dddd D MMMM [de] YYYY [a les] H:mm',\n llll : 'ddd D MMM YYYY, H:mm'\n },\n calendar : {\n sameDay : function () {\n return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n nextDay : function () {\n return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n lastDay : function () {\n return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'd\\'aquí %s',\n past : 'fa %s',\n s : 'uns segons',\n m : 'un minut',\n mm : '%d minuts',\n h : 'una hora',\n hh : '%d hores',\n d : 'un dia',\n dd : '%d dies',\n M : 'un mes',\n MM : '%d mesos',\n y : 'un any',\n yy : '%d anys'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal : function (number, period) {\n var output = (number === 1) ? 'r' :\n (number === 2) ? 'n' :\n (number === 3) ? 'r' :\n (number === 4) ? 't' : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');\nvar monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\nvar esDo = moment.defineLocale('es-do', {\n months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsParseExact : true,\n weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY h:mm A',\n LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar : {\n sameDay : function () {\n return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextDay : function () {\n return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastDay : function () {\n return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'en %s',\n past : 'hace %s',\n s : 'unos segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'una hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un año',\n yy : '%d años'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar lo = moment.defineLocale('lo', {\n months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'ວັນdddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar : {\n sameDay : '[ມື້ນີ້ເວລາ] LT',\n nextDay : '[ມື້ອື່ນເວລາ] LT',\n nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay : '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ອີກ %s',\n past : '%sຜ່ານມາ',\n s : 'ບໍ່ເທົ່າໃດວິນາທີ',\n m : '1 ນາທີ',\n mm : '%d ນາທີ',\n h : '1 ຊົ່ວໂມງ',\n hh : '%d ຊົ່ວໂມງ',\n d : '1 ມື້',\n dd : '%d ມື້',\n M : '1 ເດືອນ',\n MM : '%d ເດືອນ',\n y : '1 ປີ',\n yy : '%d ປີ'\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal : function (number) {\n return 'ທີ່' + number;\n }\n});\n\nreturn lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [number + ' Tage', number + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [number + ' Monate', number + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n}\n\nvar deAt = moment.defineLocale('de-at', {\n months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime : {\n future : 'in %s',\n past : 'vor %s',\n s : 'ein paar Sekunden',\n m : processRelativeTime,\n mm : '%d Minuten',\n h : processRelativeTime,\n hh : '%d Stunden',\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر'\n];\nvar days = [\n 'آچر',\n 'سومر',\n 'اڱارو',\n 'اربع',\n 'خميس',\n 'جمع',\n 'ڇنڇر'\n];\n\nvar sd = moment.defineLocale('sd', {\n months : months,\n monthsShort : months,\n weekdays : days,\n weekdaysShort : days,\n weekdaysMin : days,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd، D MMMM YYYY HH:mm'\n },\n meridiemParse: /صبح|شام/,\n isPM : function (input) {\n return 'شام' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar : {\n sameDay : '[اڄ] LT',\n nextDay : '[سڀاڻي] LT',\n nextWeek : 'dddd [اڳين هفتي تي] LT',\n lastDay : '[ڪالهه] LT',\n lastWeek : '[گزريل هفتي] dddd [تي] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s پوء',\n past : '%s اڳ',\n s : 'چند سيڪنڊ',\n m : 'هڪ منٽ',\n mm : '%d منٽ',\n h : 'هڪ ڪلاڪ',\n hh : '%d ڪلاڪ',\n d : 'هڪ ڏينهن',\n dd : '%d ڏينهن',\n M : 'هڪ مهينو',\n MM : '%d مهينا',\n y : 'هڪ سال',\n yy : '%d سال'\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn sd;\n\n})));\n","'use strict';\n\nvar defaults = require('./core.defaults');\nvar Element = require('./core.element');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\ttooltips: {\n\t\tenabled: true,\n\t\tcustom: null,\n\t\tmode: 'nearest',\n\t\tposition: 'average',\n\t\tintersect: true,\n\t\tbackgroundColor: 'rgba(0,0,0,0.8)',\n\t\ttitleFontStyle: 'bold',\n\t\ttitleSpacing: 2,\n\t\ttitleMarginBottom: 6,\n\t\ttitleFontColor: '#fff',\n\t\ttitleAlign: 'left',\n\t\tbodySpacing: 2,\n\t\tbodyFontColor: '#fff',\n\t\tbodyAlign: 'left',\n\t\tfooterFontStyle: 'bold',\n\t\tfooterSpacing: 2,\n\t\tfooterMarginTop: 6,\n\t\tfooterFontColor: '#fff',\n\t\tfooterAlign: 'left',\n\t\tyPadding: 6,\n\t\txPadding: 6,\n\t\tcaretPadding: 2,\n\t\tcaretSize: 5,\n\t\tcornerRadius: 6,\n\t\tmultiKeyBackground: '#fff',\n\t\tdisplayColors: true,\n\t\tborderColor: 'rgba(0,0,0,0)',\n\t\tborderWidth: 0,\n\t\tcallbacks: {\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeTitle: helpers.noop,\n\t\t\ttitle: function(tooltipItems, data) {\n\t\t\t\t// Pick first xLabel for now\n\t\t\t\tvar title = '';\n\t\t\t\tvar labels = data.labels;\n\t\t\t\tvar labelCount = labels ? labels.length : 0;\n\n\t\t\t\tif (tooltipItems.length > 0) {\n\t\t\t\t\tvar item = tooltipItems[0];\n\n\t\t\t\t\tif (item.xLabel) {\n\t\t\t\t\t\ttitle = item.xLabel;\n\t\t\t\t\t} else if (labelCount > 0 && item.index < labelCount) {\n\t\t\t\t\t\ttitle = labels[item.index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn title;\n\t\t\t},\n\t\t\tafterTitle: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeBody: helpers.noop,\n\n\t\t\t// Args are: (tooltipItem, data)\n\t\t\tbeforeLabel: helpers.noop,\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar label = data.datasets[tooltipItem.datasetIndex].label || '';\n\n\t\t\t\tif (label) {\n\t\t\t\t\tlabel += ': ';\n\t\t\t\t}\n\t\t\t\tlabel += tooltipItem.yLabel;\n\t\t\t\treturn label;\n\t\t\t},\n\t\t\tlabelColor: function(tooltipItem, chart) {\n\t\t\t\tvar meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\n\t\t\t\tvar activeElement = meta.data[tooltipItem.index];\n\t\t\t\tvar view = activeElement._view;\n\t\t\t\treturn {\n\t\t\t\t\tborderColor: view.borderColor,\n\t\t\t\t\tbackgroundColor: view.backgroundColor\n\t\t\t\t};\n\t\t\t},\n\t\t\tlabelTextColor: function() {\n\t\t\t\treturn this._options.bodyFontColor;\n\t\t\t},\n\t\t\tafterLabel: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tafterBody: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeFooter: helpers.noop,\n\t\t\tfooter: helpers.noop,\n\t\t\tafterFooter: helpers.noop\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\t/**\n \t * Helper method to merge the opacity into a color\n \t */\n\tfunction mergeOpacity(colorString, opacity) {\n\t\tvar color = helpers.color(colorString);\n\t\treturn color.alpha(opacity * color.alpha()).rgbaString();\n\t}\n\n\t// Helper to push or concat based on if the 2nd parameter is an array or not\n\tfunction pushOrConcat(base, toPush) {\n\t\tif (toPush) {\n\t\t\tif (helpers.isArray(toPush)) {\n\t\t\t\t// base = base.concat(toPush);\n\t\t\t\tArray.prototype.push.apply(base, toPush);\n\t\t\t} else {\n\t\t\t\tbase.push(toPush);\n\t\t\t}\n\t\t}\n\n\t\treturn base;\n\t}\n\n\t// Private helper to create a tooltip item model\n\t// @param element : the chart element (point, arc, bar) to create the tooltip item for\n\t// @return : new tooltip item\n\tfunction createTooltipItem(element) {\n\t\tvar xScale = element._xScale;\n\t\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\n\t\tvar index = element._index;\n\t\tvar datasetIndex = element._datasetIndex;\n\n\t\treturn {\n\t\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\n\t\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\n\t\t\tindex: index,\n\t\t\tdatasetIndex: datasetIndex,\n\t\t\tx: element._model.x,\n\t\t\ty: element._model.y\n\t\t};\n\t}\n\n\t/**\n\t * Helper to get the reset model for the tooltip\n\t * @param tooltipOpts {Object} the tooltip options\n\t */\n\tfunction getBaseModel(tooltipOpts) {\n\t\tvar globalDefaults = defaults.global;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\n\t\treturn {\n\t\t\t// Positioning\n\t\t\txPadding: tooltipOpts.xPadding,\n\t\t\tyPadding: tooltipOpts.yPadding,\n\t\t\txAlign: tooltipOpts.xAlign,\n\t\t\tyAlign: tooltipOpts.yAlign,\n\n\t\t\t// Body\n\t\t\tbodyFontColor: tooltipOpts.bodyFontColor,\n\t\t\t_bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\n\t\t\t_bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\n\t\t\t_bodyAlign: tooltipOpts.bodyAlign,\n\t\t\tbodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\n\t\t\tbodySpacing: tooltipOpts.bodySpacing,\n\n\t\t\t// Title\n\t\t\ttitleFontColor: tooltipOpts.titleFontColor,\n\t\t\t_titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\n\t\t\t_titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\n\t\t\ttitleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\n\t\t\t_titleAlign: tooltipOpts.titleAlign,\n\t\t\ttitleSpacing: tooltipOpts.titleSpacing,\n\t\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\n\n\t\t\t// Footer\n\t\t\tfooterFontColor: tooltipOpts.footerFontColor,\n\t\t\t_footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\n\t\t\t_footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\n\t\t\tfooterFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\n\t\t\t_footerAlign: tooltipOpts.footerAlign,\n\t\t\tfooterSpacing: tooltipOpts.footerSpacing,\n\t\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\n\n\t\t\t// Appearance\n\t\t\tcaretSize: tooltipOpts.caretSize,\n\t\t\tcornerRadius: tooltipOpts.cornerRadius,\n\t\t\tbackgroundColor: tooltipOpts.backgroundColor,\n\t\t\topacity: 0,\n\t\t\tlegendColorBackground: tooltipOpts.multiKeyBackground,\n\t\t\tdisplayColors: tooltipOpts.displayColors,\n\t\t\tborderColor: tooltipOpts.borderColor,\n\t\t\tborderWidth: tooltipOpts.borderWidth\n\t\t};\n\t}\n\n\t/**\n\t * Get the size of the tooltip\n\t */\n\tfunction getTooltipSize(tooltip, model) {\n\t\tvar ctx = tooltip._chart.ctx;\n\n\t\tvar height = model.yPadding * 2; // Tooltip Padding\n\t\tvar width = 0;\n\n\t\t// Count of all lines in the body\n\t\tvar body = model.body;\n\t\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\n\t\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\n\t\t}, 0);\n\t\tcombinedBodyLength += model.beforeBody.length + model.afterBody.length;\n\n\t\tvar titleLineCount = model.title.length;\n\t\tvar footerLineCount = model.footer.length;\n\t\tvar titleFontSize = model.titleFontSize;\n\t\tvar bodyFontSize = model.bodyFontSize;\n\t\tvar footerFontSize = model.footerFontSize;\n\n\t\theight += titleLineCount * titleFontSize; // Title Lines\n\t\theight += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\n\t\theight += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\n\t\theight += combinedBodyLength * bodyFontSize; // Body Lines\n\t\theight += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\n\t\theight += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\n\t\theight += footerLineCount * (footerFontSize); // Footer Lines\n\t\theight += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\n\n\t\t// Title width\n\t\tvar widthPadding = 0;\n\t\tvar maxLineWidth = function(line) {\n\t\t\twidth = Math.max(width, ctx.measureText(line).width + widthPadding);\n\t\t};\n\n\t\tctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\n\t\thelpers.each(model.title, maxLineWidth);\n\n\t\t// Body width\n\t\tctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\n\t\thelpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\n\n\t\t// Body lines may include some extra width due to the color box\n\t\twidthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\n\t\thelpers.each(body, function(bodyItem) {\n\t\t\thelpers.each(bodyItem.before, maxLineWidth);\n\t\t\thelpers.each(bodyItem.lines, maxLineWidth);\n\t\t\thelpers.each(bodyItem.after, maxLineWidth);\n\t\t});\n\n\t\t// Reset back to 0\n\t\twidthPadding = 0;\n\n\t\t// Footer width\n\t\tctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\n\t\thelpers.each(model.footer, maxLineWidth);\n\n\t\t// Add padding\n\t\twidth += 2 * model.xPadding;\n\n\t\treturn {\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t};\n\t}\n\n\t/**\n\t * Helper to get the alignment of a tooltip given the size\n\t */\n\tfunction determineAlignment(tooltip, size) {\n\t\tvar model = tooltip._model;\n\t\tvar chart = tooltip._chart;\n\t\tvar chartArea = tooltip._chart.chartArea;\n\t\tvar xAlign = 'center';\n\t\tvar yAlign = 'center';\n\n\t\tif (model.y < size.height) {\n\t\t\tyAlign = 'top';\n\t\t} else if (model.y > (chart.height - size.height)) {\n\t\t\tyAlign = 'bottom';\n\t\t}\n\n\t\tvar lf, rf; // functions to determine left, right alignment\n\t\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\n\t\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\n\t\tvar midX = (chartArea.left + chartArea.right) / 2;\n\t\tvar midY = (chartArea.top + chartArea.bottom) / 2;\n\n\t\tif (yAlign === 'center') {\n\t\t\tlf = function(x) {\n\t\t\t\treturn x <= midX;\n\t\t\t};\n\t\t\trf = function(x) {\n\t\t\t\treturn x > midX;\n\t\t\t};\n\t\t} else {\n\t\t\tlf = function(x) {\n\t\t\t\treturn x <= (size.width / 2);\n\t\t\t};\n\t\t\trf = function(x) {\n\t\t\t\treturn x >= (chart.width - (size.width / 2));\n\t\t\t};\n\t\t}\n\n\t\tolf = function(x) {\n\t\t\treturn x + size.width > chart.width;\n\t\t};\n\t\torf = function(x) {\n\t\t\treturn x - size.width < 0;\n\t\t};\n\t\tyf = function(y) {\n\t\t\treturn y <= midY ? 'top' : 'bottom';\n\t\t};\n\n\t\tif (lf(model.x)) {\n\t\t\txAlign = 'left';\n\n\t\t\t// Is tooltip too wide and goes over the right side of the chart.?\n\t\t\tif (olf(model.x)) {\n\t\t\t\txAlign = 'center';\n\t\t\t\tyAlign = yf(model.y);\n\t\t\t}\n\t\t} else if (rf(model.x)) {\n\t\t\txAlign = 'right';\n\n\t\t\t// Is tooltip too wide and goes outside left edge of canvas?\n\t\t\tif (orf(model.x)) {\n\t\t\t\txAlign = 'center';\n\t\t\t\tyAlign = yf(model.y);\n\t\t\t}\n\t\t}\n\n\t\tvar opts = tooltip._options;\n\t\treturn {\n\t\t\txAlign: opts.xAlign ? opts.xAlign : xAlign,\n\t\t\tyAlign: opts.yAlign ? opts.yAlign : yAlign\n\t\t};\n\t}\n\n\t/**\n\t * @Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n\t */\n\tfunction getBackgroundPoint(vm, size, alignment) {\n\t\t// Background Position\n\t\tvar x = vm.x;\n\t\tvar y = vm.y;\n\n\t\tvar caretSize = vm.caretSize;\n\t\tvar caretPadding = vm.caretPadding;\n\t\tvar cornerRadius = vm.cornerRadius;\n\t\tvar xAlign = alignment.xAlign;\n\t\tvar yAlign = alignment.yAlign;\n\t\tvar paddingAndSize = caretSize + caretPadding;\n\t\tvar radiusAndPadding = cornerRadius + caretPadding;\n\n\t\tif (xAlign === 'right') {\n\t\t\tx -= size.width;\n\t\t} else if (xAlign === 'center') {\n\t\t\tx -= (size.width / 2);\n\t\t}\n\n\t\tif (yAlign === 'top') {\n\t\t\ty += paddingAndSize;\n\t\t} else if (yAlign === 'bottom') {\n\t\t\ty -= size.height + paddingAndSize;\n\t\t} else {\n\t\t\ty -= (size.height / 2);\n\t\t}\n\n\t\tif (yAlign === 'center') {\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx += paddingAndSize;\n\t\t\t} else if (xAlign === 'right') {\n\t\t\t\tx -= paddingAndSize;\n\t\t\t}\n\t\t} else if (xAlign === 'left') {\n\t\t\tx -= radiusAndPadding;\n\t\t} else if (xAlign === 'right') {\n\t\t\tx += radiusAndPadding;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t}\n\n\tChart.Tooltip = Element.extend({\n\t\tinitialize: function() {\n\t\t\tthis._model = getBaseModel(this._options);\n\t\t\tthis._lastActive = [];\n\t\t},\n\n\t\t// Get the title\n\t\t// Args are: (tooltipItem, data)\n\t\tgetTitle: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me._options;\n\t\t\tvar callbacks = opts.callbacks;\n\n\t\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments);\n\t\t\tvar title = callbacks.title.apply(me, arguments);\n\t\t\tvar afterTitle = callbacks.afterTitle.apply(me, arguments);\n\n\t\t\tvar lines = [];\n\t\t\tlines = pushOrConcat(lines, beforeTitle);\n\t\t\tlines = pushOrConcat(lines, title);\n\t\t\tlines = pushOrConcat(lines, afterTitle);\n\n\t\t\treturn lines;\n\t\t},\n\n\t\t// Args are: (tooltipItem, data)\n\t\tgetBeforeBody: function() {\n\t\t\tvar lines = this._options.callbacks.beforeBody.apply(this, arguments);\n\t\t\treturn helpers.isArray(lines) ? lines : lines !== undefined ? [lines] : [];\n\t\t},\n\n\t\t// Args are: (tooltipItem, data)\n\t\tgetBody: function(tooltipItems, data) {\n\t\t\tvar me = this;\n\t\t\tvar callbacks = me._options.callbacks;\n\t\t\tvar bodyItems = [];\n\n\t\t\thelpers.each(tooltipItems, function(tooltipItem) {\n\t\t\t\tvar bodyItem = {\n\t\t\t\t\tbefore: [],\n\t\t\t\t\tlines: [],\n\t\t\t\t\tafter: []\n\t\t\t\t};\n\t\t\t\tpushOrConcat(bodyItem.before, callbacks.beforeLabel.call(me, tooltipItem, data));\n\t\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\n\t\t\t\tpushOrConcat(bodyItem.after, callbacks.afterLabel.call(me, tooltipItem, data));\n\n\t\t\t\tbodyItems.push(bodyItem);\n\t\t\t});\n\n\t\t\treturn bodyItems;\n\t\t},\n\n\t\t// Args are: (tooltipItem, data)\n\t\tgetAfterBody: function() {\n\t\t\tvar lines = this._options.callbacks.afterBody.apply(this, arguments);\n\t\t\treturn helpers.isArray(lines) ? lines : lines !== undefined ? [lines] : [];\n\t\t},\n\n\t\t// Get the footer and beforeFooter and afterFooter lines\n\t\t// Args are: (tooltipItem, data)\n\t\tgetFooter: function() {\n\t\t\tvar me = this;\n\t\t\tvar callbacks = me._options.callbacks;\n\n\t\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\n\t\t\tvar footer = callbacks.footer.apply(me, arguments);\n\t\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\n\n\t\t\tvar lines = [];\n\t\t\tlines = pushOrConcat(lines, beforeFooter);\n\t\t\tlines = pushOrConcat(lines, footer);\n\t\t\tlines = pushOrConcat(lines, afterFooter);\n\n\t\t\treturn lines;\n\t\t},\n\n\t\tupdate: function(changed) {\n\t\t\tvar me = this;\n\t\t\tvar opts = me._options;\n\n\t\t\t// Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition\n\t\t\t// that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time\n\t\t\t// which breaks any animations.\n\t\t\tvar existingModel = me._model;\n\t\t\tvar model = me._model = getBaseModel(opts);\n\t\t\tvar active = me._active;\n\n\t\t\tvar data = me._data;\n\n\t\t\t// In the case where active.length === 0 we need to keep these at existing values for good animations\n\t\t\tvar alignment = {\n\t\t\t\txAlign: existingModel.xAlign,\n\t\t\t\tyAlign: existingModel.yAlign\n\t\t\t};\n\t\t\tvar backgroundPoint = {\n\t\t\t\tx: existingModel.x,\n\t\t\t\ty: existingModel.y\n\t\t\t};\n\t\t\tvar tooltipSize = {\n\t\t\t\twidth: existingModel.width,\n\t\t\t\theight: existingModel.height\n\t\t\t};\n\t\t\tvar tooltipPosition = {\n\t\t\t\tx: existingModel.caretX,\n\t\t\t\ty: existingModel.caretY\n\t\t\t};\n\n\t\t\tvar i, len;\n\n\t\t\tif (active.length) {\n\t\t\t\tmodel.opacity = 1;\n\n\t\t\t\tvar labelColors = [];\n\t\t\t\tvar labelTextColors = [];\n\t\t\t\ttooltipPosition = Chart.Tooltip.positioners[opts.position].call(me, active, me._eventPosition);\n\n\t\t\t\tvar tooltipItems = [];\n\t\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\n\t\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\n\t\t\t\t}\n\n\t\t\t\t// If the user provided a filter function, use it to modify the tooltip items\n\t\t\t\tif (opts.filter) {\n\t\t\t\t\ttooltipItems = tooltipItems.filter(function(a) {\n\t\t\t\t\t\treturn opts.filter(a, data);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\n\t\t\t\tif (opts.itemSort) {\n\t\t\t\t\ttooltipItems = tooltipItems.sort(function(a, b) {\n\t\t\t\t\t\treturn opts.itemSort(a, b, data);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Determine colors for boxes\n\t\t\t\thelpers.each(tooltipItems, function(tooltipItem) {\n\t\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\n\t\t\t\t\tlabelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\n\t\t\t\t});\n\n\n\t\t\t\t// Build the Text Lines\n\t\t\t\tmodel.title = me.getTitle(tooltipItems, data);\n\t\t\t\tmodel.beforeBody = me.getBeforeBody(tooltipItems, data);\n\t\t\t\tmodel.body = me.getBody(tooltipItems, data);\n\t\t\t\tmodel.afterBody = me.getAfterBody(tooltipItems, data);\n\t\t\t\tmodel.footer = me.getFooter(tooltipItems, data);\n\n\t\t\t\t// Initial positioning and colors\n\t\t\t\tmodel.x = Math.round(tooltipPosition.x);\n\t\t\t\tmodel.y = Math.round(tooltipPosition.y);\n\t\t\t\tmodel.caretPadding = opts.caretPadding;\n\t\t\t\tmodel.labelColors = labelColors;\n\t\t\t\tmodel.labelTextColors = labelTextColors;\n\n\t\t\t\t// data points\n\t\t\t\tmodel.dataPoints = tooltipItems;\n\n\t\t\t\t// We need to determine alignment of the tooltip\n\t\t\t\ttooltipSize = getTooltipSize(this, model);\n\t\t\t\talignment = determineAlignment(this, tooltipSize);\n\t\t\t\t// Final Size and Position\n\t\t\t\tbackgroundPoint = getBackgroundPoint(model, tooltipSize, alignment);\n\t\t\t} else {\n\t\t\t\tmodel.opacity = 0;\n\t\t\t}\n\n\t\t\tmodel.xAlign = alignment.xAlign;\n\t\t\tmodel.yAlign = alignment.yAlign;\n\t\t\tmodel.x = backgroundPoint.x;\n\t\t\tmodel.y = backgroundPoint.y;\n\t\t\tmodel.width = tooltipSize.width;\n\t\t\tmodel.height = tooltipSize.height;\n\n\t\t\t// Point where the caret on the tooltip points to\n\t\t\tmodel.caretX = tooltipPosition.x;\n\t\t\tmodel.caretY = tooltipPosition.y;\n\n\t\t\tme._model = model;\n\n\t\t\tif (changed && opts.custom) {\n\t\t\t\topts.custom.call(me, model);\n\t\t\t}\n\n\t\t\treturn me;\n\t\t},\n\t\tdrawCaret: function(tooltipPoint, size) {\n\t\t\tvar ctx = this._chart.ctx;\n\t\t\tvar vm = this._view;\n\t\t\tvar caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\n\n\t\t\tctx.lineTo(caretPosition.x1, caretPosition.y1);\n\t\t\tctx.lineTo(caretPosition.x2, caretPosition.y2);\n\t\t\tctx.lineTo(caretPosition.x3, caretPosition.y3);\n\t\t},\n\t\tgetCaretPosition: function(tooltipPoint, size, vm) {\n\t\t\tvar x1, x2, x3, y1, y2, y3;\n\t\t\tvar caretSize = vm.caretSize;\n\t\t\tvar cornerRadius = vm.cornerRadius;\n\t\t\tvar xAlign = vm.xAlign;\n\t\t\tvar yAlign = vm.yAlign;\n\t\t\tvar ptX = tooltipPoint.x;\n\t\t\tvar ptY = tooltipPoint.y;\n\t\t\tvar width = size.width;\n\t\t\tvar height = size.height;\n\n\t\t\tif (yAlign === 'center') {\n\t\t\t\ty2 = ptY + (height / 2);\n\n\t\t\t\tif (xAlign === 'left') {\n\t\t\t\t\tx1 = ptX;\n\t\t\t\t\tx2 = x1 - caretSize;\n\t\t\t\t\tx3 = x1;\n\n\t\t\t\t\ty1 = y2 + caretSize;\n\t\t\t\t\ty3 = y2 - caretSize;\n\t\t\t\t} else {\n\t\t\t\t\tx1 = ptX + width;\n\t\t\t\t\tx2 = x1 + caretSize;\n\t\t\t\t\tx3 = x1;\n\n\t\t\t\t\ty1 = y2 - caretSize;\n\t\t\t\t\ty3 = y2 + caretSize;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (xAlign === 'left') {\n\t\t\t\t\tx2 = ptX + cornerRadius + (caretSize);\n\t\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\t\tx3 = x2 + caretSize;\n\t\t\t\t} else if (xAlign === 'right') {\n\t\t\t\t\tx2 = ptX + width - cornerRadius - caretSize;\n\t\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\t\tx3 = x2 + caretSize;\n\t\t\t\t} else {\n\t\t\t\t\tx2 = ptX + (width / 2);\n\t\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\t\tx3 = x2 + caretSize;\n\t\t\t\t}\n\t\t\t\tif (yAlign === 'top') {\n\t\t\t\t\ty1 = ptY;\n\t\t\t\t\ty2 = y1 - caretSize;\n\t\t\t\t\ty3 = y1;\n\t\t\t\t} else {\n\t\t\t\t\ty1 = ptY + height;\n\t\t\t\t\ty2 = y1 + caretSize;\n\t\t\t\t\ty3 = y1;\n\t\t\t\t\t// invert drawing order\n\t\t\t\t\tvar tmp = x3;\n\t\t\t\t\tx3 = x1;\n\t\t\t\t\tx1 = tmp;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\n\t\t},\n\t\tdrawTitle: function(pt, vm, ctx, opacity) {\n\t\t\tvar title = vm.title;\n\n\t\t\tif (title.length) {\n\t\t\t\tctx.textAlign = vm._titleAlign;\n\t\t\t\tctx.textBaseline = 'top';\n\n\t\t\t\tvar titleFontSize = vm.titleFontSize;\n\t\t\t\tvar titleSpacing = vm.titleSpacing;\n\n\t\t\t\tctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity);\n\t\t\t\tctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\n\n\t\t\t\tvar i, len;\n\t\t\t\tfor (i = 0, len = title.length; i < len; ++i) {\n\t\t\t\t\tctx.fillText(title[i], pt.x, pt.y);\n\t\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\n\n\t\t\t\t\tif (i + 1 === title.length) {\n\t\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdrawBody: function(pt, vm, ctx, opacity) {\n\t\t\tvar bodyFontSize = vm.bodyFontSize;\n\t\t\tvar bodySpacing = vm.bodySpacing;\n\t\t\tvar body = vm.body;\n\n\t\t\tctx.textAlign = vm._bodyAlign;\n\t\t\tctx.textBaseline = 'top';\n\t\t\tctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\n\n\t\t\t// Before Body\n\t\t\tvar xLinePadding = 0;\n\t\t\tvar fillLineOfText = function(line) {\n\t\t\t\tctx.fillText(line, pt.x + xLinePadding, pt.y);\n\t\t\t\tpt.y += bodyFontSize + bodySpacing;\n\t\t\t};\n\n\t\t\t// Before body lines\n\t\t\tctx.fillStyle = mergeOpacity(vm.bodyFontColor, opacity);\n\t\t\thelpers.each(vm.beforeBody, fillLineOfText);\n\n\t\t\tvar drawColorBoxes = vm.displayColors;\n\t\t\txLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0;\n\n\t\t\t// Draw body lines now\n\t\t\thelpers.each(body, function(bodyItem, i) {\n\t\t\t\tvar textColor = mergeOpacity(vm.labelTextColors[i], opacity);\n\t\t\t\tctx.fillStyle = textColor;\n\t\t\t\thelpers.each(bodyItem.before, fillLineOfText);\n\n\t\t\t\thelpers.each(bodyItem.lines, function(line) {\n\t\t\t\t\t// Draw Legend-like boxes if needed\n\t\t\t\t\tif (drawColorBoxes) {\n\t\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\n\t\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity);\n\t\t\t\t\t\tctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t\t// Border\n\t\t\t\t\t\tctx.lineWidth = 1;\n\t\t\t\t\t\tctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity);\n\t\t\t\t\t\tctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t\t// Inner square\n\t\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity);\n\t\t\t\t\t\tctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\n\t\t\t\t\t\tctx.fillStyle = textColor;\n\t\t\t\t\t}\n\n\t\t\t\t\tfillLineOfText(line);\n\t\t\t\t});\n\n\t\t\t\thelpers.each(bodyItem.after, fillLineOfText);\n\t\t\t});\n\n\t\t\t// Reset back to 0 for after body\n\t\t\txLinePadding = 0;\n\n\t\t\t// After body lines\n\t\t\thelpers.each(vm.afterBody, fillLineOfText);\n\t\t\tpt.y -= bodySpacing; // Remove last body spacing\n\t\t},\n\t\tdrawFooter: function(pt, vm, ctx, opacity) {\n\t\t\tvar footer = vm.footer;\n\n\t\t\tif (footer.length) {\n\t\t\t\tpt.y += vm.footerMarginTop;\n\n\t\t\t\tctx.textAlign = vm._footerAlign;\n\t\t\t\tctx.textBaseline = 'top';\n\n\t\t\t\tctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity);\n\t\t\t\tctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\n\n\t\t\t\thelpers.each(footer, function(line) {\n\t\t\t\t\tctx.fillText(line, pt.x, pt.y);\n\t\t\t\t\tpt.y += vm.footerFontSize + vm.footerSpacing;\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tdrawBackground: function(pt, vm, ctx, tooltipSize, opacity) {\n\t\t\tctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity);\n\t\t\tctx.strokeStyle = mergeOpacity(vm.borderColor, opacity);\n\t\t\tctx.lineWidth = vm.borderWidth;\n\t\t\tvar xAlign = vm.xAlign;\n\t\t\tvar yAlign = vm.yAlign;\n\t\t\tvar x = pt.x;\n\t\t\tvar y = pt.y;\n\t\t\tvar width = tooltipSize.width;\n\t\t\tvar height = tooltipSize.height;\n\t\t\tvar radius = vm.cornerRadius;\n\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x + radius, y);\n\t\t\tif (yAlign === 'top') {\n\t\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t\t}\n\t\t\tctx.lineTo(x + width - radius, y);\n\t\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n\t\t\tif (yAlign === 'center' && xAlign === 'right') {\n\t\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t\t}\n\t\t\tctx.lineTo(x + width, y + height - radius);\n\t\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n\t\t\tif (yAlign === 'bottom') {\n\t\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t\t}\n\t\t\tctx.lineTo(x + radius, y + height);\n\t\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n\t\t\tif (yAlign === 'center' && xAlign === 'left') {\n\t\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t\t}\n\t\t\tctx.lineTo(x, y + radius);\n\t\t\tctx.quadraticCurveTo(x, y, x + radius, y);\n\t\t\tctx.closePath();\n\n\t\t\tctx.fill();\n\n\t\t\tif (vm.borderWidth > 0) {\n\t\t\t\tctx.stroke();\n\t\t\t}\n\t\t},\n\t\tdraw: function() {\n\t\t\tvar ctx = this._chart.ctx;\n\t\t\tvar vm = this._view;\n\n\t\t\tif (vm.opacity === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar tooltipSize = {\n\t\t\t\twidth: vm.width,\n\t\t\t\theight: vm.height\n\t\t\t};\n\t\t\tvar pt = {\n\t\t\t\tx: vm.x,\n\t\t\t\ty: vm.y\n\t\t\t};\n\n\t\t\t// IE11/Edge does not like very small opacities, so snap to 0\n\t\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\n\n\t\t\t// Truthy/falsey value for empty tooltip\n\t\t\tvar hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\n\n\t\t\tif (this._options.enabled && hasTooltipContent) {\n\t\t\t\t// Draw Background\n\t\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize, opacity);\n\n\t\t\t\t// Draw Title, Body, and Footer\n\t\t\t\tpt.x += vm.xPadding;\n\t\t\t\tpt.y += vm.yPadding;\n\n\t\t\t\t// Titles\n\t\t\t\tthis.drawTitle(pt, vm, ctx, opacity);\n\n\t\t\t\t// Body\n\t\t\t\tthis.drawBody(pt, vm, ctx, opacity);\n\n\t\t\t\t// Footer\n\t\t\t\tthis.drawFooter(pt, vm, ctx, opacity);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Handle an event\n\t\t * @private\n\t\t * @param {IEvent} event - The event to handle\n\t\t * @returns {Boolean} true if the tooltip changed\n\t\t */\n\t\thandleEvent: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar options = me._options;\n\t\t\tvar changed = false;\n\n\t\t\tme._lastActive = me._lastActive || [];\n\n\t\t\t// Find Active Elements for tooltips\n\t\t\tif (e.type === 'mouseout') {\n\t\t\t\tme._active = [];\n\t\t\t} else {\n\t\t\t\tme._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\n\t\t\t}\n\n\t\t\t// Remember Last Actives\n\t\t\tchanged = !helpers.arrayEquals(me._active, me._lastActive);\n\n\t\t\t// If tooltip didn't change, do not handle the target event\n\t\t\tif (!changed) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tme._lastActive = me._active;\n\n\t\t\tif (options.enabled || options.custom) {\n\t\t\t\tme._eventPosition = {\n\t\t\t\t\tx: e.x,\n\t\t\t\t\ty: e.y\n\t\t\t\t};\n\n\t\t\t\tvar model = me._model;\n\t\t\t\tme.update(true);\n\t\t\t\tme.pivot();\n\n\t\t\t\t// See if our tooltip position changed\n\t\t\t\tchanged |= (model.x !== me._model.x) || (model.y !== me._model.y);\n\t\t\t}\n\n\t\t\treturn changed;\n\t\t}\n\t});\n\n\t/**\n\t * @namespace Chart.Tooltip.positioners\n\t */\n\tChart.Tooltip.positioners = {\n\t\t/**\n\t\t * Average mode places the tooltip at the average position of the elements shown\n\t\t * @function Chart.Tooltip.positioners.average\n\t\t * @param elements {ChartElement[]} the elements being displayed in the tooltip\n\t\t * @returns {Point} tooltip position\n\t\t */\n\t\taverage: function(elements) {\n\t\t\tif (!elements.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar i, len;\n\t\t\tvar x = 0;\n\t\t\tvar y = 0;\n\t\t\tvar count = 0;\n\n\t\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\t\tvar el = elements[i];\n\t\t\t\tif (el && el.hasValue()) {\n\t\t\t\t\tvar pos = el.tooltipPosition();\n\t\t\t\t\tx += pos.x;\n\t\t\t\t\ty += pos.y;\n\t\t\t\t\t++count;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tx: Math.round(x / count),\n\t\t\t\ty: Math.round(y / count)\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Gets the tooltip position nearest of the item nearest to the event position\n\t\t * @function Chart.Tooltip.positioners.nearest\n\t\t * @param elements {Chart.Element[]} the tooltip elements\n\t\t * @param eventPosition {Point} the position of the event in canvas coordinates\n\t\t * @returns {Point} the tooltip position\n\t\t */\n\t\tnearest: function(elements, eventPosition) {\n\t\t\tvar x = eventPosition.x;\n\t\t\tvar y = eventPosition.y;\n\t\t\tvar minDistance = Number.POSITIVE_INFINITY;\n\t\t\tvar i, len, nearestElement;\n\n\t\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\t\tvar el = elements[i];\n\t\t\t\tif (el && el.hasValue()) {\n\t\t\t\t\tvar center = el.getCenterPoint();\n\t\t\t\t\tvar d = helpers.distanceBetweenPoints(eventPosition, center);\n\n\t\t\t\t\tif (d < minDistance) {\n\t\t\t\t\t\tminDistance = d;\n\t\t\t\t\t\tnearestElement = el;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (nearestElement) {\n\t\t\t\tvar tp = nearestElement.tooltipPosition();\n\t\t\t\tx = tp.x;\n\t\t\t\ty = tp.y;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tx: x,\n\t\t\t\ty: y\n\t\t\t};\n\t\t}\n\t};\n};\n","'use strict';\n\nvar defaults = require('./core.defaults');\n\ndefaults._set('global', {\n\tresponsive: true,\n\tresponsiveAnimationDuration: 0,\n\tmaintainAspectRatio: true,\n\tevents: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'],\n\thover: {\n\t\tonHover: null,\n\t\tmode: 'nearest',\n\t\tintersect: true,\n\t\tanimationDuration: 400\n\t},\n\tonClick: null,\n\tdefaultColor: 'rgba(0,0,0,0.1)',\n\tdefaultFontColor: '#666',\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n\tdefaultFontSize: 12,\n\tdefaultFontStyle: 'normal',\n\tshowLines: true,\n\n\t// Element defaults defined in element extensions\n\telements: {},\n\n\t// Layout options such as padding\n\tlayout: {\n\t\tpadding: {\n\t\t\ttop: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t\tleft: 0\n\t\t}\n\t}\n});\n\nmodule.exports = function() {\n\n\t// Occupy the global variable of Chart, and create a simple base class\n\tvar Chart = function(item, config) {\n\t\tthis.construct(item, config);\n\t\treturn this;\n\t};\n\n\tChart.Chart = Chart;\n\n\treturn Chart;\n};\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar uzLatn = moment.defineLocale('uz-latn', {\n months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),\n monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),\n weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'D MMMM YYYY, dddd HH:mm'\n },\n calendar : {\n sameDay : '[Bugun soat] LT [da]',\n nextDay : '[Ertaga] LT [da]',\n nextWeek : 'dddd [kuni soat] LT [da]',\n lastDay : '[Kecha soat] LT [da]',\n lastWeek : '[O\\'tgan] dddd [kuni soat] LT [da]',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'Yaqin %s ichida',\n past : 'Bir necha %s oldin',\n s : 'soniya',\n m : 'bir daqiqa',\n mm : '%d daqiqa',\n h : 'bir soat',\n hh : '%d soat',\n d : 'bir kun',\n dd : '%d kun',\n M : 'bir oy',\n MM : '%d oy',\n y : 'bir yil',\n yy : '%d yil'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar ko = moment.defineLocale('ko', {\n months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort : '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin : '일_월_화_수_목_금_토'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'YYYY.MM.DD',\n LL : 'YYYY년 MMMM D일',\n LLL : 'YYYY년 MMMM D일 A h:mm',\n LLLL : 'YYYY년 MMMM D일 dddd A h:mm',\n l : 'YYYY.MM.DD',\n ll : 'YYYY년 MMMM D일',\n lll : 'YYYY년 MMMM D일 A h:mm',\n llll : 'YYYY년 MMMM D일 dddd A h:mm'\n },\n calendar : {\n sameDay : '오늘 LT',\n nextDay : '내일 LT',\n nextWeek : 'dddd LT',\n lastDay : '어제 LT',\n lastWeek : '지난주 dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s 후',\n past : '%s 전',\n s : '몇 초',\n ss : '%d초',\n m : '1분',\n mm : '%d분',\n h : '한 시간',\n hh : '%d시간',\n d : '하루',\n dd : '%d일',\n M : '한 달',\n MM : '%d달',\n y : '일 년',\n yy : '%d년'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}일/,\n ordinal : '%d일',\n meridiemParse : /오전|오후/,\n isPM : function (token) {\n return token === '오후';\n },\n meridiem : function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n }\n});\n\nreturn ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०'\n};\nvar numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n};\n\nvar hi = moment.defineLocale('hi', {\n months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),\n monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n monthsParseExact: true,\n weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat : {\n LT : 'A h:mm बजे',\n LTS : 'A h:mm:ss बजे',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm बजे',\n LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'\n },\n calendar : {\n sameDay : '[आज] LT',\n nextDay : '[कल] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[कल] LT',\n lastWeek : '[पिछले] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s में',\n past : '%s पहले',\n s : 'कुछ ही क्षण',\n m : 'एक मिनट',\n mm : '%d मिनट',\n h : 'एक घंटा',\n hh : '%d घंटे',\n d : 'एक दिन',\n dd : '%d दिन',\n M : 'एक महीने',\n MM : '%d महीने',\n y : 'एक वर्ष',\n yy : '%d वर्ष'\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०'\n};\nvar numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n};\n\nvar ne = moment.defineLocale('ne', {\n months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),\n monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),\n monthsParseExact : true,\n weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),\n weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'Aको h:mm बजे',\n LTS : 'Aको h:mm:ss बजे',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, Aको h:mm बजे',\n LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar : {\n sameDay : '[आज] LT',\n nextDay : '[भोलि] LT',\n nextWeek : '[आउँदो] dddd[,] LT',\n lastDay : '[हिजो] LT',\n lastWeek : '[गएको] dddd[,] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%sमा',\n past : '%s अगाडि',\n s : 'केही क्षण',\n m : 'एक मिनेट',\n mm : '%d मिनेट',\n h : 'एक घण्टा',\n hh : '%d घण्टा',\n d : 'एक दिन',\n dd : '%d दिन',\n M : 'एक महिना',\n MM : '%d महिना',\n y : 'एक बर्ष',\n yy : '%d बर्ष'\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': '۱',\n '2': '۲',\n '3': '۳',\n '4': '۴',\n '5': '۵',\n '6': '۶',\n '7': '۷',\n '8': '۸',\n '9': '۹',\n '0': '۰'\n};\nvar numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0'\n};\n\nvar fa = moment.defineLocale('fa', {\n months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n weekdays : 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysShort : 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar : {\n sameDay : '[امروز ساعت] LT',\n nextDay : '[فردا ساعت] LT',\n nextWeek : 'dddd [ساعت] LT',\n lastDay : '[دیروز ساعت] LT',\n lastWeek : 'dddd [پیش] [ساعت] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'در %s',\n past : '%s پیش',\n s : 'چند ثانیه',\n m : 'یک دقیقه',\n mm : '%d دقیقه',\n h : 'یک ساعت',\n hh : '%d ساعت',\n d : 'یک روز',\n dd : '%d روز',\n M : 'یک ماه',\n MM : '%d ماه',\n y : 'یک سال',\n yy : '%d سال'\n },\n preparse: function (string) {\n return string.replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal : '%dم',\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n}\n\nvar hr = moment.defineLocale('hr', {\n months : {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')\n },\n monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),\n monthsParseExact: true,\n weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[danas u] LT',\n nextDay : '[sutra u] LT',\n nextWeek : function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[jučer u] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'prije %s',\n s : 'par sekundi',\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : 'dan',\n dd : translate,\n M : 'mjesec',\n MM : translate,\n y : 'godinu',\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar he = moment.defineLocale('he', {\n months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),\n monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [ב]MMMM YYYY',\n LLL : 'D [ב]MMMM YYYY HH:mm',\n LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',\n l : 'D/M/YYYY',\n ll : 'D MMM YYYY',\n lll : 'D MMM YYYY HH:mm',\n llll : 'ddd, D MMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[היום ב־]LT',\n nextDay : '[מחר ב־]LT',\n nextWeek : 'dddd [בשעה] LT',\n lastDay : '[אתמול ב־]LT',\n lastWeek : '[ביום] dddd [האחרון בשעה] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'בעוד %s',\n past : 'לפני %s',\n s : 'מספר שניות',\n m : 'דקה',\n mm : '%d דקות',\n h : 'שעה',\n hh : function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d : 'יום',\n dd : function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M : 'חודש',\n MM : function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y : 'שנה',\n yy : function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n }\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM : function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n }\n});\n\nreturn he;\n\n})));\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('TodayDashboard'),_c('MonthlyAppointments')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"card mb-7\"},[_vm._m(0),_c('div',{staticClass:\"card-body\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row mb-3\"},[_c('div',{staticClass:\"col-12\"},[_c('h5',{staticClass:\"text-uppercase border-bottom pb-1\"},[_c('router-link',{staticClass:\"mr-3 py-1 px-2 rounded text-secondary\",class:_vm.dailyOrWeekly == 'daily' ? 'bg-warning ' : '',attrs:{\"to\":\"\"},nativeOn:{\"click\":function($event){return _vm.dailyAppointment()}}},[_vm._v(\"Today's Schedule\")]),_c('router-link',{staticClass:\"py-1 px-2 rounded text-secondary\",class:_vm.dailyOrWeekly == 'weekly' ? 'bg-warning ' : '',attrs:{\"to\":\"\"},nativeOn:{\"click\":function($event){return _vm.weeklyAppointment()}}},[_vm._v(\"Weekly Schedule\")])],1)])]),_c('div',{staticClass:\"row mx-n2\"},_vm._l((_vm.doctorChamnerCount),function(chamber,index){return _c('div',{key:index,staticClass:\"col-12 col-md-6 col-lg-4 mb-2 px-2\"},[_c('div',{staticClass:\"numeric-stats\"},[_c('div',{staticClass:\"value bg-cyprus\"},[_c('h1',{staticClass:\"text-white\"},[_vm._v(_vm._s(chamber.counts))])]),_c('div',{staticClass:\"property flex-grow-1 bg-pacific\"},[_c('h3',{staticClass:\"text-white\"},[_vm._v(\" \"+_vm._s(chamber.name)+\" \")])])])])}),0)])]),_c('div',{staticClass:\"row mt-4\"},[_c('div',{staticClass:\"col-12 col-md-9 col-lg-10\"},[_c('div',{staticClass:\"d-flex justify-content-between align-items-center\"},[_c('h3',{staticClass:\"font-weight-bold fs-18 text-danger text-uppercase\"},[_vm._v(\"Weekly Remaining Schedule\")]),_c('h2',{staticClass:\"text-danger\"},[_vm._v(_vm._s(this.schedules.length))])]),_vm._m(1),_c('div',{staticClass:\"d-flex justify-content-between align-items-center\"},[_c('h3',{staticClass:\"font-weight-bold fs-18 text-uppercase\"},[_vm._v(\"Weekly Remaining Schedule\")]),_c('h2',{},[_vm._v(_vm._s(this.schedules.length))])])])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card-header d-flex\"},[_c('h4',{staticClass:\"text-uppercase playBold\"},[_vm._v(\"Today Doctor's Dashboard\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"progress bg-cyprus\",staticStyle:{\"opacity\":\"0.6\",\"height\":\"10px\",\"border-radius\":\"5px\"}},[_c('div',{staticClass:\"progress-bar bg-info\",staticStyle:{\"width\":\"75%\",\"border-radius\":\"5px\"},attrs:{\"role\":\"progressbar\",\"aria-valuenow\":\"75\",\"aria-valuemin\":\"0\",\"aria-valuemax\":\"100\"}})])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component } from \"vue-property-decorator\";\r\nimport DoctorAppointmentService from \"../../service/DoctorAppointmentService\";\r\nimport DoctorScheduleService from \"@/doctor-app/service/DoctorScheduleService\";\r\nimport { IDoctorSchedule } from \"@/doctor-app/models/DoctorSchedule\";\r\n@Component\r\nexport default class TodayDashboard extends Vue {\r\n public doctorChamnerCount: any[] = [];\r\n public schedules: IDoctorSchedule[] = [];\r\n dailyOrWeekly = \"daily\";\r\n\r\n created() {\r\n DoctorAppointmentService.getChamberCountByAppointmentDate(new Date()).then((res) => (this.doctorChamnerCount = res.data || []));\r\n\r\n DoctorScheduleService.GetWeeklyScheduleList().then((res) => {\r\n if (res.data.result) {\r\n this.schedules = res.data.result;\r\n this.schedules = this.schedules.filter((s) => s.isBooked == false) || [];\r\n //alert(this.schedules.length)\r\n //console.log(this.schedules);\r\n }\r\n });\r\n }\r\n\r\n weeklyAppointment() {\r\n this.dailyOrWeekly = \"weekly\";\r\n DoctorAppointmentService.getChamberWeeklyCountByAppointmentDate(new Date()).then(\r\n (res) => (this.doctorChamnerCount = res.data || [])\r\n );\r\n\r\n DoctorScheduleService.GetWeeklyScheduleList().then((res) => {\r\n if (res.data.result) {\r\n this.schedules = res.data.result;\r\n this.schedules = this.schedules.filter((s) => s.isBooked == false) || [];\r\n //alert(this.schedules.length)\r\n // console.log(this.schedules);\r\n }\r\n });\r\n }\r\n\r\n dailyAppointment() {\r\n this.dailyOrWeekly = \"daily\";\r\n DoctorAppointmentService.getChamberCountByAppointmentDate(new Date()).then((res) => (this.doctorChamnerCount = res.data || []));\r\n\r\n DoctorScheduleService.GetWeeklyScheduleList().then((res) => {\r\n if (res.data.result) {\r\n this.schedules = res.data.result;\r\n this.schedules = this.schedules.filter((s) => s.isBooked == false) || [];\r\n //alert(this.schedules.length)\r\n // console.log(this.schedules);\r\n }\r\n });\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TodayDashboard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TodayDashboard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TodayDashboard.vue?vue&type=template&id=0f38d4f2&\"\nimport script from \"./TodayDashboard.vue?vue&type=script&lang=ts&\"\nexport * from \"./TodayDashboard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[_vm._m(0),_c('div',{staticClass:\"card-body pb-0\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3 pr-0 mb-3 mb-md-0 border-right\"},[_c('div',{staticClass:\"px-4 chart-months-outer\"},[_c('ul',{staticClass:\"chart-months\",attrs:{\"id\":\"month\"}},_vm._l((_vm.Months),function(item,i){return _c('li',{key:item.id},[_c('a',{class:{ active: item.active },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMonth(i)}}},[_vm._v(_vm._s(item.month))])])}),0)])]),_c('div',{staticClass:\"col-9\"},[_c('div',{staticClass:\"mApp-chart d-flex align-items-center\"},[_c('MaChart',{staticClass:\"w-100\",attrs:{\"Options\":_vm.options,\"chartData\":_vm.chartdata,\"ApptCount\":_vm.apptCount,\"ApptDay\":_vm.apptDay}})],1)])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card-header\"},[_c('h4',{staticClass:\"text-uppercase playBold\"},[_vm._v(\"Monthly Appointments\")])])}]\n\nexport { render, staticRenderFns }","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"@babel/runtime/helpers/esm/arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"@babel/runtime/helpers/esm/arrayWithHoles\";\nimport iterableToArrayLimit from \"@babel/runtime/helpers/esm/iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableRest from \"@babel/runtime/helpers/esm/nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","function dataHandler(newData, oldData) {\n if (oldData) {\n var chart = this.$data._chart;\n var newDatasetLabels = newData.datasets.map(function (dataset) {\n return dataset.label;\n });\n var oldDatasetLabels = oldData.datasets.map(function (dataset) {\n return dataset.label;\n });\n var oldLabels = JSON.stringify(oldDatasetLabels);\n var newLabels = JSON.stringify(newDatasetLabels);\n\n if (newLabels === oldLabels && oldData.datasets.length === newData.datasets.length) {\n newData.datasets.forEach(function (dataset, i) {\n var oldDatasetKeys = Object.keys(oldData.datasets[i]);\n var newDatasetKeys = Object.keys(dataset);\n var deletionKeys = oldDatasetKeys.filter(function (key) {\n return key !== '_meta' && newDatasetKeys.indexOf(key) === -1;\n });\n deletionKeys.forEach(function (deletionKey) {\n delete chart.data.datasets[i][deletionKey];\n });\n\n for (var attribute in dataset) {\n if (dataset.hasOwnProperty(attribute)) {\n chart.data.datasets[i][attribute] = dataset[attribute];\n }\n }\n });\n\n if (newData.hasOwnProperty('labels')) {\n chart.data.labels = newData.labels;\n this.$emit('labels:update');\n }\n\n if (newData.hasOwnProperty('xLabels')) {\n chart.data.xLabels = newData.xLabels;\n this.$emit('xlabels:update');\n }\n\n if (newData.hasOwnProperty('yLabels')) {\n chart.data.yLabels = newData.yLabels;\n this.$emit('ylabels:update');\n }\n\n chart.update();\n this.$emit('chart:update');\n } else {\n if (chart) {\n chart.destroy();\n this.$emit('chart:destroy');\n }\n\n this.renderChart(this.chartData, this.options);\n this.$emit('chart:render');\n }\n } else {\n if (this.$data._chart) {\n this.$data._chart.destroy();\n\n this.$emit('chart:destroy');\n }\n\n this.renderChart(this.chartData, this.options);\n this.$emit('chart:render');\n }\n}\n\nexport var reactiveData = {\n data: function data() {\n return {\n chartData: null\n };\n },\n watch: {\n 'chartData': dataHandler\n }\n};\nexport var reactiveProp = {\n props: {\n chartData: {\n type: Object,\n required: true,\n default: function _default() {}\n }\n },\n watch: {\n 'chartData': dataHandler\n }\n};\nexport default {\n reactiveData: reactiveData,\n reactiveProp: reactiveProp\n};","import Chart from 'chart.js';\nexport function generateChart(chartId, chartType) {\n return {\n render: function render(createElement) {\n return createElement('div', {\n style: this.styles,\n class: this.cssClasses\n }, [createElement('canvas', {\n attrs: {\n id: this.chartId,\n width: this.width,\n height: this.height\n },\n ref: 'canvas'\n })]);\n },\n props: {\n chartId: {\n default: chartId,\n type: String\n },\n width: {\n default: 400,\n type: Number\n },\n height: {\n default: 400,\n type: Number\n },\n cssClasses: {\n type: String,\n default: ''\n },\n styles: {\n type: Object\n },\n plugins: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n data: function data() {\n return {\n _chart: null,\n _plugins: this.plugins\n };\n },\n methods: {\n addPlugin: function addPlugin(plugin) {\n this.$data._plugins.push(plugin);\n },\n generateLegend: function generateLegend() {\n if (this.$data._chart) {\n return this.$data._chart.generateLegend();\n }\n },\n renderChart: function renderChart(data, options) {\n if (this.$data._chart) this.$data._chart.destroy();\n if (!this.$refs.canvas) throw new Error('Please remove the tags from your chart component. See https://vue-chartjs.org/guide/#vue-single-file-components');\n this.$data._chart = new Chart(this.$refs.canvas.getContext('2d'), {\n type: chartType,\n data: data,\n options: options,\n plugins: this.$data._plugins\n });\n }\n },\n beforeDestroy: function beforeDestroy() {\n if (this.$data._chart) {\n this.$data._chart.destroy();\n }\n }\n };\n}\nexport var Bar = generateChart('bar-chart', 'bar');\nexport var HorizontalBar = generateChart('horizontalbar-chart', 'horizontalBar');\nexport var Doughnut = generateChart('doughnut-chart', 'doughnut');\nexport var Line = generateChart('line-chart', 'line');\nexport var Pie = generateChart('pie-chart', 'pie');\nexport var PolarArea = generateChart('polar-chart', 'polarArea');\nexport var Radar = generateChart('radar-chart', 'radar');\nexport var Bubble = generateChart('bubble-chart', 'bubble');\nexport var Scatter = generateChart('scatter-chart', 'scatter');\nexport default {\n Bar: Bar,\n HorizontalBar: HorizontalBar,\n Doughnut: Doughnut,\n Line: Line,\n Pie: Pie,\n PolarArea: PolarArea,\n Radar: Radar,\n Bubble: Bubble,\n Scatter: Scatter\n};","// CommitChart.ts\r\nimport { Component, Mixins, Prop } from \"vue-property-decorator\";\r\nimport { Bar, mixins } from \"vue-chartjs\";\r\n\r\n@Component({\r\n extends: Bar, // this is important to add the functionality to your component\r\n mixins: [mixins.reactiveProp]\r\n})\r\nexport default class MaChart extends Mixins(mixins.reactiveProp, Bar) {\r\n @Prop({ required: true }) Options: any;\r\n public data1: any = [\r\n 40,\r\n 20,\r\n 12,\r\n 39,\r\n 10,\r\n 40,\r\n 39,\r\n 14,\r\n 40,\r\n 20,\r\n 12,\r\n 11,\r\n 10,\r\n 40,\r\n 39,\r\n 26,\r\n 40,\r\n 20,\r\n 12,\r\n 11,\r\n 10,\r\n 40,\r\n 39,\r\n 31,\r\n 40,\r\n 20,\r\n 12,\r\n 11,\r\n 30,\r\n 23]\r\n\r\n public data2: any[] = [\r\n \"1\",\r\n \"2\",\r\n \"3\",\r\n \"4\",\r\n \"5\",\r\n \"6\",\r\n \"7\",\r\n \"8\",\r\n \"9\",\r\n \"10\",\r\n \"11\",\r\n \"12\",\r\n \"13\",\r\n \"14\",\r\n \"15\",\r\n \"16\",\r\n \"17\",\r\n \"18\",\r\n \"19\",\r\n \"20\",\r\n \"21\",\r\n \"22\",\r\n \"23\",\r\n \"24\",\r\n \"25\",\r\n \"26\",\r\n \"27\",\r\n \"28\",\r\n \"29\",\r\n \"30\"]\r\n\r\n\r\n mounted() {\r\n // Overwriting base render method with actual data.\r\n this.renderChart(\r\n this.chartData,\r\n this.Options\r\n );\r\n // this.renderChart(\r\n // {\r\n // labels: [\r\n // 1,\r\n // \"2\",\r\n // \"3\",\r\n // \"4\",\r\n // \"5\",\r\n // \"6\",\r\n // \"7\",\r\n // \"8\",\r\n // \"9\",\r\n // \"10\",\r\n // \"11\",\r\n // \"12\",\r\n // \"13\",\r\n // \"14\",\r\n // \"15\",\r\n // \"16\",\r\n // \"17\",\r\n // \"18\",\r\n // \"19\",\r\n // \"20\",\r\n // \"21\",\r\n // \"22\",\r\n // \"23\",\r\n // \"24\",\r\n // \"25\",\r\n // \"26\",\r\n // \"27\",\r\n // \"28\",\r\n // \"29\",\r\n // \"30\"\r\n // ],\r\n // datasets: [\r\n // {\r\n // label: \"Appointments\",\r\n // data: [1,2,3,4,3],\r\n // backgroundColor: \"#03B4BC\"\r\n // }\r\n // ]\r\n // },\r\n // this.Options\r\n // );\r\n }\r\n}","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component } from \"vue-property-decorator\";\r\nimport MaChart from \"./MaChart\";\r\nimport { Chart } from \"chart.js\";\r\nimport DoctorAppointmentService from \"../../service/DoctorAppointmentService\";\r\nimport {IDoctorAppointmentChart} from '../../../doctor-app/models/DoctorAppointmentChart';\r\n@Component({\r\n components: {\r\n // BarChart,\r\n MaChart,\r\n },\r\n})\r\nexport default class MonthlyAppointments extends Vue {\r\n public Year: any = new Date().getFullYear();\r\n public doctorAppointmentChart:IDoctorAppointmentChart[]=[];\r\n public apptCount:any=[];\r\n public apptDay:any=[];\r\n public currentMonth:number=new Date().getMonth();\r\n \r\n public Months: any = [\r\n { month: \"Jan \" + this.Year, active: false },\r\n { month: \"Feb \" + this.Year, active: false },\r\n { month: \"Mar \" + this.Year, active: false },\r\n { month: \"Apr \" + this.Year, active: false },\r\n { month: \"May \" + this.Year, active: false },\r\n { month: \"Jun \" + this.Year, active: false },\r\n { month: \"Jul \" + this.Year, active: false },\r\n { month: \"Aug \" + this.Year, active: false },\r\n { month: \"Sep \" + this.Year, active: true },\r\n { month: \"Oct \" + this.Year, active: false },\r\n { month: \"Nov \" + this.Year, active: false },\r\n { month: \"Dec \" + this.Year, active: false },\r\n ];\r\n public data1:any=[\r\n 40,\r\n 20,\r\n 12,\r\n 39,\r\n 10,\r\n 40,\r\n 39,\r\n 14,\r\n 40,\r\n 20,\r\n 12,\r\n 11,\r\n 10,\r\n 40,\r\n 39,\r\n 26,\r\n 40,\r\n 20,\r\n 12,\r\n 11,\r\n 10,\r\n 40,\r\n 39,\r\n 31,\r\n 40,\r\n 20,\r\n 12,\r\n 11,\r\n 30,\r\n 23]\r\n public data2:any[]=[\r\n \"1\",\r\n \"2\",\r\n \"3\",\r\n \"4\",\r\n \"5\",\r\n \"6\",\r\n \"7\",\r\n \"8\",\r\n \"9\",\r\n \"10\",\r\n \"11\",\r\n \"12\",\r\n \"13\",\r\n \"14\",\r\n \"15\",\r\n \"16\",\r\n \"17\",\r\n \"18\",\r\n \"19\",\r\n \"20\",\r\n \"21\",\r\n \"22\",\r\n \"23\",\r\n \"24\",\r\n \"25\",\r\n \"26\",\r\n \"27\",\r\n \"28\",\r\n \"29\",\r\n \"30\"]\r\n public options = {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n plugins: {\r\n legend: {\r\n position: \"bottom\",\r\n },\r\n },\r\n };\r\n public chartdata={\r\n labels: this.data2,\r\n datasets: [\r\n {\r\n label: \"Appointments\",\r\n data: this.data1\r\n ,\r\n backgroundColor: \"#03B4BC\"\r\n }\r\n ]\r\n };\r\n created()\r\n {\r\n this.toggleMonth(new Date().getMonth());\r\n }\r\n\r\n toggleMonth(i: any) { \r\n // this.apptCount=[];\r\n // this.apptCount=[];\r\n // DoctorAppointmentService.getChartDate(i+1).then((res) => {\r\n // this.doctorAppointmentChart=res.data; \r\n // });\r\n // alert(i);\r\n this.Months.forEach((element: any) => {\r\n element.active = false;\r\n });\r\n \r\n this.Months[i].active = true;\r\n this.GetChartData(i);\r\n // this.chartdata = {\r\n // labels: this.apptDay,\r\n // datasets: [\r\n // {\r\n // label: \"Appointments\",\r\n // data: this.apptCount\r\n // ,\r\n // backgroundColor: \"#03B4BC\"\r\n // }\r\n // ]\r\n // };\r\n }\r\n GetChartData(i: any){\r\n //alert(i);\r\n this.apptCount=[];\r\n this.apptDay=[];\r\n DoctorAppointmentService.getChartDate(i+1).then((res) => {\r\n this.doctorAppointmentChart=res.data; \r\n // console.log(this.doctorAppointmentChart); \r\n for (let index = 0; index < this.doctorAppointmentChart.length; index++) {\r\n for (let [key, value] of Object.entries(this.doctorAppointmentChart[index])) {\r\n if(key==\"count\"){\r\n this.apptCount.push(value);\r\n }\r\n if(key==\"dayNumber\"){\r\n this.apptDay.push(value);\r\n }\r\n } \r\n }\r\n\r\n this.chartdata = {\r\n labels: this.apptDay,\r\n datasets: [\r\n {\r\n label: \"Appointments\",\r\n data: this.apptCount\r\n ,\r\n backgroundColor: \"#03B4BC\"\r\n }\r\n ]\r\n };\r\n\r\n });\r\n //console.log(this.doctorAppointmentChart);\r\n // for (let index = 0; index < this.doctorAppointmentChart.length; index++) {\r\n // for (let [key, value] of Object.entries(this.doctorAppointmentChart[index])) {\r\n // if(key==\"count\"){\r\n // this.apptCount.push(value);\r\n // // console.log(value);\r\n // }\r\n // if(key==\"dayNumber\"){\r\n // this.apptDay.push(value);\r\n // //console.log(value);\r\n // }\r\n // } \r\n // }\r\n\r\n // this.chartdata = {\r\n // labels: this.apptDay,\r\n // datasets: [\r\n // {\r\n // label: \"Appointments\",\r\n // data: this.apptCount\r\n // ,\r\n // backgroundColor: \"#03B4BC\"\r\n // }\r\n // ]\r\n // };\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MonthlyAppointments.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MonthlyAppointments.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MonthlyAppointments.vue?vue&type=template&id=78f21ab8&\"\nimport script from \"./MonthlyAppointments.vue?vue&type=script&lang=ts&\"\nexport * from \"./MonthlyAppointments.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\r\nimport { Vue, Component } from 'vue-property-decorator';\r\nimport TodayDashboard from './TodayDashboard.vue';\r\nimport MonthlyAppointments from './MonthlyAppointments.vue';\r\n\r\n@Component({\r\n components: {\r\n TodayDashboard,\r\n MonthlyAppointments\r\n }\r\n})\r\nexport default class Home extends Vue {}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=4df74464&\"\nimport script from \"./Home.vue?vue&type=script&lang=ts&\"\nexport * from \"./Home.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar enCa = moment.defineLocale('en-ca', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'YYYY-MM-DD',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n});\n\nreturn enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar cv = moment.defineLocale('cv', {\n months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),\n monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),\n weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'\n },\n calendar : {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L'\n },\n relativeTime : {\n future : function (output) {\n var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';\n return output + affix;\n },\n past : '%s каялла',\n s : 'пӗр-ик ҫеккунт',\n m : 'пӗр минут',\n mm : '%d минут',\n h : 'пӗр сехет',\n hh : '%d сехет',\n d : 'пӗр кун',\n dd : '%d кун',\n M : 'пӗр уйӑх',\n MM : '%d уйӑх',\n y : 'пӗр ҫул',\n yy : '%d ҫул'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal : '%d-мӗш',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar hyAm = moment.defineLocale('hy-am', {\n months : {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')\n },\n monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),\n weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY թ.',\n LLL : 'D MMMM YYYY թ., HH:mm',\n LLLL : 'dddd, D MMMM YYYY թ., HH:mm'\n },\n calendar : {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s հետո',\n past : '%s առաջ',\n s : 'մի քանի վայրկյան',\n m : 'րոպե',\n mm : '%d րոպե',\n h : 'ժամ',\n hh : '%d ժամ',\n d : 'օր',\n dd : '%d օր',\n M : 'ամիս',\n MM : '%d ամիս',\n y : 'տարի',\n yy : '%d տարի'\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem : function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '0': '0'\n};\nvar pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n};\nvar plurals = {\n s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n};\nvar pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n};\nvar months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر'\n];\n\nvar arLy = moment.defineLocale('ar-ly', {\n months : months,\n monthsShort : months,\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'D/\\u200FM/\\u200FYYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM : function (input) {\n return 'م' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar : {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'بعد %s',\n past : 'منذ %s',\n s : pluralize('s'),\n m : pluralize('m'),\n mm : pluralize('m'),\n h : pluralize('h'),\n hh : pluralize('h'),\n d : pluralize('d'),\n dd : pluralize('d'),\n M : pluralize('M'),\n MM : pluralize('M'),\n y : pluralize('y'),\n yy : pluralize('y')\n },\n preparse: function (string) {\n return string.replace(/\\u200f/g, '').replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠'\n};\nvar numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n};\n\nvar arSa = moment.defineLocale('ar-sa', {\n months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM : function (input) {\n return 'م' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn arSa;\n\n})));\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\n\ndefaults._set('global', {\n\telements: {\n\t\trectangle: {\n\t\t\tbackgroundColor: defaults.global.defaultColor,\n\t\t\tborderColor: defaults.global.defaultColor,\n\t\t\tborderSkipped: 'bottom',\n\t\t\tborderWidth: 0\n\t\t}\n\t}\n});\n\nfunction isVertical(bar) {\n\treturn bar._view.width !== undefined;\n}\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param bar {Chart.Element.Rectangle} the bar\n * @return {Bounds} bounds of the bar\n * @private\n */\nfunction getBarBounds(bar) {\n\tvar vm = bar._view;\n\tvar x1, x2, y1, y2;\n\n\tif (isVertical(bar)) {\n\t\t// vertical\n\t\tvar halfWidth = vm.width / 2;\n\t\tx1 = vm.x - halfWidth;\n\t\tx2 = vm.x + halfWidth;\n\t\ty1 = Math.min(vm.y, vm.base);\n\t\ty2 = Math.max(vm.y, vm.base);\n\t} else {\n\t\t// horizontal bar\n\t\tvar halfHeight = vm.height / 2;\n\t\tx1 = Math.min(vm.x, vm.base);\n\t\tx2 = Math.max(vm.x, vm.base);\n\t\ty1 = vm.y - halfHeight;\n\t\ty2 = vm.y + halfHeight;\n\t}\n\n\treturn {\n\t\tleft: x1,\n\t\ttop: y1,\n\t\tright: x2,\n\t\tbottom: y2\n\t};\n}\n\nmodule.exports = Element.extend({\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar left, right, top, bottom, signX, signY, borderSkipped;\n\t\tvar borderWidth = vm.borderWidth;\n\n\t\tif (!vm.horizontal) {\n\t\t\t// bar\n\t\t\tleft = vm.x - vm.width / 2;\n\t\t\tright = vm.x + vm.width / 2;\n\t\t\ttop = vm.y;\n\t\t\tbottom = vm.base;\n\t\t\tsignX = 1;\n\t\t\tsignY = bottom > top ? 1 : -1;\n\t\t\tborderSkipped = vm.borderSkipped || 'bottom';\n\t\t} else {\n\t\t\t// horizontal bar\n\t\t\tleft = vm.base;\n\t\t\tright = vm.x;\n\t\t\ttop = vm.y - vm.height / 2;\n\t\t\tbottom = vm.y + vm.height / 2;\n\t\t\tsignX = right > left ? 1 : -1;\n\t\t\tsignY = 1;\n\t\t\tborderSkipped = vm.borderSkipped || 'left';\n\t\t}\n\n\t\t// Canvas doesn't allow us to stroke inside the width so we can\n\t\t// adjust the sizes to fit if we're setting a stroke on the line\n\t\tif (borderWidth) {\n\t\t\t// borderWidth shold be less than bar width and bar height.\n\t\t\tvar barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\n\t\t\tborderWidth = borderWidth > barSize ? barSize : borderWidth;\n\t\t\tvar halfStroke = borderWidth / 2;\n\t\t\t// Adjust borderWidth when bar top position is near vm.base(zero).\n\t\t\tvar borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\n\t\t\tvar borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\n\t\t\tvar borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\n\t\t\tvar borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\n\t\t\t// not become a vertical line?\n\t\t\tif (borderLeft !== borderRight) {\n\t\t\t\ttop = borderTop;\n\t\t\t\tbottom = borderBottom;\n\t\t\t}\n\t\t\t// not become a horizontal line?\n\t\t\tif (borderTop !== borderBottom) {\n\t\t\t\tleft = borderLeft;\n\t\t\t\tright = borderRight;\n\t\t\t}\n\t\t}\n\n\t\tctx.beginPath();\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = borderWidth;\n\n\t\t// Corner points, from bottom-left to bottom-right clockwise\n\t\t// | 1 2 |\n\t\t// | 0 3 |\n\t\tvar corners = [\n\t\t\t[left, bottom],\n\t\t\t[left, top],\n\t\t\t[right, top],\n\t\t\t[right, bottom]\n\t\t];\n\n\t\t// Find first (starting) corner with fallback to 'bottom'\n\t\tvar borders = ['bottom', 'left', 'top', 'right'];\n\t\tvar startCorner = borders.indexOf(borderSkipped, 0);\n\t\tif (startCorner === -1) {\n\t\t\tstartCorner = 0;\n\t\t}\n\n\t\tfunction cornerAt(index) {\n\t\t\treturn corners[(startCorner + index) % 4];\n\t\t}\n\n\t\t// Draw rectangle from 'startCorner'\n\t\tvar corner = cornerAt(0);\n\t\tctx.moveTo(corner[0], corner[1]);\n\n\t\tfor (var i = 1; i < 4; i++) {\n\t\t\tcorner = cornerAt(i);\n\t\t\tctx.lineTo(corner[0], corner[1]);\n\t\t}\n\n\t\tctx.fill();\n\t\tif (borderWidth) {\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\theight: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.base - vm.y;\n\t},\n\n\tinRange: function(mouseX, mouseY) {\n\t\tvar inRange = false;\n\n\t\tif (this._view) {\n\t\t\tvar bounds = getBarBounds(this);\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t}\n\n\t\treturn inRange;\n\t},\n\n\tinLabelRange: function(mouseX, mouseY) {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar inRange = false;\n\t\tvar bounds = getBarBounds(me);\n\n\t\tif (isVertical(me)) {\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right;\n\t\t} else {\n\t\t\tinRange = mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t}\n\n\t\treturn inRange;\n\t},\n\n\tinXRange: function(mouseX) {\n\t\tvar bounds = getBarBounds(this);\n\t\treturn mouseX >= bounds.left && mouseX <= bounds.right;\n\t},\n\n\tinYRange: function(mouseY) {\n\t\tvar bounds = getBarBounds(this);\n\t\treturn mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar x, y;\n\t\tif (isVertical(this)) {\n\t\t\tx = vm.x;\n\t\t\ty = (vm.y + vm.base) / 2;\n\t\t} else {\n\t\t\tx = (vm.x + vm.base) / 2;\n\t\t\ty = vm.y;\n\t\t}\n\n\t\treturn {x: x, y: y};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.width * Math.abs(vm.y - vm.base);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t}\n});\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar tet = moment.defineLocale('tet', {\n months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juniu_Juliu_Augustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Aug_Set_Out_Nov_Dez'.split('_'),\n weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sexta_Sabadu'.split('_'),\n weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sext_Sab'.split('_'),\n weekdaysMin : 'Do_Seg_Te_Ku_Ki_Sex_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'iha %s',\n past : '%s liuba',\n s : 'minutu balun',\n m : 'minutu ida',\n mm : 'minutus %d',\n h : 'horas ida',\n hh : 'horas %d',\n d : 'loron ida',\n dd : 'loron %d',\n M : 'fulan ida',\n MM : 'fulan %d',\n y : 'tinan ida',\n yy : 'tinan %d'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar nb = moment.defineLocale('nb', {\n months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact : true,\n weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY [kl.] HH:mm',\n LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar : {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s siden',\n s : 'noen sekunder',\n m : 'ett minutt',\n mm : '%d minutter',\n h : 'en time',\n hh : '%d timer',\n d : 'en dag',\n dd : '%d dager',\n M : 'en måned',\n MM : '%d måneder',\n y : 'ett år',\n yy : '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn nb;\n\n})));\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\n\ndefaults._set('scatter', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\tid: 'x-axis-1', // need an ID so datasets can reference the scale\n\t\t\ttype: 'linear', // scatter should not use a category axis\n\t\t\tposition: 'bottom'\n\t\t}],\n\t\tyAxes: [{\n\t\t\tid: 'y-axis-1',\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left'\n\t\t}]\n\t},\n\n\tshowLines: false,\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn ''; // doesn't make sense for scatter since data are formatted as a point\n\t\t\t},\n\t\t\tlabel: function(item) {\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\t// Scatter charts use line controllers\n\tChart.controllers.scatter = Chart.controllers.line;\n\n};\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar arMa = moment.defineLocale('ar-ma', {\n months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar enGb = moment.defineLocale('en-gb', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n 'mm': 'munutenn',\n 'MM': 'miz',\n 'dd': 'devezh'\n };\n return number + ' ' + mutation(format[key], number);\n}\nfunction specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n}\nfunction lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n}\nfunction mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n}\nfunction softMutation(text) {\n var mutationTable = {\n 'm': 'v',\n 'b': 'v',\n 'd': 'z'\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n}\n\nvar br = moment.defineLocale('br', {\n months : 'Genver_C\\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),\n monthsShort : 'Gen_C\\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays : 'Sul_Lun_Meurzh_Merc\\'her_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h[e]mm A',\n LTS : 'h[e]mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D [a viz] MMMM YYYY',\n LLL : 'D [a viz] MMMM YYYY h[e]mm A',\n LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'\n },\n calendar : {\n sameDay : '[Hiziv da] LT',\n nextDay : '[Warc\\'hoazh da] LT',\n nextWeek : 'dddd [da] LT',\n lastDay : '[Dec\\'h da] LT',\n lastWeek : 'dddd [paset da] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'a-benn %s',\n past : '%s \\'zo',\n s : 'un nebeud segondennoù',\n m : 'ur vunutenn',\n mm : relativeTimeWithMutation,\n h : 'un eur',\n hh : '%d eur',\n d : 'un devezh',\n dd : relativeTimeWithMutation,\n M : 'ur miz',\n MM : relativeTimeWithMutation,\n y : 'ur bloaz',\n yy : specialMutationForYears\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal : function (number) {\n var output = (number === 1) ? 'añ' : 'vet';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn br;\n\n})));\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('polarArea', {\n\tscale: {\n\t\ttype: 'radialLinear',\n\t\tangleLines: {\n\t\t\tdisplay: false\n\t\t},\n\t\tgridLines: {\n\t\t\tcircular: true\n\t\t},\n\t\tpointLabels: {\n\t\t\tdisplay: false\n\t\t},\n\t\tticks: {\n\t\t\tbeginAtZero: true\n\t\t}\n\t},\n\n\t// Boolean - Whether to animate the rotation of the chart\n\tanimation: {\n\t\tanimateRotate: true,\n\t\tanimateScale: true\n\t},\n\n\tstartAngle: -0.5 * Math.PI,\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('
    ');\n\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\n\t\tif (datasets.length) {\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\ttext.push('
  • ');\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t}\n\t\t\t\ttext.push('
  • ');\n\t\t\t}\n\t\t}\n\n\t\ttext.push('
');\n\t\treturn text.join('');\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\tvar custom = arc.custom || {};\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.polarArea = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Arc,\n\n\t\tlinkScales: helpers.noop,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar opts = chart.options;\n\t\t\tvar arcOpts = opts.elements.arc;\n\t\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\t\t\tchart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0);\n\t\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\n\t\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\n\n\t\t\tmeta.count = me.countVisibleElements();\n\n\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t});\n\t\t},\n\n\t\tupdateElement: function(arc, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar opts = chart.options;\n\t\t\tvar animationOpts = opts.animation;\n\t\t\tvar scale = chart.scale;\n\t\t\tvar labels = chart.data.labels;\n\n\t\t\tvar circumference = me.calculateCircumference(dataset.data[index]);\n\t\t\tvar centerX = scale.xCenter;\n\t\t\tvar centerY = scale.yCenter;\n\n\t\t\t// If there is NaN data before us, we need to calculate the starting angle correctly.\n\t\t\t// We could be way more efficient here, but its unlikely that the polar area chart will have a lot of data\n\t\t\tvar visibleCount = 0;\n\t\t\tvar meta = me.getMeta();\n\t\t\tfor (var i = 0; i < index; ++i) {\n\t\t\t\tif (!isNaN(dataset.data[i]) && !meta.data[i].hidden) {\n\t\t\t\t\t++visibleCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// var negHalfPI = -0.5 * Math.PI;\n\t\t\tvar datasetStartAngle = opts.startAngle;\n\t\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\t\tvar startAngle = datasetStartAngle + (circumference * visibleCount);\n\t\t\tvar endAngle = startAngle + (arc.hidden ? 0 : circumference);\n\n\t\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\n\t\t\thelpers.extend(arc, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\t\t\t\t_scale: scale,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: centerX,\n\t\t\t\t\ty: centerY,\n\t\t\t\t\tinnerRadius: 0,\n\t\t\t\t\touterRadius: reset ? resetRadius : distance,\n\t\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n\t\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n\t\t\t\t\tlabel: helpers.valueAtIndexOrDefault(labels, index, labels[index])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Apply border and fill style\n\t\t\tme.removeHoverStyle(arc);\n\n\t\t\tarc.pivot();\n\t\t},\n\n\t\tremoveHoverStyle: function(arc) {\n\t\t\tChart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc);\n\t\t},\n\n\t\tcountVisibleElements: function() {\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar count = 0;\n\n\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn count;\n\t\t},\n\n\t\tcalculateCircumference: function(value) {\n\t\t\tvar count = this.getMeta().count;\n\t\t\tif (count > 0 && !isNaN(value)) {\n\t\t\t\treturn (2 * Math.PI) / count;\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\t});\n};\n","'use strict';\n\nvar defaults = require('./core.defaults');\nvar helpers = require('../helpers/index');\nvar Interaction = require('./core.interaction');\nvar platform = require('../platforms/platform');\n\nmodule.exports = function(Chart) {\n\tvar plugins = Chart.plugins;\n\n\t// Create a dictionary of chart types, to allow for extension of existing types\n\tChart.types = {};\n\n\t// Store a reference to each instance - allowing us to globally resize chart instances on window resize.\n\t// Destroy method on the chart will remove the instance of the chart from this reference.\n\tChart.instances = {};\n\n\t// Controllers available for dataset visualization eg. bar, line, slice, etc.\n\tChart.controllers = {};\n\n\t/**\n\t * Initializes the given config with global and chart default values.\n\t */\n\tfunction initConfig(config) {\n\t\tconfig = config || {};\n\n\t\t// Do NOT use configMerge() for the data object because this method merges arrays\n\t\t// and so would change references to labels and datasets, preventing data updates.\n\t\tvar data = config.data = config.data || {};\n\t\tdata.datasets = data.datasets || [];\n\t\tdata.labels = data.labels || [];\n\n\t\tconfig.options = helpers.configMerge(\n\t\t\tdefaults.global,\n\t\t\tdefaults[config.type],\n\t\t\tconfig.options || {});\n\n\t\treturn config;\n\t}\n\n\t/**\n\t * Updates the config of the chart\n\t * @param chart {Chart} chart to update the options for\n\t */\n\tfunction updateConfig(chart) {\n\t\tvar newOptions = chart.options;\n\n\t\t// Update Scale(s) with options\n\t\tif (newOptions.scale) {\n\t\t\tchart.scale.options = newOptions.scale;\n\t\t} else if (newOptions.scales) {\n\t\t\tnewOptions.scales.xAxes.concat(newOptions.scales.yAxes).forEach(function(scaleOptions) {\n\t\t\t\tchart.scales[scaleOptions.id].options = scaleOptions;\n\t\t\t});\n\t\t}\n\n\t\t// Tooltip\n\t\tchart.tooltip._options = newOptions.tooltips;\n\t}\n\n\tfunction positionIsHorizontal(position) {\n\t\treturn position === 'top' || position === 'bottom';\n\t}\n\n\thelpers.extend(Chart.prototype, /** @lends Chart */ {\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tconstruct: function(item, config) {\n\t\t\tvar me = this;\n\n\t\t\tconfig = initConfig(config);\n\n\t\t\tvar context = platform.acquireContext(item, config);\n\t\t\tvar canvas = context && context.canvas;\n\t\t\tvar height = canvas && canvas.height;\n\t\t\tvar width = canvas && canvas.width;\n\n\t\t\tme.id = helpers.uid();\n\t\t\tme.ctx = context;\n\t\t\tme.canvas = canvas;\n\t\t\tme.config = config;\n\t\t\tme.width = width;\n\t\t\tme.height = height;\n\t\t\tme.aspectRatio = height ? width / height : null;\n\t\t\tme.options = config.options;\n\t\t\tme._bufferedRender = false;\n\n\t\t\t/**\n\t\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\n\t\t\t * the \"instance\" still need to be defined since it might be called from plugins.\n\t\t\t * @prop Chart#chart\n\t\t\t * @deprecated since version 2.6.0\n\t\t\t * @todo remove at version 3\n\t\t\t * @private\n\t\t\t */\n\t\t\tme.chart = me;\n\t\t\tme.controller = me; // chart.chart.controller #inception\n\n\t\t\t// Add the chart instance to the global namespace\n\t\t\tChart.instances[me.id] = me;\n\n\t\t\t// Define alias to the config data: `chart.data === chart.config.data`\n\t\t\tObject.defineProperty(me, 'data', {\n\t\t\t\tget: function() {\n\t\t\t\t\treturn me.config.data;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\tme.config.data = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!context || !canvas) {\n\t\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\n\t\t\t\t// the chart initialization but after setting basic chart / controller properties that\n\t\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n\t\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tme.initialize();\n\t\t\tme.update();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinitialize: function() {\n\t\t\tvar me = this;\n\n\t\t\t// Before init plugin notification\n\t\t\tplugins.notify(me, 'beforeInit');\n\n\t\t\thelpers.retinaScale(me, me.options.devicePixelRatio);\n\n\t\t\tme.bindEvents();\n\n\t\t\tif (me.options.responsive) {\n\t\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\n\t\t\t\tme.resize(true);\n\t\t\t}\n\n\t\t\t// Make sure scales have IDs and are built before we build any controllers.\n\t\t\tme.ensureScalesHaveIDs();\n\t\t\tme.buildScales();\n\t\t\tme.initToolTip();\n\n\t\t\t// After init plugin notification\n\t\t\tplugins.notify(me, 'afterInit');\n\n\t\t\treturn me;\n\t\t},\n\n\t\tclear: function() {\n\t\t\thelpers.canvas.clear(this);\n\t\t\treturn this;\n\t\t},\n\n\t\tstop: function() {\n\t\t\t// Stops any current animation loop occurring\n\t\t\tChart.animationService.cancelAnimation(this);\n\t\t\treturn this;\n\t\t},\n\n\t\tresize: function(silent) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar canvas = me.canvas;\n\t\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\n\n\t\t\t// the canvas render width and height will be casted to integers so make sure that\n\t\t\t// the canvas display style uses the same integer values to avoid blurring effect.\n\n\t\t\t// Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collased\n\t\t\tvar newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas)));\n\t\t\tvar newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas)));\n\n\t\t\tif (me.width === newWidth && me.height === newHeight) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcanvas.width = me.width = newWidth;\n\t\t\tcanvas.height = me.height = newHeight;\n\t\t\tcanvas.style.width = newWidth + 'px';\n\t\t\tcanvas.style.height = newHeight + 'px';\n\n\t\t\thelpers.retinaScale(me, options.devicePixelRatio);\n\n\t\t\tif (!silent) {\n\t\t\t\t// Notify any plugins about the resize\n\t\t\t\tvar newSize = {width: newWidth, height: newHeight};\n\t\t\t\tplugins.notify(me, 'resize', [newSize]);\n\n\t\t\t\t// Notify of resize\n\t\t\t\tif (me.options.onResize) {\n\t\t\t\t\tme.options.onResize(me, newSize);\n\t\t\t\t}\n\n\t\t\t\tme.stop();\n\t\t\t\tme.update(me.options.responsiveAnimationDuration);\n\t\t\t}\n\t\t},\n\n\t\tensureScalesHaveIDs: function() {\n\t\t\tvar options = this.options;\n\t\t\tvar scalesOptions = options.scales || {};\n\t\t\tvar scaleOptions = options.scale;\n\n\t\t\thelpers.each(scalesOptions.xAxes, function(xAxisOptions, index) {\n\t\t\t\txAxisOptions.id = xAxisOptions.id || ('x-axis-' + index);\n\t\t\t});\n\n\t\t\thelpers.each(scalesOptions.yAxes, function(yAxisOptions, index) {\n\t\t\t\tyAxisOptions.id = yAxisOptions.id || ('y-axis-' + index);\n\t\t\t});\n\n\t\t\tif (scaleOptions) {\n\t\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Builds a map of scale ID to scale object for future lookup.\n\t\t */\n\t\tbuildScales: function() {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar scales = me.scales = {};\n\t\t\tvar items = [];\n\n\t\t\tif (options.scales) {\n\t\t\t\titems = items.concat(\n\t\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\n\t\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\n\t\t\t\t\t}),\n\t\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\n\t\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (options.scale) {\n\t\t\t\titems.push({\n\t\t\t\t\toptions: options.scale,\n\t\t\t\t\tdtype: 'radialLinear',\n\t\t\t\t\tisDefault: true,\n\t\t\t\t\tdposition: 'chartArea'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thelpers.each(items, function(item) {\n\t\t\t\tvar scaleOptions = item.options;\n\t\t\t\tvar scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype);\n\t\t\t\tvar scaleClass = Chart.scaleService.getScaleConstructor(scaleType);\n\t\t\t\tif (!scaleClass) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\n\t\t\t\t\tscaleOptions.position = item.dposition;\n\t\t\t\t}\n\n\t\t\t\tvar scale = new scaleClass({\n\t\t\t\t\tid: scaleOptions.id,\n\t\t\t\t\toptions: scaleOptions,\n\t\t\t\t\tctx: me.ctx,\n\t\t\t\t\tchart: me\n\t\t\t\t});\n\n\t\t\t\tscales[scale.id] = scale;\n\t\t\t\tscale.mergeTicksOptions();\n\n\t\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\n\t\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\n\t\t\t\t// make the logic easier and remove some useless? custom code.\n\t\t\t\tif (item.isDefault) {\n\t\t\t\t\tme.scale = scale;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tChart.scaleService.addScalesToLayout(this);\n\t\t},\n\n\t\tbuildOrUpdateControllers: function() {\n\t\t\tvar me = this;\n\t\t\tvar types = [];\n\t\t\tvar newControllers = [];\n\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\n\t\t\t\tvar type = dataset.type || me.config.type;\n\n\t\t\t\tif (meta.type && meta.type !== type) {\n\t\t\t\t\tme.destroyDatasetMeta(datasetIndex);\n\t\t\t\t\tmeta = me.getDatasetMeta(datasetIndex);\n\t\t\t\t}\n\t\t\t\tmeta.type = type;\n\n\t\t\t\ttypes.push(meta.type);\n\n\t\t\t\tif (meta.controller) {\n\t\t\t\t\tmeta.controller.updateIndex(datasetIndex);\n\t\t\t\t} else {\n\t\t\t\t\tvar ControllerClass = Chart.controllers[meta.type];\n\t\t\t\t\tif (ControllerClass === undefined) {\n\t\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\n\t\t\t\t\t}\n\n\t\t\t\t\tmeta.controller = new ControllerClass(me, datasetIndex);\n\t\t\t\t\tnewControllers.push(meta.controller);\n\t\t\t\t}\n\t\t\t}, me);\n\n\t\t\treturn newControllers;\n\t\t},\n\n\t\t/**\n\t\t * Reset the elements of all datasets\n\t\t * @private\n\t\t */\n\t\tresetElements: function() {\n\t\t\tvar me = this;\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\n\t\t\t}, me);\n\t\t},\n\n\t\t/**\n\t\t* Resets the chart back to it's state before the initial animation\n\t\t*/\n\t\treset: function() {\n\t\t\tthis.resetElements();\n\t\t\tthis.tooltip.initialize();\n\t\t},\n\n\t\tupdate: function(config) {\n\t\t\tvar me = this;\n\n\t\t\tif (!config || typeof config !== 'object') {\n\t\t\t\t// backwards compatibility\n\t\t\t\tconfig = {\n\t\t\t\t\tduration: config,\n\t\t\t\t\tlazy: arguments[1]\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tupdateConfig(me);\n\n\t\t\tif (plugins.notify(me, 'beforeUpdate') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// In case the entire data object changed\n\t\t\tme.tooltip._data = me.data;\n\n\t\t\t// Make sure dataset controllers are updated and new controllers are reset\n\t\t\tvar newControllers = me.buildOrUpdateControllers();\n\n\t\t\t// Make sure all dataset controllers have correct meta data counts\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();\n\t\t\t}, me);\n\n\t\t\tme.updateLayout();\n\n\t\t\t// Can only reset the new controllers after the scales have been updated\n\t\t\thelpers.each(newControllers, function(controller) {\n\t\t\t\tcontroller.reset();\n\t\t\t});\n\n\t\t\tme.updateDatasets();\n\n\t\t\t// Need to reset tooltip in case it is displayed with elements that are removed\n\t\t\t// after update.\n\t\t\tme.tooltip.initialize();\n\n\t\t\t// Last active contains items that were previously in the tooltip.\n\t\t\t// When we reset the tooltip, we need to clear it\n\t\t\tme.lastActive = [];\n\n\t\t\t// Do this before render so that any plugins that need final scale updates can use it\n\t\t\tplugins.notify(me, 'afterUpdate');\n\n\t\t\tif (me._bufferedRender) {\n\t\t\t\tme._bufferedRequest = {\n\t\t\t\t\tduration: config.duration,\n\t\t\t\t\teasing: config.easing,\n\t\t\t\t\tlazy: config.lazy\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tme.render(config);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t\t * @private\n\t\t */\n\t\tupdateLayout: function() {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeLayout') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tChart.layoutService.update(this, this.width, this.height);\n\n\t\t\t/**\n\t\t\t * Provided for backward compatibility, use `afterLayout` instead.\n\t\t\t * @method IPlugin#afterScaleUpdate\n\t\t\t * @deprecated since version 2.5.0\n\t\t\t * @todo remove at version 3\n\t\t\t * @private\n\t\t\t */\n\t\t\tplugins.notify(me, 'afterScaleUpdate');\n\t\t\tplugins.notify(me, 'afterLayout');\n\t\t},\n\n\t\t/**\n\t\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t\t * @private\n\t\t */\n\t\tupdateDatasets: function() {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetsUpdate') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tme.updateDataset(i);\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterDatasetsUpdate');\n\t\t},\n\n\t\t/**\n\t\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t\t * @private\n\t\t */\n\t\tupdateDataset: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getDatasetMeta(index);\n\t\t\tvar args = {\n\t\t\t\tmeta: meta,\n\t\t\t\tindex: index\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmeta.controller.update();\n\n\t\t\tplugins.notify(me, 'afterDatasetUpdate', [args]);\n\t\t},\n\n\t\trender: function(config) {\n\t\t\tvar me = this;\n\n\t\t\tif (!config || typeof config !== 'object') {\n\t\t\t\t// backwards compatibility\n\t\t\t\tconfig = {\n\t\t\t\t\tduration: config,\n\t\t\t\t\tlazy: arguments[1]\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar duration = config.duration;\n\t\t\tvar lazy = config.lazy;\n\n\t\t\tif (plugins.notify(me, 'beforeRender') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar animationOptions = me.options.animation;\n\t\t\tvar onComplete = function(animation) {\n\t\t\t\tplugins.notify(me, 'afterRender');\n\t\t\t\thelpers.callback(animationOptions && animationOptions.onComplete, [animation], me);\n\t\t\t};\n\n\t\t\tif (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) {\n\t\t\t\tvar animation = new Chart.Animation({\n\t\t\t\t\tnumSteps: (duration || animationOptions.duration) / 16.66, // 60 fps\n\t\t\t\t\teasing: config.easing || animationOptions.easing,\n\n\t\t\t\t\trender: function(chart, animationObject) {\n\t\t\t\t\t\tvar easingFunction = helpers.easing.effects[animationObject.easing];\n\t\t\t\t\t\tvar currentStep = animationObject.currentStep;\n\t\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\n\n\t\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\n\t\t\t\t\t},\n\n\t\t\t\t\tonAnimationProgress: animationOptions.onProgress,\n\t\t\t\t\tonAnimationComplete: onComplete\n\t\t\t\t});\n\n\t\t\t\tChart.animationService.addAnimation(me, animation, duration, lazy);\n\t\t\t} else {\n\t\t\t\tme.draw();\n\n\t\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\n\t\t\t\tonComplete(new Chart.Animation({numSteps: 0, chart: me}));\n\t\t\t}\n\n\t\t\treturn me;\n\t\t},\n\n\t\tdraw: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tme.clear();\n\n\t\t\tif (helpers.isNullOrUndef(easingValue)) {\n\t\t\t\teasingValue = 1;\n\t\t\t}\n\n\t\t\tme.transition(easingValue);\n\n\t\t\tif (plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Draw all the scales\n\t\t\thelpers.each(me.boxes, function(box) {\n\t\t\t\tbox.draw(me.chartArea);\n\t\t\t}, me);\n\n\t\t\tif (me.scale) {\n\t\t\t\tme.scale.draw();\n\t\t\t}\n\n\t\t\tme.drawDatasets(easingValue);\n\t\t\tme._drawTooltip(easingValue);\n\n\t\t\tplugins.notify(me, 'afterDraw', [easingValue]);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\ttransition: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tfor (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.tooltip.transition(easingValue);\n\t\t},\n\n\t\t/**\n\t\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t\t * @private\n\t\t */\n\t\tdrawDatasets: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Draw datasets reversed to support proper line stacking\n\t\t\tfor (var i = (me.data.datasets || []).length - 1; i >= 0; --i) {\n\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\tme.drawDataset(i, easingValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterDatasetsDraw', [easingValue]);\n\t\t},\n\n\t\t/**\n\t\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t\t * @private\n\t\t */\n\t\tdrawDataset: function(index, easingValue) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getDatasetMeta(index);\n\t\t\tvar args = {\n\t\t\t\tmeta: meta,\n\t\t\t\tindex: index,\n\t\t\t\teasingValue: easingValue\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmeta.controller.draw(easingValue);\n\n\t\t\tplugins.notify(me, 'afterDatasetDraw', [args]);\n\t\t},\n\n\t\t/**\n\t\t * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\n\t\t * hook, in which case, plugins will not be called on `afterTooltipDraw`.\n\t\t * @private\n\t\t */\n\t\t_drawTooltip: function(easingValue) {\n\t\t\tvar me = this;\n\t\t\tvar tooltip = me.tooltip;\n\t\t\tvar args = {\n\t\t\t\ttooltip: tooltip,\n\t\t\t\teasingValue: easingValue\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttooltip.draw();\n\n\t\t\tplugins.notify(me, 'afterTooltipDraw', [args]);\n\t\t},\n\n\t\t// Get the single element that was clicked on\n\t\t// @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\n\t\tgetElementAtEvent: function(e) {\n\t\t\treturn Interaction.modes.single(this, e);\n\t\t},\n\n\t\tgetElementsAtEvent: function(e) {\n\t\t\treturn Interaction.modes.label(this, e, {intersect: true});\n\t\t},\n\n\t\tgetElementsAtXAxis: function(e) {\n\t\t\treturn Interaction.modes['x-axis'](this, e, {intersect: true});\n\t\t},\n\n\t\tgetElementsAtEventForMode: function(e, mode, options) {\n\t\t\tvar method = Interaction.modes[mode];\n\t\t\tif (typeof method === 'function') {\n\t\t\t\treturn method(this, e, options);\n\t\t\t}\n\n\t\t\treturn [];\n\t\t},\n\n\t\tgetDatasetAtEvent: function(e) {\n\t\t\treturn Interaction.modes.dataset(this, e, {intersect: true});\n\t\t},\n\n\t\tgetDatasetMeta: function(datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.data.datasets[datasetIndex];\n\t\t\tif (!dataset._meta) {\n\t\t\t\tdataset._meta = {};\n\t\t\t}\n\n\t\t\tvar meta = dataset._meta[me.id];\n\t\t\tif (!meta) {\n\t\t\t\tmeta = dataset._meta[me.id] = {\n\t\t\t\t\ttype: null,\n\t\t\t\t\tdata: [],\n\t\t\t\t\tdataset: null,\n\t\t\t\t\tcontroller: null,\n\t\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\n\t\t\t\t\txAxisID: null,\n\t\t\t\t\tyAxisID: null\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn meta;\n\t\t},\n\n\t\tgetVisibleDatasetCount: function() {\n\t\t\tvar count = 0;\n\t\t\tfor (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tif (this.isDatasetVisible(i)) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\tisDatasetVisible: function(datasetIndex) {\n\t\t\tvar meta = this.getDatasetMeta(datasetIndex);\n\n\t\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n\t\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n\t\t\treturn typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\n\t\t},\n\n\t\tgenerateLegend: function() {\n\t\t\treturn this.options.legendCallback(this);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tdestroyDatasetMeta: function(datasetIndex) {\n\t\t\tvar id = this.id;\n\t\t\tvar dataset = this.data.datasets[datasetIndex];\n\t\t\tvar meta = dataset._meta && dataset._meta[id];\n\n\t\t\tif (meta) {\n\t\t\t\tmeta.controller.destroy();\n\t\t\t\tdelete dataset._meta[id];\n\t\t\t}\n\t\t},\n\n\t\tdestroy: function() {\n\t\t\tvar me = this;\n\t\t\tvar canvas = me.canvas;\n\t\t\tvar i, ilen;\n\n\t\t\tme.stop();\n\n\t\t\t// dataset controllers need to cleanup associated data\n\t\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tme.destroyDatasetMeta(i);\n\t\t\t}\n\n\t\t\tif (canvas) {\n\t\t\t\tme.unbindEvents();\n\t\t\t\thelpers.canvas.clear(me);\n\t\t\t\tplatform.releaseContext(me.ctx);\n\t\t\t\tme.canvas = null;\n\t\t\t\tme.ctx = null;\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'destroy');\n\n\t\t\tdelete Chart.instances[me.id];\n\t\t},\n\n\t\ttoBase64Image: function() {\n\t\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\n\t\t},\n\n\t\tinitToolTip: function() {\n\t\t\tvar me = this;\n\t\t\tme.tooltip = new Chart.Tooltip({\n\t\t\t\t_chart: me,\n\t\t\t\t_chartInstance: me, // deprecated, backward compatibility\n\t\t\t\t_data: me.data,\n\t\t\t\t_options: me.options.tooltips\n\t\t\t}, me);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tbindEvents: function() {\n\t\t\tvar me = this;\n\t\t\tvar listeners = me._listeners = {};\n\t\t\tvar listener = function() {\n\t\t\t\tme.eventHandler.apply(me, arguments);\n\t\t\t};\n\n\t\t\thelpers.each(me.options.events, function(type) {\n\t\t\t\tplatform.addEventListener(me, type, listener);\n\t\t\t\tlisteners[type] = listener;\n\t\t\t});\n\n\t\t\t// Elements used to detect size change should not be injected for non responsive charts.\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/2210\n\t\t\tif (me.options.responsive) {\n\t\t\t\tlistener = function() {\n\t\t\t\t\tme.resize();\n\t\t\t\t};\n\n\t\t\t\tplatform.addEventListener(me, 'resize', listener);\n\t\t\t\tlisteners.resize = listener;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tunbindEvents: function() {\n\t\t\tvar me = this;\n\t\t\tvar listeners = me._listeners;\n\t\t\tif (!listeners) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdelete me._listeners;\n\t\t\thelpers.each(listeners, function(listener, type) {\n\t\t\t\tplatform.removeEventListener(me, type, listener);\n\t\t\t});\n\t\t},\n\n\t\tupdateHoverStyle: function(elements, mode, enabled) {\n\t\t\tvar method = enabled ? 'setHoverStyle' : 'removeHoverStyle';\n\t\t\tvar element, i, ilen;\n\n\t\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\n\t\t\t\telement = elements[i];\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[method](element);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\teventHandler: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar tooltip = me.tooltip;\n\n\t\t\tif (plugins.notify(me, 'beforeEvent', [e]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Buffer any update calls so that renders do not occur\n\t\t\tme._bufferedRender = true;\n\t\t\tme._bufferedRequest = null;\n\n\t\t\tvar changed = me.handleEvent(e);\n\t\t\tchanged |= tooltip && tooltip.handleEvent(e);\n\n\t\t\tplugins.notify(me, 'afterEvent', [e]);\n\n\t\t\tvar bufferedRequest = me._bufferedRequest;\n\t\t\tif (bufferedRequest) {\n\t\t\t\t// If we have an update that was triggered, we need to do a normal render\n\t\t\t\tme.render(bufferedRequest);\n\t\t\t} else if (changed && !me.animating) {\n\t\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\n\t\t\t\tme.stop();\n\n\t\t\t\t// We only need to render at this point. Updating will cause scales to be\n\t\t\t\t// recomputed generating flicker & using more memory than necessary.\n\t\t\t\tme.render(me.options.hover.animationDuration, true);\n\t\t\t}\n\n\t\t\tme._bufferedRender = false;\n\t\t\tme._bufferedRequest = null;\n\n\t\t\treturn me;\n\t\t},\n\n\t\t/**\n\t\t * Handle an event\n\t\t * @private\n\t\t * @param {IEvent} event the event to handle\n\t\t * @return {Boolean} true if the chart needs to re-render\n\t\t */\n\t\thandleEvent: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options || {};\n\t\t\tvar hoverOptions = options.hover;\n\t\t\tvar changed = false;\n\n\t\t\tme.lastActive = me.lastActive || [];\n\n\t\t\t// Find Active Elements for hover and tooltips\n\t\t\tif (e.type === 'mouseout') {\n\t\t\t\tme.active = [];\n\t\t\t} else {\n\t\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\n\t\t\t}\n\n\t\t\t// Invoke onHover hook\n\t\t\t// Need to call with native event here to not break backwards compatibility\n\t\t\thelpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\n\n\t\t\tif (e.type === 'mouseup' || e.type === 'click') {\n\t\t\t\tif (options.onClick) {\n\t\t\t\t\t// Use e.native here for backwards compatibility\n\t\t\t\t\toptions.onClick.call(me, e.native, me.active);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove styling for last active (even if it may still be active)\n\t\t\tif (me.lastActive.length) {\n\t\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\n\t\t\t}\n\n\t\t\t// Built in hover styling\n\t\t\tif (me.active.length && hoverOptions.mode) {\n\t\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\n\t\t\t}\n\n\t\t\tchanged = !helpers.arrayEquals(me.active, me.lastActive);\n\n\t\t\t// Remember Last Actives\n\t\t\tme.lastActive = me.active;\n\n\t\t\treturn changed;\n\t\t}\n\t});\n\n\t/**\n\t * Provided for backward compatibility, use Chart instead.\n\t * @class Chart.Controller\n\t * @deprecated since version 2.6.0\n\t * @todo remove at version 3\n\t * @private\n\t */\n\tChart.Controller = Chart;\n};\n","/* MIT license */\nvar convert = require('color-convert');\nvar string = require('chartjs-color-string');\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.valid = false;\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = string.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = string.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = string.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\tisValid: function () {\n\t\treturn this.valid;\n\t},\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn string.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn string.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn string.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn string.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn string.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn string.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn string.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn string.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = convert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nmodule.exports = Color;\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Line = function(context, config) {\n\t\tconfig.type = 'line';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': '೧',\n '2': '೨',\n '3': '೩',\n '4': '೪',\n '5': '೫',\n '6': '೬',\n '7': '೭',\n '8': '೮',\n '9': '೯',\n '0': '೦'\n};\nvar numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0'\n};\n\nvar kn = moment.defineLocale('kn', {\n months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),\n monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬ_ಅಕ್ಟೋಬ_ನವೆಂಬ_ಡಿಸೆಂಬ'.split('_'),\n monthsParseExact: true,\n weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),\n weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm',\n LLLL : 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar : {\n sameDay : '[ಇಂದು] LT',\n nextDay : '[ನಾಳೆ] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[ನಿನ್ನೆ] LT',\n lastWeek : '[ಕೊನೆಯ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ನಂತರ',\n past : '%s ಹಿಂದೆ',\n s : 'ಕೆಲವು ಕ್ಷಣಗಳು',\n m : 'ಒಂದು ನಿಮಿಷ',\n mm : '%d ನಿಮಿಷ',\n h : 'ಒಂದು ಗಂಟೆ',\n hh : '%d ಗಂಟೆ',\n d : 'ಒಂದು ದಿನ',\n dd : '%d ದಿನ',\n M : 'ಒಂದು ತಿಂಗಳು',\n MM : '%d ತಿಂಗಳು',\n y : 'ಒಂದು ವರ್ಷ',\n yy : '%d ವರ್ಷ'\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal : function (number) {\n return number + 'ನೇ';\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');\nvar monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\nvar es = moment.defineLocale('es', {\n months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsParseExact : true,\n weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY H:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar : {\n sameDay : function () {\n return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextDay : function () {\n return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastDay : function () {\n return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'en %s',\n past : 'hace %s',\n s : 'unos segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'una hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un año',\n yy : '%d años'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn es;\n\n})));\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\t// Default config for a category scale\n\tvar defaultConfig = {\n\t\tposition: 'bottom'\n\t};\n\n\tvar DatasetScale = Chart.Scale.extend({\n\t\t/**\n\t\t* Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those\n\t\t* else fall back to data.labels\n\t\t* @private\n\t\t*/\n\t\tgetLabels: function() {\n\t\t\tvar data = this.chart.data;\n\t\t\treturn this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels;\n\t\t},\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar labels = me.getLabels();\n\t\t\tme.minIndex = 0;\n\t\t\tme.maxIndex = labels.length - 1;\n\t\t\tvar findIndex;\n\n\t\t\tif (me.options.ticks.min !== undefined) {\n\t\t\t\t// user specified min value\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.min);\n\t\t\t\tme.minIndex = findIndex !== -1 ? findIndex : me.minIndex;\n\t\t\t}\n\n\t\t\tif (me.options.ticks.max !== undefined) {\n\t\t\t\t// user specified max value\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.max);\n\t\t\t\tme.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex;\n\t\t\t}\n\n\t\t\tme.min = labels[me.minIndex];\n\t\t\tme.max = labels[me.maxIndex];\n\t\t},\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar labels = me.getLabels();\n\t\t\t// If we are viewing some subset of labels, slice the original array\n\t\t\tme.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1);\n\t\t},\n\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar data = me.chart.data;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\n\t\t\tif (data.yLabels && !isHorizontal) {\n\t\t\t\treturn me.getRightValue(data.datasets[datasetIndex].data[index]);\n\t\t\t}\n\t\t\treturn me.ticks[index - me.minIndex];\n\t\t},\n\n\t\t// Used to get data value locations. Value can either be an index or a numerical value\n\t\tgetPixelForValue: function(value, index) {\n\t\t\tvar me = this;\n\t\t\tvar offset = me.options.offset;\n\t\t\t// 1 is added because we need the length but we have the indexes\n\t\t\tvar offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1);\n\n\t\t\t// If value is a data object, then index is the index in the data array,\n\t\t\t// not the index of the scale. We need to change that.\n\t\t\tvar valueCategory;\n\t\t\tif (value !== undefined && value !== null) {\n\t\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\n\t\t\t}\n\t\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\n\t\t\t\tvar labels = me.getLabels();\n\t\t\t\tvalue = valueCategory || value;\n\t\t\t\tvar idx = labels.indexOf(value);\n\t\t\t\tindex = idx !== -1 ? idx : index;\n\t\t\t}\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tvar valueWidth = me.width / offsetAmt;\n\t\t\t\tvar widthOffset = (valueWidth * (index - me.minIndex));\n\n\t\t\t\tif (offset) {\n\t\t\t\t\twidthOffset += (valueWidth / 2);\n\t\t\t\t}\n\n\t\t\t\treturn me.left + Math.round(widthOffset);\n\t\t\t}\n\t\t\tvar valueHeight = me.height / offsetAmt;\n\t\t\tvar heightOffset = (valueHeight * (index - me.minIndex));\n\n\t\t\tif (offset) {\n\t\t\t\theightOffset += (valueHeight / 2);\n\t\t\t}\n\n\t\t\treturn me.top + Math.round(heightOffset);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.ticks[index], index + this.minIndex, null);\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar offset = me.options.offset;\n\t\t\tvar value;\n\t\t\tvar offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n\t\t\tvar horz = me.isHorizontal();\n\t\t\tvar valueDimension = (horz ? me.width : me.height) / offsetAmt;\n\n\t\t\tpixel -= horz ? me.left : me.top;\n\n\t\t\tif (offset) {\n\t\t\t\tpixel -= (valueDimension / 2);\n\t\t\t}\n\n\t\t\tif (pixel <= 0) {\n\t\t\t\tvalue = 0;\n\t\t\t} else {\n\t\t\t\tvalue = Math.round(pixel / valueDimension);\n\t\t\t}\n\n\t\t\treturn value + me.minIndex;\n\t\t},\n\t\tgetBasePixel: function() {\n\t\t\treturn this.bottom;\n\t\t}\n\t});\n\n\tChart.scaleService.registerScaleType('category', DatasetScale, defaultConfig);\n\n};\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر'\n];\nvar days = [\n 'اتوار',\n 'پیر',\n 'منگل',\n 'بدھ',\n 'جمعرات',\n 'جمعہ',\n 'ہفتہ'\n];\n\nvar ur = moment.defineLocale('ur', {\n months : months,\n monthsShort : months,\n weekdays : days,\n weekdaysShort : days,\n weekdaysMin : days,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd، D MMMM YYYY HH:mm'\n },\n meridiemParse: /صبح|شام/,\n isPM : function (input) {\n return 'شام' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar : {\n sameDay : '[آج بوقت] LT',\n nextDay : '[کل بوقت] LT',\n nextWeek : 'dddd [بوقت] LT',\n lastDay : '[گذشتہ روز بوقت] LT',\n lastWeek : '[گذشتہ] dddd [بوقت] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s بعد',\n past : '%s قبل',\n s : 'چند سیکنڈ',\n m : 'ایک منٹ',\n mm : '%d منٹ',\n h : 'ایک گھنٹہ',\n hh : '%d گھنٹے',\n d : 'ایک دن',\n dd : '%d دن',\n M : 'ایک ماہ',\n MM : '%d ماہ',\n y : 'ایک سال',\n yy : '%d سال'\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar ml = moment.defineLocale('ml', {\n months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),\n monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),\n monthsParseExact : true,\n weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),\n weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm -നു',\n LTS : 'A h:mm:ss -നു',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm -നു',\n LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'\n },\n calendar : {\n sameDay : '[ഇന്ന്] LT',\n nextDay : '[നാളെ] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[ഇന്നലെ] LT',\n lastWeek : '[കഴിഞ്ഞ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s കഴിഞ്ഞ്',\n past : '%s മുൻപ്',\n s : 'അൽപ നിമിഷങ്ങൾ',\n m : 'ഒരു മിനിറ്റ്',\n mm : '%d മിനിറ്റ്',\n h : 'ഒരു മണിക്കൂർ',\n hh : '%d മണിക്കൂർ',\n d : 'ഒരു ദിവസം',\n dd : '%d ദിവസം',\n M : 'ഒരു മാസം',\n MM : '%d മാസം',\n y : 'ഒരു വർഷം',\n yy : '%d വർഷം'\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if ((meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n }\n});\n\nreturn ml;\n\n})));\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar helpers = require('../helpers/index');\nvar Ticks = require('../core/core.ticks');\n\nmodule.exports = function(Chart) {\n\n\tvar globalDefaults = defaults.global;\n\n\tvar defaultConfig = {\n\t\tdisplay: true,\n\n\t\t// Boolean - Whether to animate scaling the chart from the centre\n\t\tanimate: true,\n\t\tposition: 'chartArea',\n\n\t\tangleLines: {\n\t\t\tdisplay: true,\n\t\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\t\tlineWidth: 1\n\t\t},\n\n\t\tgridLines: {\n\t\t\tcircular: false\n\t\t},\n\n\t\t// label settings\n\t\tticks: {\n\t\t\t// Boolean - Show a backdrop to the scale label\n\t\t\tshowLabelBackdrop: true,\n\n\t\t\t// String - The colour of the label backdrop\n\t\t\tbackdropColor: 'rgba(255,255,255,0.75)',\n\n\t\t\t// Number - The backdrop padding above & below the label in pixels\n\t\t\tbackdropPaddingY: 2,\n\n\t\t\t// Number - The backdrop padding to the side of the label in pixels\n\t\t\tbackdropPaddingX: 2,\n\n\t\t\tcallback: Ticks.formatters.linear\n\t\t},\n\n\t\tpointLabels: {\n\t\t\t// Boolean - if true, show point labels\n\t\t\tdisplay: true,\n\n\t\t\t// Number - Point label font size in pixels\n\t\t\tfontSize: 10,\n\n\t\t\t// Function - Used to convert point labels\n\t\t\tcallback: function(label) {\n\t\t\t\treturn label;\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction getValueCount(scale) {\n\t\tvar opts = scale.options;\n\t\treturn opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0;\n\t}\n\n\tfunction getPointLabelFontOptions(scale) {\n\t\tvar pointLabelOptions = scale.options.pointLabels;\n\t\tvar fontSize = helpers.valueOrDefault(pointLabelOptions.fontSize, globalDefaults.defaultFontSize);\n\t\tvar fontStyle = helpers.valueOrDefault(pointLabelOptions.fontStyle, globalDefaults.defaultFontStyle);\n\t\tvar fontFamily = helpers.valueOrDefault(pointLabelOptions.fontFamily, globalDefaults.defaultFontFamily);\n\t\tvar font = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\treturn {\n\t\t\tsize: fontSize,\n\t\t\tstyle: fontStyle,\n\t\t\tfamily: fontFamily,\n\t\t\tfont: font\n\t\t};\n\t}\n\n\tfunction measureLabelSize(ctx, fontSize, label) {\n\t\tif (helpers.isArray(label)) {\n\t\t\treturn {\n\t\t\t\tw: helpers.longestText(ctx, ctx.font, label),\n\t\t\t\th: (label.length * fontSize) + ((label.length - 1) * 1.5 * fontSize)\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tw: ctx.measureText(label).width,\n\t\t\th: fontSize\n\t\t};\n\t}\n\n\tfunction determineLimits(angle, pos, size, min, max) {\n\t\tif (angle === min || angle === max) {\n\t\t\treturn {\n\t\t\t\tstart: pos - (size / 2),\n\t\t\t\tend: pos + (size / 2)\n\t\t\t};\n\t\t} else if (angle < min || angle > max) {\n\t\t\treturn {\n\t\t\t\tstart: pos - size - 5,\n\t\t\t\tend: pos\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tstart: pos,\n\t\t\tend: pos + size + 5\n\t\t};\n\t}\n\n\t/**\n\t * Helper function to fit a radial linear scale with point labels\n\t */\n\tfunction fitWithPointLabels(scale) {\n\t\t/*\n\t\t * Right, this is really confusing and there is a lot of maths going on here\n\t\t * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n\t\t *\n\t\t * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n\t\t *\n\t\t * Solution:\n\t\t *\n\t\t * We assume the radius of the polygon is half the size of the canvas at first\n\t\t * at each index we check if the text overlaps.\n\t\t *\n\t\t * Where it does, we store that angle and that index.\n\t\t *\n\t\t * After finding the largest index and angle we calculate how much we need to remove\n\t\t * from the shape radius to move the point inwards by that x.\n\t\t *\n\t\t * We average the left and right distances to get the maximum shape radius that can fit in the box\n\t\t * along with labels.\n\t\t *\n\t\t * Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n\t\t * on each side, removing that from the size, halving it and adding the left x protrusion width.\n\t\t *\n\t\t * This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n\t\t * and position it in the most space efficient manner\n\t\t *\n\t\t * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\t\t */\n\n\t\tvar plFont = getPointLabelFontOptions(scale);\n\n\t\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n\t\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\n\t\tvar furthestLimits = {\n\t\t\tr: scale.width,\n\t\t\tl: 0,\n\t\t\tt: scale.height,\n\t\t\tb: 0\n\t\t};\n\t\tvar furthestAngles = {};\n\t\tvar i, textSize, pointPosition;\n\n\t\tscale.ctx.font = plFont.font;\n\t\tscale._pointLabelSizes = [];\n\n\t\tvar valueCount = getValueCount(scale);\n\t\tfor (i = 0; i < valueCount; i++) {\n\t\t\tpointPosition = scale.getPointPosition(i, largestPossibleRadius);\n\t\t\ttextSize = measureLabelSize(scale.ctx, plFont.size, scale.pointLabels[i] || '');\n\t\t\tscale._pointLabelSizes[i] = textSize;\n\n\t\t\t// Add quarter circle to make degree 0 mean top of circle\n\t\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\t\tvar angle = helpers.toDegrees(angleRadians) % 360;\n\t\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n\t\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n\n\t\t\tif (hLimits.start < furthestLimits.l) {\n\t\t\t\tfurthestLimits.l = hLimits.start;\n\t\t\t\tfurthestAngles.l = angleRadians;\n\t\t\t}\n\n\t\t\tif (hLimits.end > furthestLimits.r) {\n\t\t\t\tfurthestLimits.r = hLimits.end;\n\t\t\t\tfurthestAngles.r = angleRadians;\n\t\t\t}\n\n\t\t\tif (vLimits.start < furthestLimits.t) {\n\t\t\t\tfurthestLimits.t = vLimits.start;\n\t\t\t\tfurthestAngles.t = angleRadians;\n\t\t\t}\n\n\t\t\tif (vLimits.end > furthestLimits.b) {\n\t\t\t\tfurthestLimits.b = vLimits.end;\n\t\t\t\tfurthestAngles.b = angleRadians;\n\t\t\t}\n\t\t}\n\n\t\tscale.setReductions(largestPossibleRadius, furthestLimits, furthestAngles);\n\t}\n\n\t/**\n\t * Helper function to fit a radial linear scale with no point labels\n\t */\n\tfunction fit(scale) {\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\n\t\tscale.drawingArea = Math.round(largestPossibleRadius);\n\t\tscale.setCenterPoint(0, 0, 0, 0);\n\t}\n\n\tfunction getTextAlignForAngle(angle) {\n\t\tif (angle === 0 || angle === 180) {\n\t\t\treturn 'center';\n\t\t} else if (angle < 180) {\n\t\t\treturn 'left';\n\t\t}\n\n\t\treturn 'right';\n\t}\n\n\tfunction fillText(ctx, text, position, fontSize) {\n\t\tif (helpers.isArray(text)) {\n\t\t\tvar y = position.y;\n\t\t\tvar spacing = 1.5 * fontSize;\n\n\t\t\tfor (var i = 0; i < text.length; ++i) {\n\t\t\t\tctx.fillText(text[i], position.x, y);\n\t\t\t\ty += spacing;\n\t\t\t}\n\t\t} else {\n\t\t\tctx.fillText(text, position.x, position.y);\n\t\t}\n\t}\n\n\tfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\n\t\tif (angle === 90 || angle === 270) {\n\t\t\tposition.y -= (textSize.h / 2);\n\t\t} else if (angle > 270 || angle < 90) {\n\t\t\tposition.y -= textSize.h;\n\t\t}\n\t}\n\n\tfunction drawPointLabels(scale) {\n\t\tvar ctx = scale.ctx;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar opts = scale.options;\n\t\tvar angleLineOpts = opts.angleLines;\n\t\tvar pointLabelOpts = opts.pointLabels;\n\n\t\tctx.lineWidth = angleLineOpts.lineWidth;\n\t\tctx.strokeStyle = angleLineOpts.color;\n\n\t\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\n\n\t\t// Point Label Font\n\t\tvar plFont = getPointLabelFontOptions(scale);\n\n\t\tctx.textBaseline = 'top';\n\n\t\tfor (var i = getValueCount(scale) - 1; i >= 0; i--) {\n\t\t\tif (angleLineOpts.display) {\n\t\t\t\tvar outerPosition = scale.getPointPosition(i, outerDistance);\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(scale.xCenter, scale.yCenter);\n\t\t\t\tctx.lineTo(outerPosition.x, outerPosition.y);\n\t\t\t\tctx.stroke();\n\t\t\t\tctx.closePath();\n\t\t\t}\n\n\t\t\tif (pointLabelOpts.display) {\n\t\t\t\t// Extra 3px out for some label spacing\n\t\t\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + 5);\n\n\t\t\t\t// Keep this in loop since we may support array properties here\n\t\t\t\tvar pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor, globalDefaults.defaultFontColor);\n\t\t\t\tctx.font = plFont.font;\n\t\t\t\tctx.fillStyle = pointLabelFontColor;\n\n\t\t\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\t\t\tvar angle = helpers.toDegrees(angleRadians);\n\t\t\t\tctx.textAlign = getTextAlignForAngle(angle);\n\t\t\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\n\t\t\t\tfillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\n\t\tvar ctx = scale.ctx;\n\t\tctx.strokeStyle = helpers.valueAtIndexOrDefault(gridLineOpts.color, index - 1);\n\t\tctx.lineWidth = helpers.valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1);\n\n\t\tif (scale.options.gridLines.circular) {\n\t\t\t// Draw circular arcs between the points\n\t\t\tctx.beginPath();\n\t\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\n\t\t\tctx.closePath();\n\t\t\tctx.stroke();\n\t\t} else {\n\t\t\t// Draw straight lines connecting each index\n\t\t\tvar valueCount = getValueCount(scale);\n\n\t\t\tif (valueCount === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tctx.beginPath();\n\t\t\tvar pointPosition = scale.getPointPosition(0, radius);\n\t\t\tctx.moveTo(pointPosition.x, pointPosition.y);\n\n\t\t\tfor (var i = 1; i < valueCount; i++) {\n\t\t\t\tpointPosition = scale.getPointPosition(i, radius);\n\t\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\n\t\t\t}\n\n\t\t\tctx.closePath();\n\t\t\tctx.stroke();\n\t\t}\n\t}\n\n\tfunction numberOrZero(param) {\n\t\treturn helpers.isNumber(param) ? param : 0;\n\t}\n\n\tvar LinearRadialScale = Chart.LinearScaleBase.extend({\n\t\tsetDimensions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\t// Set the unconstrained dimension before label rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.height = me.maxHeight;\n\t\t\tme.xCenter = Math.round(me.width / 2);\n\t\t\tme.yCenter = Math.round(me.height / 2);\n\n\t\t\tvar minSize = helpers.min([me.height, me.width]);\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\tme.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2);\n\t\t},\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar min = Number.POSITIVE_INFINITY;\n\t\t\tvar max = Number.NEGATIVE_INFINITY;\n\n\t\t\thelpers.each(chart.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\n\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmin = Math.min(value, min);\n\t\t\t\t\t\tmax = Math.max(value, max);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\n\t\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\t\tme.handleTickRangeOptions();\n\t\t},\n\t\tgetTickLimit: function() {\n\t\t\tvar tickOpts = this.options.ticks;\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\treturn Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize)));\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\n\t\t\tChart.LinearScaleBase.prototype.convertTicksToLabels.call(me);\n\n\t\t\t// Point labels\n\t\t\tme.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me);\n\t\t},\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\tfit: function() {\n\t\t\tif (this.options.pointLabels.display) {\n\t\t\t\tfitWithPointLabels(this);\n\t\t\t} else {\n\t\t\t\tfit(this);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Set radius reductions and determine new radius and center point\n\t\t * @private\n\t\t */\n\t\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\n\t\t\tvar me = this;\n\t\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\n\t\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\n\t\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\n\t\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - me.height, 0) / Math.cos(furthestAngles.b);\n\n\t\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\n\t\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\n\t\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\n\t\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\n\n\t\t\tme.drawingArea = Math.min(\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\n\t\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\n\t\t},\n\t\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\n\t\t\tvar me = this;\n\t\t\tvar maxRight = me.width - rightMovement - me.drawingArea;\n\t\t\tvar maxLeft = leftMovement + me.drawingArea;\n\t\t\tvar maxTop = topMovement + me.drawingArea;\n\t\t\tvar maxBottom = me.height - bottomMovement - me.drawingArea;\n\n\t\t\tme.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left);\n\t\t\tme.yCenter = Math.round(((maxTop + maxBottom) / 2) + me.top);\n\t\t},\n\n\t\tgetIndexAngle: function(index) {\n\t\t\tvar angleMultiplier = (Math.PI * 2) / getValueCount(this);\n\t\t\tvar startAngle = this.chart.options && this.chart.options.startAngle ?\n\t\t\t\tthis.chart.options.startAngle :\n\t\t\t\t0;\n\n\t\t\tvar startAngleRadians = startAngle * Math.PI * 2 / 360;\n\n\t\t\t// Start from the top instead of right, so remove a quarter of the circle\n\t\t\treturn index * angleMultiplier + startAngleRadians;\n\t\t},\n\t\tgetDistanceFromCenterForValue: function(value) {\n\t\t\tvar me = this;\n\n\t\t\tif (value === null) {\n\t\t\t\treturn 0; // null always in center\n\t\t\t}\n\n\t\t\t// Take into account half font size + the yPadding of the top value\n\t\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\n\t\t\tif (me.options.ticks.reverse) {\n\t\t\t\treturn (me.max - value) * scalingFactor;\n\t\t\t}\n\t\t\treturn (value - me.min) * scalingFactor;\n\t\t},\n\t\tgetPointPosition: function(index, distanceFromCenter) {\n\t\t\tvar me = this;\n\t\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\n\t\t\treturn {\n\t\t\t\tx: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter,\n\t\t\t\ty: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter\n\t\t\t};\n\t\t},\n\t\tgetPointPositionForValue: function(index, value) {\n\t\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n\t\t},\n\n\t\tgetBasePosition: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\n\t\t\treturn me.getPointPositionForValue(0,\n\t\t\t\tme.beginAtZero ? 0 :\n\t\t\t\tmin < 0 && max < 0 ? max :\n\t\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t\t0);\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar gridLineOpts = opts.gridLines;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\n\t\t\tif (opts.display) {\n\t\t\t\tvar ctx = me.ctx;\n\t\t\t\tvar startAngle = this.getIndexAngle(0);\n\n\t\t\t\t// Tick Font\n\t\t\t\tvar tickFontSize = valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\t\tvar tickFontStyle = valueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\t\tvar tickFontFamily = valueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\t\tvar tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);\n\n\t\t\t\thelpers.each(me.ticks, function(label, index) {\n\t\t\t\t\t// Don't draw a centre value (if it is minimum)\n\t\t\t\t\tif (index > 0 || tickOpts.reverse) {\n\t\t\t\t\t\tvar yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n\n\t\t\t\t\t\t// Draw circular lines around the scale\n\t\t\t\t\t\tif (gridLineOpts.display && index !== 0) {\n\t\t\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, yCenterOffset, index);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (tickOpts.display) {\n\t\t\t\t\t\t\tvar tickFontColor = valueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor);\n\t\t\t\t\t\t\tctx.font = tickLabelFont;\n\n\t\t\t\t\t\t\tctx.save();\n\t\t\t\t\t\t\tctx.translate(me.xCenter, me.yCenter);\n\t\t\t\t\t\t\tctx.rotate(startAngle);\n\n\t\t\t\t\t\t\tif (tickOpts.showLabelBackdrop) {\n\t\t\t\t\t\t\t\tvar labelWidth = ctx.measureText(label).width;\n\t\t\t\t\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\n\t\t\t\t\t\t\t\tctx.fillRect(\n\t\t\t\t\t\t\t\t\t-labelWidth / 2 - tickOpts.backdropPaddingX,\n\t\t\t\t\t\t\t\t\t-yCenterOffset - tickFontSize / 2 - tickOpts.backdropPaddingY,\n\t\t\t\t\t\t\t\t\tlabelWidth + tickOpts.backdropPaddingX * 2,\n\t\t\t\t\t\t\t\t\ttickFontSize + tickOpts.backdropPaddingY * 2\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tctx.textAlign = 'center';\n\t\t\t\t\t\t\tctx.textBaseline = 'middle';\n\t\t\t\t\t\t\tctx.fillStyle = tickFontColor;\n\t\t\t\t\t\t\tctx.fillText(label, 0, -yCenterOffset);\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (opts.angleLines.display || opts.pointLabels.display) {\n\t\t\t\t\tdrawPointLabels(me);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\tChart.scaleService.registerScaleType('radialLinear', LinearRadialScale, defaultConfig);\n\n};\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar ptBr = moment.defineLocale('pt-br', {\n months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n },\n calendar : {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return (this.day() === 0 || this.day() === 6) ?\n '[Último] dddd [às] LT' : // Saturday + Sunday\n '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'em %s',\n past : '%s atrás',\n s : 'poucos segundos',\n m : 'um minuto',\n mm : '%d minutos',\n h : 'uma hora',\n hh : '%d horas',\n d : 'um dia',\n dd : '%d dias',\n M : 'um mês',\n MM : '%d meses',\n y : 'um ano',\n yy : '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal : '%dº'\n});\n\nreturn ptBr;\n\n})));\n","//! moment.js\n//! version : 2.18.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\nvar hookCallback;\n\nfunction hooks () {\n return hookCallback.apply(null, arguments);\n}\n\n// This is done to register the method called with moment()\n// without creating circular dependencies.\nfunction setHookCallback (callback) {\n hookCallback = callback;\n}\n\nfunction isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n}\n\nfunction isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n}\n\nfunction isObjectEmpty(obj) {\n var k;\n for (k in obj) {\n // even if its not own property I'd still call it non-empty\n return false;\n }\n return true;\n}\n\nfunction isUndefined(input) {\n return input === void 0;\n}\n\nfunction isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n}\n\nfunction isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n}\n\nfunction map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n}\n\nfunction hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n}\n\nfunction extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n}\n\nfunction createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n}\n\nfunction defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n}\n\nfunction getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n}\n\nvar some;\nif (Array.prototype.some) {\n some = Array.prototype.some;\n} else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n}\n\nvar some$1 = some;\n\nfunction isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some$1.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n}\n\nfunction createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n}\n\n// Plugins that add properties should also add the key here (null value),\n// so we can properly clone ourselves.\nvar momentProperties = hooks.momentProperties = [];\n\nfunction copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n}\n\nvar updateInProgress = false;\n\n// Moment prototype object\nfunction Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n}\n\nfunction isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n}\n\nfunction absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n}\n\nfunction toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n}\n\n// compare two arrays, return the number of differences\nfunction compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n}\n\nfunction warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n}\n\nfunction deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n}\n\nvar deprecations = {};\n\nfunction deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n}\n\nhooks.suppressDeprecationWarnings = false;\nhooks.deprecationHandler = null;\n\nfunction isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n}\n\nfunction set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n}\n\nfunction mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n}\n\nfunction Locale(config) {\n if (config != null) {\n this.set(config);\n }\n}\n\nvar keys;\n\nif (Object.keys) {\n keys = Object.keys;\n} else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n}\n\nvar keys$1 = keys;\n\nvar defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n};\n\nfunction calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n}\n\nvar defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n};\n\nfunction longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n}\n\nvar defaultInvalidDate = 'Invalid date';\n\nfunction invalidDate () {\n return this._invalidDate;\n}\n\nvar defaultOrdinal = '%d';\nvar defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\nfunction ordinal (number) {\n return this._ordinal.replace('%d', number);\n}\n\nvar defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n};\n\nfunction relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n}\n\nfunction pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n}\n\nvar aliases = {};\n\nfunction addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n}\n\nfunction normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n}\n\nfunction normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n}\n\nvar priorities = {};\n\nfunction addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n}\n\nfunction getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n}\n\nfunction makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n}\n\nfunction get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n}\n\nfunction set$1 (mom, unit, value) {\n if (mom.isValid()) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n}\n\n// MOMENTS\n\nfunction stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n}\n\n\nfunction stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n}\n\nfunction zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n}\n\nvar formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\nvar localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\nvar formatFunctions = {};\n\nvar formatTokenFunctions = {};\n\n// token: 'M'\n// padded: ['MM', 2]\n// ordinal: 'Mo'\n// callback: function () { this.month() + 1 }\nfunction addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n}\n\nfunction removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n}\n\nfunction makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n}\n\n// format date using native date object\nfunction formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n}\n\nfunction expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n}\n\nvar match1 = /\\d/; // 0 - 9\nvar match2 = /\\d\\d/; // 00 - 99\nvar match3 = /\\d{3}/; // 000 - 999\nvar match4 = /\\d{4}/; // 0000 - 9999\nvar match6 = /[+-]?\\d{6}/; // -999999 - 999999\nvar match1to2 = /\\d\\d?/; // 0 - 99\nvar match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\nvar match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\nvar match1to3 = /\\d{1,3}/; // 0 - 999\nvar match1to4 = /\\d{1,4}/; // 0 - 9999\nvar match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\nvar matchUnsigned = /\\d+/; // 0 - inf\nvar matchSigned = /[+-]?\\d+/; // -inf - inf\n\nvar matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\nvar matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\nvar matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n// any word (or two) characters or numbers including two/three word month in arabic.\n// includes scottish gaelic two word and hyphenated months\nvar matchWord = /[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i;\n\n\nvar regexes = {};\n\nfunction addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n}\n\nfunction getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n}\n\n// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\nfunction unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n}\n\nfunction regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nvar tokens = {};\n\nfunction addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n}\n\nfunction addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n}\n\nfunction addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n}\n\nvar YEAR = 0;\nvar MONTH = 1;\nvar DATE = 2;\nvar HOUR = 3;\nvar MINUTE = 4;\nvar SECOND = 5;\nvar MILLISECOND = 6;\nvar WEEK = 7;\nvar WEEKDAY = 8;\n\nvar indexOf;\n\nif (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n} else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n}\n\nvar indexOf$1 = indexOf;\n\nfunction daysInMonth(year, month) {\n return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\n}\n\n// FORMATTING\n\naddFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n});\n\naddFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n});\n\naddFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n});\n\n// ALIASES\n\naddUnitAlias('month', 'M');\n\n// PRIORITY\n\naddUnitPriority('month', 8);\n\n// PARSING\n\naddRegexToken('M', match1to2);\naddRegexToken('MM', match1to2, match2);\naddRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n});\naddRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n});\n\naddParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n});\n\naddParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n});\n\n// LOCALES\n\nvar MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\nvar defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\nfunction localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n}\n\nvar defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\nfunction localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n}\n\nfunction handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n}\n\nfunction getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n}\n\nfunction getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n}\n\nvar defaultMonthsShortRegex = matchWord;\nfunction monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n}\n\nvar defaultMonthsRegex = matchWord;\nfunction monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n}\n\nfunction computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n}\n\n// FORMATTING\n\naddFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n});\n\naddFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n});\n\naddFormatToken(0, ['YYYY', 4], 0, 'year');\naddFormatToken(0, ['YYYYY', 5], 0, 'year');\naddFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n// ALIASES\n\naddUnitAlias('year', 'y');\n\n// PRIORITIES\n\naddUnitPriority('year', 1);\n\n// PARSING\n\naddRegexToken('Y', matchSigned);\naddRegexToken('YY', match1to2, match2);\naddRegexToken('YYYY', match1to4, match4);\naddRegexToken('YYYYY', match1to6, match6);\naddRegexToken('YYYYYY', match1to6, match6);\n\naddParseToken(['YYYYY', 'YYYYYY'], YEAR);\naddParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n});\naddParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n});\naddParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n});\n\n// HELPERS\n\nfunction daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nfunction isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n\n// HOOKS\n\nhooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n};\n\n// MOMENTS\n\nvar getSetYear = makeGetSet('FullYear', true);\n\nfunction getIsLeapYear () {\n return isLeapYear(this.year());\n}\n\nfunction createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date = new Date(y, m, d, h, M, s, ms);\n\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n}\n\nfunction createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n}\n\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n}\n\n// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\nfunction dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n}\n\nfunction weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n}\n\nfunction weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n}\n\n// FORMATTING\n\naddFormatToken('w', ['ww', 2], 'wo', 'week');\naddFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n// ALIASES\n\naddUnitAlias('week', 'w');\naddUnitAlias('isoWeek', 'W');\n\n// PRIORITIES\n\naddUnitPriority('week', 5);\naddUnitPriority('isoWeek', 5);\n\n// PARSING\n\naddRegexToken('w', match1to2);\naddRegexToken('ww', match1to2, match2);\naddRegexToken('W', match1to2);\naddRegexToken('WW', match1to2, match2);\n\naddWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n});\n\n// HELPERS\n\n// LOCALES\n\nfunction localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n}\n\nvar defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n};\n\nfunction localeFirstDayOfWeek () {\n return this._week.dow;\n}\n\nfunction localeFirstDayOfYear () {\n return this._week.doy;\n}\n\n// MOMENTS\n\nfunction getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\nfunction getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\n// FORMATTING\n\naddFormatToken('d', 0, 'do', 'day');\n\naddFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n});\n\naddFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n});\n\naddFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n});\n\naddFormatToken('e', 0, 0, 'weekday');\naddFormatToken('E', 0, 0, 'isoWeekday');\n\n// ALIASES\n\naddUnitAlias('day', 'd');\naddUnitAlias('weekday', 'e');\naddUnitAlias('isoWeekday', 'E');\n\n// PRIORITY\naddUnitPriority('day', 11);\naddUnitPriority('weekday', 11);\naddUnitPriority('isoWeekday', 11);\n\n// PARSING\n\naddRegexToken('d', match1to2);\naddRegexToken('e', match1to2);\naddRegexToken('E', match1to2);\naddRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n});\naddRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n});\naddRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n});\n\naddWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n});\n\naddWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n});\n\n// HELPERS\n\nfunction parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n}\n\nfunction parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n}\n\n// LOCALES\n\nvar defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\nfunction localeWeekdays (m, format) {\n if (!m) {\n return isArray(this._weekdays) ? this._weekdays :\n this._weekdays['standalone'];\n }\n return isArray(this._weekdays) ? this._weekdays[m.day()] :\n this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n}\n\nvar defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\nfunction localeWeekdaysShort (m) {\n return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n}\n\nvar defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\nfunction localeWeekdaysMin (m) {\n return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n}\n\nfunction handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf$1.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n}\n\nfunction getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n}\n\nfunction getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n}\n\nvar defaultWeekdaysRegex = matchWord;\nfunction weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n}\n\nvar defaultWeekdaysShortRegex = matchWord;\nfunction weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n}\n\nvar defaultWeekdaysMinRegex = matchWord;\nfunction weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n}\n\n\nfunction computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n}\n\n// FORMATTING\n\nfunction hFormat() {\n return this.hours() % 12 || 12;\n}\n\nfunction kFormat() {\n return this.hours() || 24;\n}\n\naddFormatToken('H', ['HH', 2], 0, 'hour');\naddFormatToken('h', ['hh', 2], 0, hFormat);\naddFormatToken('k', ['kk', 2], 0, kFormat);\n\naddFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n});\n\naddFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n});\n\nfunction meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n}\n\nmeridiem('a', true);\nmeridiem('A', false);\n\n// ALIASES\n\naddUnitAlias('hour', 'h');\n\n// PRIORITY\naddUnitPriority('hour', 13);\n\n// PARSING\n\nfunction matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n}\n\naddRegexToken('a', matchMeridiem);\naddRegexToken('A', matchMeridiem);\naddRegexToken('H', match1to2);\naddRegexToken('h', match1to2);\naddRegexToken('k', match1to2);\naddRegexToken('HH', match1to2, match2);\naddRegexToken('hh', match1to2, match2);\naddRegexToken('kk', match1to2, match2);\n\naddRegexToken('hmm', match3to4);\naddRegexToken('hmmss', match5to6);\naddRegexToken('Hmm', match3to4);\naddRegexToken('Hmmss', match5to6);\n\naddParseToken(['H', 'HH'], HOUR);\naddParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n});\naddParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n});\naddParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n});\naddParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n});\n\n// LOCALES\n\nfunction localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n}\n\nvar defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\nfunction localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n}\n\n\n// MOMENTS\n\n// Setting the hour should keep the time, because the user explicitly\n// specified which hour he wants. So trying to maintain the same hour (in\n// a new timezone) makes sense. Adding/subtracting hours does not follow\n// this rule.\nvar getSetHour = makeGetSet('Hours', true);\n\n// months\n// week\n// weekdays\n// meridiem\nvar baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n};\n\n// internal storage for locale config files\nvar locales = {};\nvar localeFamilies = {};\nvar globalLocale;\n\nfunction normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n}\n\n// pick the locale from the array\n// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\nfunction chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return null;\n}\n\nfunction loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n require('./locale/' + name);\n // because defineLocale currently also sets the global locale, we\n // want to undo that for lazy loaded locales\n getSetGlobalLocale(oldLocale);\n } catch (e) { }\n }\n return locales[name];\n}\n\n// This function will load locale and then set the global locale. If\n// no arguments are passed in, it will simply return the current global\n// locale key.\nfunction getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n }\n\n return globalLocale._abbr;\n}\n\nfunction defineLocale (name, config) {\n if (config !== null) {\n var parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n}\n\nfunction updateLocale(name, config) {\n if (config != null) {\n var locale, parentConfig = baseConfig;\n // MERGE\n if (locales[name] != null) {\n parentConfig = locales[name]._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n}\n\n// returns locale data\nfunction getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n}\n\nfunction listLocales() {\n return keys$1(locales);\n}\n\nfunction checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n}\n\n// iso 8601 regex\n// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\nvar extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\nvar basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\nvar tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\nvar isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n];\n\n// iso time formats and regexes\nvar isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n];\n\nvar aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n// date from iso format\nfunction configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n}\n\n// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\nvar basicRfcRegex = /^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d?\\d\\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(?:\\d\\d)?\\d\\d\\s)(\\d\\d:\\d\\d)(\\:\\d\\d)?(\\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\\d{4}))$/;\n\n// date and time from ref 2822 format\nfunction configFromRFC2822(config) {\n var string, match, dayFormat,\n dateFormat, timeFormat, tzFormat;\n var timezones = {\n ' GMT': ' +0000',\n ' EDT': ' -0400',\n ' EST': ' -0500',\n ' CDT': ' -0500',\n ' CST': ' -0600',\n ' MDT': ' -0600',\n ' MST': ' -0700',\n ' PDT': ' -0700',\n ' PST': ' -0800'\n };\n var military = 'YXWVUTSRQPONZABCDEFGHIKLM';\n var timezone, timezoneIndex;\n\n string = config._i\n .replace(/\\([^\\)]*\\)|[\\n\\t]/g, ' ') // Remove comments and folding whitespace\n .replace(/(\\s\\s+)/g, ' ') // Replace multiple-spaces with a single space\n .replace(/^\\s|\\s$/g, ''); // Remove leading and trailing spaces\n match = basicRfcRegex.exec(string);\n\n if (match) {\n dayFormat = match[1] ? 'ddd' + ((match[1].length === 5) ? ', ' : ' ') : '';\n dateFormat = 'D MMM ' + ((match[2].length > 10) ? 'YYYY ' : 'YY ');\n timeFormat = 'HH:mm' + (match[4] ? ':ss' : '');\n\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n if (match[1]) { // day of week given\n var momentDate = new Date(match[2]);\n var momentDay = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'][momentDate.getDay()];\n\n if (match[1].substr(0,3) !== momentDay) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return;\n }\n }\n\n switch (match[5].length) {\n case 2: // military\n if (timezoneIndex === 0) {\n timezone = ' +0000';\n } else {\n timezoneIndex = military.indexOf(match[5][1].toUpperCase()) - 12;\n timezone = ((timezoneIndex < 0) ? ' -' : ' +') +\n (('' + timezoneIndex).replace(/^-?/, '0')).match(/..$/)[0] + '00';\n }\n break;\n case 4: // Zone\n timezone = timezones[match[5]];\n break;\n default: // UT or +/-9999\n timezone = timezones[' GMT'];\n }\n match[5] = timezone;\n config._i = match.splice(1).join('');\n tzFormat = ' ZZ';\n config._f = dayFormat + dateFormat + timeFormat + tzFormat;\n configFromStringAndFormat(config);\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n}\n\n// date from iso format or fallback\nfunction configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n}\n\nhooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n);\n\n// Pick the first defined of two or three arguments.\nfunction defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n}\n\nfunction currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n}\n\n// convert an array to a date.\n// the array should mirror the parameters below\n// note: all values past the year are optional and will default to the lowest possible value.\n// [year, month, day , hour, minute, second, millisecond]\nfunction configFromArray (config) {\n var i, date, input = [], currentDate, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n}\n\nfunction dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to begining of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n}\n\n// constant that refers to the ISO standard\nhooks.ISO_8601 = function () {};\n\n// constant that refers to the RFC 2822 form\nhooks.RFC_2822 = function () {};\n\n// date from string and format string\nfunction configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n}\n\n\nfunction meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n}\n\n// date from string and array of format strings\nfunction configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n}\n\nfunction configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n}\n\nfunction createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n}\n\nfunction prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n}\n\nfunction configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n}\n\nfunction createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n}\n\nfunction createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n}\n\nvar prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n);\n\nvar prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n);\n\n// Pick a moment m from moments so that m[fn](other) is true for all\n// other. This relies on the function fn to be transitive.\n//\n// moments should either be an array of moment objects or an array, whose\n// first element is an array of moment objects.\nfunction pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n}\n\n// TODO: Use [].sort instead?\nfunction min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n}\n\nfunction max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n}\n\nvar now = function () {\n return Date.now ? Date.now() : +(new Date());\n};\n\nvar ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\nfunction isDurationValid(m) {\n for (var key in m) {\n if (!(ordering.indexOf(key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n}\n\nfunction isValid$1() {\n return this._isValid;\n}\n\nfunction createInvalid$1() {\n return createDuration(NaN);\n}\n\nfunction Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n}\n\nfunction isDuration (obj) {\n return obj instanceof Duration;\n}\n\nfunction absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n}\n\n// FORMATTING\n\nfunction offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n}\n\noffset('Z', ':');\noffset('ZZ', '');\n\n// PARSING\n\naddRegexToken('Z', matchShortOffset);\naddRegexToken('ZZ', matchShortOffset);\naddParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n});\n\n// HELPERS\n\n// timezone chunker\n// '+10:00' > ['10', '00']\n// '-1530' > ['-15', '30']\nvar chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\nfunction offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n}\n\n// Return a moment from input, that is local/utc/zone equivalent to model.\nfunction cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n}\n\nfunction getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n}\n\n// HOOKS\n\n// This function will be called whenever a moment is mutated.\n// It is intended to keep the offset in sync with the timezone.\nhooks.updateOffset = function () {};\n\n// MOMENTS\n\n// keepLocalTime = true means only change the timezone, without\n// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n// +0200, so we adjust the time as needed, to be valid.\n//\n// Keeping the time actually adds/subtracts (one hour)\n// from the actual represented time. That is why we call updateOffset\n// a second time. In case it wants us to change the offset again\n// _changeInProgress == true case, then we have to adjust, because\n// there is no such time in the given timezone.\nfunction getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n}\n\nfunction getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n}\n\nfunction setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n}\n\nfunction setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n}\n\nfunction setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n}\n\nfunction hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n}\n\nfunction isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n}\n\nfunction isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n}\n\nfunction isLocal () {\n return this.isValid() ? !this._isUTC : false;\n}\n\nfunction isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n}\n\nfunction isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n}\n\n// ASP.NET json date format regex\nvar aspNetRegex = /^(\\-)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n// and further modified to allow for strings containing both week and day\nvar isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;\n\nfunction createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n}\n\ncreateDuration.fn = Duration.prototype;\ncreateDuration.invalid = createInvalid$1;\n\nfunction parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n}\n\nfunction positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n}\n\nfunction momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n}\n\n// TODO: remove 'name' arg after deprecation is removed\nfunction createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n}\n\nfunction addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n}\n\nvar add = createAdder(1, 'add');\nvar subtract = createAdder(-1, 'subtract');\n\nfunction getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n}\n\nfunction calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n}\n\nfunction clone () {\n return new Moment(this);\n}\n\nfunction isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n}\n\nfunction isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n}\n\nfunction isBetween (from, to, units, inclusivity) {\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));\n}\n\nfunction isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units || 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n}\n\nfunction isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input,units);\n}\n\nfunction isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input,units);\n}\n\nfunction diff (input, units, asFloat) {\n var that,\n zoneDelta,\n delta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n if (units === 'year' || units === 'month' || units === 'quarter') {\n output = monthDiff(this, that);\n if (units === 'quarter') {\n output = output / 3;\n } else if (units === 'year') {\n output = output / 12;\n }\n } else {\n delta = this - that;\n output = units === 'second' ? delta / 1e3 : // 1000\n units === 'minute' ? delta / 6e4 : // 1000 * 60\n units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60\n units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst\n units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst\n delta;\n }\n return asFloat ? output : absFloor(output);\n}\n\nfunction monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n}\n\nhooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\nhooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\nfunction toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n}\n\nfunction toISOString() {\n if (!this.isValid()) {\n return null;\n }\n var m = this.clone().utc();\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n return this.toDate().toISOString();\n }\n return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n}\n\n/**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\nfunction inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n}\n\nfunction format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n}\n\nfunction from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n}\n\nfunction to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n}\n\n// If passed a locale key, it will set the locale for this\n// instance. Otherwise, it will return the locale configuration\n// variables for this instance.\nfunction locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n}\n\nvar lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n);\n\nfunction localeData () {\n return this._locale;\n}\n\nfunction startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n /* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n this.hours(0);\n /* falls through */\n case 'hour':\n this.minutes(0);\n /* falls through */\n case 'minute':\n this.seconds(0);\n /* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n}\n\nfunction endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n\n // 'date' is an alias for 'day', so it should be considered as such.\n if (units === 'date') {\n units = 'day';\n }\n\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n}\n\nfunction valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n}\n\nfunction unix () {\n return Math.floor(this.valueOf() / 1000);\n}\n\nfunction toDate () {\n return new Date(this.valueOf());\n}\n\nfunction toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n}\n\nfunction toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n}\n\nfunction toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n}\n\nfunction isValid$2 () {\n return isValid(this);\n}\n\nfunction parsingFlags () {\n return extend({}, getParsingFlags(this));\n}\n\nfunction invalidAt () {\n return getParsingFlags(this).overflow;\n}\n\nfunction creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n}\n\n// FORMATTING\n\naddFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n});\n\naddFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n});\n\nfunction addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n}\n\naddWeekYearFormatToken('gggg', 'weekYear');\naddWeekYearFormatToken('ggggg', 'weekYear');\naddWeekYearFormatToken('GGGG', 'isoWeekYear');\naddWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n// ALIASES\n\naddUnitAlias('weekYear', 'gg');\naddUnitAlias('isoWeekYear', 'GG');\n\n// PRIORITY\n\naddUnitPriority('weekYear', 1);\naddUnitPriority('isoWeekYear', 1);\n\n\n// PARSING\n\naddRegexToken('G', matchSigned);\naddRegexToken('g', matchSigned);\naddRegexToken('GG', match1to2, match2);\naddRegexToken('gg', match1to2, match2);\naddRegexToken('GGGG', match1to4, match4);\naddRegexToken('gggg', match1to4, match4);\naddRegexToken('GGGGG', match1to6, match6);\naddRegexToken('ggggg', match1to6, match6);\n\naddWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n});\n\naddWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n});\n\n// MOMENTS\n\nfunction getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n}\n\nfunction getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n}\n\nfunction getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n}\n\nfunction getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n}\n\nfunction getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n}\n\nfunction setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n}\n\n// FORMATTING\n\naddFormatToken('Q', 0, 'Qo', 'quarter');\n\n// ALIASES\n\naddUnitAlias('quarter', 'Q');\n\n// PRIORITY\n\naddUnitPriority('quarter', 7);\n\n// PARSING\n\naddRegexToken('Q', match1);\naddParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n});\n\n// MOMENTS\n\nfunction getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n}\n\n// FORMATTING\n\naddFormatToken('D', ['DD', 2], 'Do', 'date');\n\n// ALIASES\n\naddUnitAlias('date', 'D');\n\n// PRIOROITY\naddUnitPriority('date', 9);\n\n// PARSING\n\naddRegexToken('D', match1to2);\naddRegexToken('DD', match1to2, match2);\naddRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n});\n\naddParseToken(['D', 'DD'], DATE);\naddParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0], 10);\n});\n\n// MOMENTS\n\nvar getSetDayOfMonth = makeGetSet('Date', true);\n\n// FORMATTING\n\naddFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n// ALIASES\n\naddUnitAlias('dayOfYear', 'DDD');\n\n// PRIORITY\naddUnitPriority('dayOfYear', 4);\n\n// PARSING\n\naddRegexToken('DDD', match1to3);\naddRegexToken('DDDD', match3);\naddParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n});\n\n// HELPERS\n\n// MOMENTS\n\nfunction getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n}\n\n// FORMATTING\n\naddFormatToken('m', ['mm', 2], 0, 'minute');\n\n// ALIASES\n\naddUnitAlias('minute', 'm');\n\n// PRIORITY\n\naddUnitPriority('minute', 14);\n\n// PARSING\n\naddRegexToken('m', match1to2);\naddRegexToken('mm', match1to2, match2);\naddParseToken(['m', 'mm'], MINUTE);\n\n// MOMENTS\n\nvar getSetMinute = makeGetSet('Minutes', false);\n\n// FORMATTING\n\naddFormatToken('s', ['ss', 2], 0, 'second');\n\n// ALIASES\n\naddUnitAlias('second', 's');\n\n// PRIORITY\n\naddUnitPriority('second', 15);\n\n// PARSING\n\naddRegexToken('s', match1to2);\naddRegexToken('ss', match1to2, match2);\naddParseToken(['s', 'ss'], SECOND);\n\n// MOMENTS\n\nvar getSetSecond = makeGetSet('Seconds', false);\n\n// FORMATTING\n\naddFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n});\n\naddFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n});\n\naddFormatToken(0, ['SSS', 3], 0, 'millisecond');\naddFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n});\naddFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n});\naddFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n});\naddFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n});\naddFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n});\naddFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n});\n\n\n// ALIASES\n\naddUnitAlias('millisecond', 'ms');\n\n// PRIORITY\n\naddUnitPriority('millisecond', 16);\n\n// PARSING\n\naddRegexToken('S', match1to3, match1);\naddRegexToken('SS', match1to3, match2);\naddRegexToken('SSS', match1to3, match3);\n\nvar token;\nfor (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n}\n\nfunction parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n}\n\nfor (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n}\n// MOMENTS\n\nvar getSetMillisecond = makeGetSet('Milliseconds', false);\n\n// FORMATTING\n\naddFormatToken('z', 0, 0, 'zoneAbbr');\naddFormatToken('zz', 0, 0, 'zoneName');\n\n// MOMENTS\n\nfunction getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n}\n\nfunction getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n}\n\nvar proto = Moment.prototype;\n\nproto.add = add;\nproto.calendar = calendar$1;\nproto.clone = clone;\nproto.diff = diff;\nproto.endOf = endOf;\nproto.format = format;\nproto.from = from;\nproto.fromNow = fromNow;\nproto.to = to;\nproto.toNow = toNow;\nproto.get = stringGet;\nproto.invalidAt = invalidAt;\nproto.isAfter = isAfter;\nproto.isBefore = isBefore;\nproto.isBetween = isBetween;\nproto.isSame = isSame;\nproto.isSameOrAfter = isSameOrAfter;\nproto.isSameOrBefore = isSameOrBefore;\nproto.isValid = isValid$2;\nproto.lang = lang;\nproto.locale = locale;\nproto.localeData = localeData;\nproto.max = prototypeMax;\nproto.min = prototypeMin;\nproto.parsingFlags = parsingFlags;\nproto.set = stringSet;\nproto.startOf = startOf;\nproto.subtract = subtract;\nproto.toArray = toArray;\nproto.toObject = toObject;\nproto.toDate = toDate;\nproto.toISOString = toISOString;\nproto.inspect = inspect;\nproto.toJSON = toJSON;\nproto.toString = toString;\nproto.unix = unix;\nproto.valueOf = valueOf;\nproto.creationData = creationData;\n\n// Year\nproto.year = getSetYear;\nproto.isLeapYear = getIsLeapYear;\n\n// Week Year\nproto.weekYear = getSetWeekYear;\nproto.isoWeekYear = getSetISOWeekYear;\n\n// Quarter\nproto.quarter = proto.quarters = getSetQuarter;\n\n// Month\nproto.month = getSetMonth;\nproto.daysInMonth = getDaysInMonth;\n\n// Week\nproto.week = proto.weeks = getSetWeek;\nproto.isoWeek = proto.isoWeeks = getSetISOWeek;\nproto.weeksInYear = getWeeksInYear;\nproto.isoWeeksInYear = getISOWeeksInYear;\n\n// Day\nproto.date = getSetDayOfMonth;\nproto.day = proto.days = getSetDayOfWeek;\nproto.weekday = getSetLocaleDayOfWeek;\nproto.isoWeekday = getSetISODayOfWeek;\nproto.dayOfYear = getSetDayOfYear;\n\n// Hour\nproto.hour = proto.hours = getSetHour;\n\n// Minute\nproto.minute = proto.minutes = getSetMinute;\n\n// Second\nproto.second = proto.seconds = getSetSecond;\n\n// Millisecond\nproto.millisecond = proto.milliseconds = getSetMillisecond;\n\n// Offset\nproto.utcOffset = getSetOffset;\nproto.utc = setOffsetToUTC;\nproto.local = setOffsetToLocal;\nproto.parseZone = setOffsetToParsedOffset;\nproto.hasAlignedHourOffset = hasAlignedHourOffset;\nproto.isDST = isDaylightSavingTime;\nproto.isLocal = isLocal;\nproto.isUtcOffset = isUtcOffset;\nproto.isUtc = isUtc;\nproto.isUTC = isUtc;\n\n// Timezone\nproto.zoneAbbr = getZoneAbbr;\nproto.zoneName = getZoneName;\n\n// Deprecations\nproto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\nproto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\nproto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\nproto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\nproto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\nfunction createUnix (input) {\n return createLocal(input * 1000);\n}\n\nfunction createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n}\n\nfunction preParsePostFormat (string) {\n return string;\n}\n\nvar proto$1 = Locale.prototype;\n\nproto$1.calendar = calendar;\nproto$1.longDateFormat = longDateFormat;\nproto$1.invalidDate = invalidDate;\nproto$1.ordinal = ordinal;\nproto$1.preparse = preParsePostFormat;\nproto$1.postformat = preParsePostFormat;\nproto$1.relativeTime = relativeTime;\nproto$1.pastFuture = pastFuture;\nproto$1.set = set;\n\n// Month\nproto$1.months = localeMonths;\nproto$1.monthsShort = localeMonthsShort;\nproto$1.monthsParse = localeMonthsParse;\nproto$1.monthsRegex = monthsRegex;\nproto$1.monthsShortRegex = monthsShortRegex;\n\n// Week\nproto$1.week = localeWeek;\nproto$1.firstDayOfYear = localeFirstDayOfYear;\nproto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n// Day of Week\nproto$1.weekdays = localeWeekdays;\nproto$1.weekdaysMin = localeWeekdaysMin;\nproto$1.weekdaysShort = localeWeekdaysShort;\nproto$1.weekdaysParse = localeWeekdaysParse;\n\nproto$1.weekdaysRegex = weekdaysRegex;\nproto$1.weekdaysShortRegex = weekdaysShortRegex;\nproto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n// Hours\nproto$1.isPM = localeIsPM;\nproto$1.meridiem = localeMeridiem;\n\nfunction get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n}\n\nfunction listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n}\n\n// ()\n// (5)\n// (fmt, 5)\n// (fmt)\n// (true)\n// (true, 5)\n// (true, fmt, 5)\n// (true, fmt)\nfunction listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n}\n\nfunction listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n}\n\nfunction listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n}\n\nfunction listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n}\n\nfunction listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n}\n\nfunction listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n}\n\ngetSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n});\n\n// Side effect imports\nhooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\nhooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\nvar mathAbs = Math.abs;\n\nfunction abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n}\n\nfunction addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n}\n\n// supports only 2.0-style add(1, 's') or add(duration)\nfunction add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n}\n\n// supports only 2.0-style subtract(1, 's') or subtract(duration)\nfunction subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n}\n\nfunction absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n}\n\nfunction bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n}\n\nfunction daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n}\n\nfunction monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n}\n\nfunction as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n}\n\n// TODO: Use this.as('ms')?\nfunction valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n}\n\nfunction makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n}\n\nvar asMilliseconds = makeAs('ms');\nvar asSeconds = makeAs('s');\nvar asMinutes = makeAs('m');\nvar asHours = makeAs('h');\nvar asDays = makeAs('d');\nvar asWeeks = makeAs('w');\nvar asMonths = makeAs('M');\nvar asYears = makeAs('y');\n\nfunction get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n}\n\nfunction makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n}\n\nvar milliseconds = makeGetter('milliseconds');\nvar seconds = makeGetter('seconds');\nvar minutes = makeGetter('minutes');\nvar hours = makeGetter('hours');\nvar days = makeGetter('days');\nvar months = makeGetter('months');\nvar years = makeGetter('years');\n\nfunction weeks () {\n return absFloor(this.days() / 7);\n}\n\nvar round = Math.round;\nvar thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n};\n\n// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\nfunction substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n}\n\nfunction relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n}\n\n// This function allows you to set the rounding function for relative time strings\nfunction getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n}\n\n// This function allows you to set a threshold for relative time strings\nfunction getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n}\n\nfunction humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n}\n\nvar abs$1 = Math.abs;\n\nfunction toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds;\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n return (total < 0 ? '-' : '') +\n 'P' +\n (Y ? Y + 'Y' : '') +\n (M ? M + 'M' : '') +\n (D ? D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? h + 'H' : '') +\n (m ? m + 'M' : '') +\n (s ? s + 'S' : '');\n}\n\nvar proto$2 = Duration.prototype;\n\nproto$2.isValid = isValid$1;\nproto$2.abs = abs;\nproto$2.add = add$1;\nproto$2.subtract = subtract$1;\nproto$2.as = as;\nproto$2.asMilliseconds = asMilliseconds;\nproto$2.asSeconds = asSeconds;\nproto$2.asMinutes = asMinutes;\nproto$2.asHours = asHours;\nproto$2.asDays = asDays;\nproto$2.asWeeks = asWeeks;\nproto$2.asMonths = asMonths;\nproto$2.asYears = asYears;\nproto$2.valueOf = valueOf$1;\nproto$2._bubble = bubble;\nproto$2.get = get$2;\nproto$2.milliseconds = milliseconds;\nproto$2.seconds = seconds;\nproto$2.minutes = minutes;\nproto$2.hours = hours;\nproto$2.days = days;\nproto$2.weeks = weeks;\nproto$2.months = months;\nproto$2.years = years;\nproto$2.humanize = humanize;\nproto$2.toISOString = toISOString$1;\nproto$2.toString = toISOString$1;\nproto$2.toJSON = toISOString$1;\nproto$2.locale = locale;\nproto$2.localeData = localeData;\n\n// Deprecations\nproto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\nproto$2.lang = lang;\n\n// Side effect imports\n\n// FORMATTING\n\naddFormatToken('X', 0, 0, 'unix');\naddFormatToken('x', 0, 0, 'valueOf');\n\n// PARSING\n\naddRegexToken('x', matchSigned);\naddRegexToken('X', matchTimestamp);\naddParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n});\naddParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n});\n\n// Side effect imports\n\n\nhooks.version = '2.18.1';\n\nsetHookCallback(createLocal);\n\nhooks.fn = proto;\nhooks.min = min;\nhooks.max = max;\nhooks.now = now;\nhooks.utc = createUTC;\nhooks.unix = createUnix;\nhooks.months = listMonths;\nhooks.isDate = isDate;\nhooks.locale = getSetGlobalLocale;\nhooks.invalid = createInvalid;\nhooks.duration = createDuration;\nhooks.isMoment = isMoment;\nhooks.weekdays = listWeekdays;\nhooks.parseZone = createInZone;\nhooks.localeData = getLocale;\nhooks.isDuration = isDuration;\nhooks.monthsShort = listMonthsShort;\nhooks.weekdaysMin = listWeekdaysMin;\nhooks.defineLocale = defineLocale;\nhooks.updateLocale = updateLocale;\nhooks.locales = listLocales;\nhooks.weekdaysShort = listWeekdaysShort;\nhooks.normalizeUnits = normalizeUnits;\nhooks.relativeTimeRounding = getSetRelativeTimeRounding;\nhooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\nhooks.calendarFormat = getCalendarFormat;\nhooks.prototype = proto;\n\nreturn hooks;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar jv = moment.defineLocale('jv', {\n months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar : {\n sameDay : '[Dinten puniko pukul] LT',\n nextDay : '[Mbenjang pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kala wingi pukul] LT',\n lastWeek : 'dddd [kepengker pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'wonten ing %s',\n past : '%s ingkang kepengker',\n s : 'sawetawis detik',\n m : 'setunggal menit',\n mm : '%d menit',\n h : 'setunggal jam',\n hh : '%d jam',\n d : 'sedinten',\n dd : '%d dinten',\n M : 'sewulan',\n MM : '%d wulan',\n y : 'setaun',\n yy : '%d taun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn jv;\n\n})));\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar frCa = moment.defineLocale('fr-ca', {\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact : true,\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Aujourd’hui à] LT',\n nextDay : '[Demain à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[Hier à] LT',\n lastWeek : 'dddd [dernier à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dans %s',\n past : 'il y a %s',\n s : 'quelques secondes',\n m : 'une minute',\n mm : '%d minutes',\n h : 'une heure',\n hh : '%d heures',\n d : 'un jour',\n dd : '%d jours',\n M : 'un mois',\n MM : '%d mois',\n y : 'un an',\n yy : '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal : function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n }\n});\n\nreturn frCa;\n\n})));\n"],"sourceRoot":""}