{"version":3,"sources":["webpack:///./node_modules/chart.js/dist/Chart.js","webpack:///./src/router/views/home.vue?0162","webpack:///./node_modules/vue-chartjs/es/mixins/index.js","webpack:///./node_modules/vue-chartjs/es/BaseCharts.js","webpack:///./src/router/views/dashboard/CardLine1ChartExample.vue?bfe7","webpack:///src/router/views/dashboard/CardLine1ChartExample.vue","webpack:///./src/router/views/dashboard/CardLine1ChartExample.vue?489b","webpack:///src/router/views/home.vue","webpack:///./src/router/views/home.vue?45e4","webpack:///./src/router/views/home.vue","webpack:///./src/router/views/dashboard/CardLine1ChartExample.vue?1490"],"names":["global","factory","module","exports","__webpack_require__","e","this","moment","hasOwnProperty","conversions","rgb2hsl","rgb2hsv","rgb2hwb","rgb2cmyk","rgb2keyword","rgb2xyz","rgb2lab","rgb2lch","hsl2rgb","hsl2hsv","hsl2hwb","hsl2cmyk","hsl2keyword","hsv2rgb","hsv2hsl","hsv2hwb","hsv2cmyk","hsv2keyword","hwb2rgb","hwb2hsl","hwb2hsv","hwb2cmyk","hwb2keyword","cmyk2rgb","cmyk2hsl","cmyk2hsv","cmyk2hwb","cmyk2keyword","keyword2rgb","keyword2hsl","keyword2hsv","keyword2hwb","keyword2cmyk","keyword2lab","keyword2xyz","xyz2rgb","xyz2lab","xyz2lch","lab2xyz","lab2rgb","lab2lch","lch2lab","lch2xyz","lch2rgb","rgb","h","s","l","r","g","b","min","Math","max","delta","v","w","c","m","y","k","reverseKeywords","JSON","stringify","pow","x","z","a","xyz","args","hsl","t1","t2","t3","val","i","sv","hsv","hi","floor","f","p","q","t","sl","hwb","n","wh","bl","ratio","cmyk","lab","y2","hr","atan2","PI","sqrt","lch","cos","sin","keyword","cssKeywords","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","key","convert","Converter","func","arg","Array","prototype","slice","call","arguments","pair","exec","from","to","undefined","length","round","convs","routeSpace","space","values","getValues","setValues","vals","fspace","forEach","colorConvert","colorName","colorString","getRgba","getHsla","getRgb","getHsl","getHwb","getAlpha","hexString","rgbString","rgbaString","percentString","percentaString","hslString","hslaString","hwbString","string","abbr","hex","rgba","per","match","hexAlpha","parseInt","parseFloat","scale","alpha","isNaN","hsla","hexDouble","reverseNames","num","str","toString","toUpperCase","name","Color","obj","valid","lightness","value","whiteness","isValid","setSpace","rgbArray","hslArray","hsvArray","hwbArray","concat","cmykArray","rgbaArray","hslaArray","setChannel","hue","saturation","saturationv","blackness","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","dark","yiq","light","negate","lighten","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","rotate","degrees","mix","mixinColor","weight","color1","w1","w2","toJSON","clone","type","result","source","target","prop","console","error","spaces","maxes","charAt","capped","chans","sname","index","svalues","window","chartjsColor","helpers","noop","uid","id","isNullOrUndef","isArray","Object","substr","isObject","isFinite","Number","valueOrDefault","defaultValue","valueAtIndexOrDefault","callback","fn","thisArg","apply","each","loopable","reverse","len","keys","arrayEquals","a0","a1","ilen","v0","v1","map","klen","_merger","options","tval","sval","merge","_mergerIf","mergeIf","sources","merger","extend","setFn","inherits","extensions","me","ChartElement","constructor","Surrogate","__super__","helpers_core","callCallback","indexOf","array","item","fromIndex","getValueOrDefault","getValueAtIndexOrDefault","effects","linear","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","helpers_easing","easingEffects","RAD_PER_DEG","DOUBLE_PI","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","exports$1","clear","chart","ctx","clearRect","width","height","roundedRect","radius","left","top","right","bottom","moveTo","arc","closePath","rect","drawPoint","style","rotation","xOffset","yOffset","size","cornerRadius","rad","drawImage","beginPath","lineTo","SQRT1_2","fill","stroke","_isPointInArea","point","area","epsilon","clipArea","save","clip","unclipArea","restore","previous","flip","stepped","steppedLine","midpoint","tension","bezierCurveTo","controlPointPreviousX","controlPointNextX","controlPointPreviousY","controlPointNextY","helpers_canvas","drawRoundedRectangle","defaults","_set","scope","defaultColor","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","defaultLineHeight","showLines","core_defaults","toFontString","font","family","helpers_options","toLineHeight","matches","toPadding","_parseFont","globalDefaults","fontSize","fontFamily","lineHeight","fontStyle","resolve","inputs","context","helpers$1","easing","canvas","interpolate","start","view","model","ease","actual","origin","c0","c1","Element","configuration","initialize","hidden","pivot","_view","_model","_start","transition","tooltipPosition","hasValue","isNumber","core_element","exports$2","currentStep","numSteps","render","onAnimationProgress","onAnimationComplete","core_animation","defineProperty","get","set","animation","duration","onProgress","onComplete","core_animations","animations","request","addAnimation","lazy","startTime","Date","now","animating","push","requestAnimationFrame","cancelAnimation","findIndex","splice","requestAnimFrame","startDigest","advance","nextStep","arrayEvents","listenArrayEvents","listener","_chartjs","listeners","configurable","enumerable","method","base","res","object","unlistenArrayEvents","stub","DatasetController","datasetIndex","datasetElementType","dataElementType","linkScales","addElements","updateIndex","meta","getMeta","dataset","getDataset","xAxisID","scales","xAxes","yAxisID","yAxes","data","datasets","getDatasetMeta","getScaleForId","scaleID","_getValueScaleId","_getIndexScaleId","_getValueScale","_getIndexScale","reset","update","destroy","_data","createMetaDataset","_chart","_datasetIndex","createMetaData","_index","metaData","addElementAndReset","element","updateElement","buildOrUpdateElements","isExtensible","resyncElements","easingValue","elements","draw","removeHoverStyle","$previousStyle","setHoverStyle","custom","getHoverColor","backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","numMeta","numData","insertElements","count","onDataPush","onDataPop","pop","onDataShift","shift","onDataSplice","onDataUnshift","core_datasetController","borderAlign","element_arc","inLabelRange","mouseX","vm","hoverRadius","inRange","chartX","chartY","pointRelativePosition","getAngleFromPoint","angle","distance","startAngle","endAngle","betweenAngles","withinRadius","innerRadius","outerRadius","getCenterPoint","halfAngle","halfRadius","getArea","centreAngle","rangeFromCentre","angleMargin","sA","eA","pixelMargin","fillStyle","lineWidth","lineJoin","strokeStyle","valueOrDefault$1","line","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","capBezierPoints","element_line","current","currentVM","spanGaps","points","_children","globalOptionLineElements","lastDrawnIndex","_loop","lineCap","setLineDash","lineDashOffset","previousItem","skip","valueOrDefault$2","defaultColor$1","xRange","abs","hitRadius","yRange","mouseY","pointStyle","element_point","inXRange","inYRange","padding","chartArea","defaultColor$2","isVertical","getBarBounds","x1","x2","y1","half","swap","orig","v2","parseBorderSkipped","edge","borderSkipped","horizontal","parseBorderWidth","maxW","maxH","boundingRects","bounds","border","outer","inner","skipX","skipY","rectangle","element_rectangle","rects","fillRect","Arc","Line","Point","Rectangle","resolve$1","computeMinSampleSize","pixels","prev","curr","isHorizontal","ticks","getTicks","getPixelForTick","computeFitCategoryTraits","ruler","thickness","barThickness","stackCount","categoryPercentage","barPercentage","chunk","computeFlexCategoryTraits","next","percent","end","hover","mode","offset","gridLines","offsetGridLines","controller_bar","stack","bar","_ruler","getRuler","_resolveElementOptions","_xScale","_yScale","datasetLabel","label","labels","_updateElementGeometry","vscale","getBasePixel","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","center","_getStacks","last","stacked","stacks","isDatasetVisible","getStackCount","getStackIndex","getPixelForValue","imeta","ivalue","getRightValue","minBarLength","controller","range","stackIndex","maxBarThickness","Infinity","dataIndex","valueOrDefault$3","resolve$2","position","tooltips","callbacks","title","dataPoint","xLabel","yLabel","controller_bubble","xScale","yScale","dsIndex","getPixelForDecimal","NaN","_options","resolve$3","valueOrDefault$4","animateRotate","animateScale","legendCallback","text","join","legend","generateLabels","ds","arcOpts","bw","onClick","legendItem","cutoutPercentage","circumference","tooltipItem","dataLabel","controller_doughnut","getRingIndex","ringIndex","j","opts","availableWidth","availableHeight","minSize","arcs","chartWeight","_getRingWeight","contains0","contains90","contains180","contains270","cutout","getMaxBorderWidth","radiusLength","_getVisibleDatasetWeightTotal","offsetX","offsetY","total","calculateTotal","_getRingWeightOffset","animationOpts","centerX","centerY","calculateCircumference","hoverWidth","ringWeightOffset","dataSetIndex","axis","controller_horizontalBar","valueOrDefault$5","resolve$4","isPointInArea","lineEnabled","showLine","controller_line","lineTension","_scale","_resolveLineOptions","updateBezierControlPoints","lineModel","_resolvePointOptions","calculatePointY","ELEMENT_OPTIONS","elementOptions","dsMeta","sumPos","sumNeg","stackedRightValue","rightValue","controlPoints","capControlPoint","pt","filter","cubicInterpolationMode","splineCurveMonotone","splineCurve","nextItem","halfBorderWidth","resolve$5","angleLines","display","circular","pointLabels","beginAtZero","controller_polarArea","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getDistanceFromCenterForValue","resetRadius","doughnut","controller_pie","valueOrDefault$6","resolve$6","controller_radar","pointPosition","getPointPositionForValue","controller_scatter","controllers","bubble","horizontalBar","polarArea","pie","radar","scatter","getRelativePosition","native","parseVisibleItems","handler","jlen","getIntersectItems","getNearestItems","intersect","distanceMetric","minDistance","POSITIVE_INFINITY","nearestItems","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","indexMode","items","core_interaction","modes","single","x-axis","nearest","intersectsItem","filterByPosition","where","sortByWeight","_tmpIndex_","sort","findMaxPadding","boxes","box","getPadding","boxPadding","addSizeByPosition","layout","core_layouts","addBox","fullWidth","removeBox","layoutItem","configure","props","layoutOptions","leftPadding","rightPadding","topPadding","bottomPadding","leftBoxes","rightBoxes","topBoxes","bottomBoxes","chartAreaBoxes","maxPadding","verticalBoxes","horizontalBoxes","outerBoxes","chartWidth","chartHeight","chartAreaWidth","verticalBoxWidth","maxChartAreaWidth","maxChartAreaHeight","outerBoxSizes","minBoxSizes","getMinimumBoxSize","fitBox","finalFitVerticalBox","leftPaddingAddition","topPaddingAddition","newMaxChartAreaHeight","newMaxChartAreaWidth","placeBox","minBoxSize","findNextWhere","minBox","scaleMargin","platform_basic","acquireContext","getContext","platform_dom","platform_dom$1","freeze","default","getCjsExportFromNamespace","stylesheet","EXPANDO_KEY","CSS_PREFIX","CSS_SIZE_MONITOR","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","property","getStyle","initCanvas","config","renderHeight","getAttribute","renderWidth","initial","displayWidth","aspectRatio","displayHeight","supportsEventListenerOptions","supports","addEventListener","eventListenerOptions","passive","addListener","node","removeListener","removeEventListener","createEvent","nativeEvent","fromNativeEvent","event","pos","throttled","ticking","createDiv","cls","el","document","createElement","className","createResizer","maxSize","resizer","expand","shrink","appendChild","_reset","scrollLeft","scrollTop","onScroll","bind","watchForRender","expando","proxy","renderProxy","animationName","reflow","offsetParent","classList","add","unwatchForRender","remove","addResizeListener","container","maintainAspectRatio","parentNode","clientWidth","insertBefore","firstChild","removeResizeListener","removeChild","injectCSS","platform","css","_style","setAttribute","getElementsByTagName","createTextNode","platform_dom$2","disableCSSInjection","_enabled","_ensureLoaded","_loaded","getElementById","releaseContext","removeAttribute","proxies","addEvent","removeEvent","implementation","plugins","core_plugins","_plugins","_cacheId","register","plugin","unregister","idx","getAll","notify","hook","descriptor","params","descriptors","cache","$plugins","_invalidate","core_scaleService","constructors","registerScaleType","scaleConstructor","scaleDefaults","getScaleConstructor","getScaleDefaults","updateScaleDefaults","additions","addScalesToLayout","valueOrDefault$7","enabled","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","activeElement","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","eventPosition","nearestElement","d","distanceBetweenPoints","tp","pushOrConcat","toPush","splitNewlines","String","split","createTooltipItem","indexScale","valueScale","getLabelForIndex","getBaseModel","tooltipOpts","xAlign","yAlign","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","opacity","legendColorBackground","getTooltipSize","tooltip","body","combinedBodyLength","reduce","bodyItem","before","lines","after","titleLineCount","footerLineCount","widthPadding","maxLineWidth","measureText","fontString","determineAlignment","lf","rf","olf","orf","yf","midX","midY","getBackgroundPoint","alignment","paddingAndSize","radiusAndPadding","getAlignedX","align","getBeforeAfterBodyLines","exports$3","_lastActive","getTitle","getBeforeBody","getBody","bodyItems","getAfterBody","getFooter","changed","existingModel","active","_active","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","dataPoints","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","textAlign","textBaseline","fillText","drawBody","textColor","drawColorBoxes","xLinePadding","colorX","fillLineOfText","strokeRect","drawFooter","drawBackground","quadraticCurveTo","hasTooltipContent","globalAlpha","handleEvent","getElementsAtEventForMode","positioners_1","core_tooltip","valueOrDefault$8","mergeScaleConfig","slen","mergeConfig","initConfig","updateConfig","newOptions","ensureScalesHaveIDs","buildOrUpdateScales","positionIsHorizontal","events","onHover","animationDuration","responsive","responsiveAnimationDuration","Chart","construct","_bufferedRender","instances","retinaScale","devicePixelRatio","bindEvents","resize","initToolTip","stop","silent","newWidth","getMaximumWidth","newHeight","getMaximumHeight","newSize","onResize","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","updated","dtype","dposition","isDefault","scaleType","scaleClass","mergeTicksOptions","hasUpdated","buildOrUpdateControllers","newControllers","destroyDatasetMeta","ControllerClass","Error","resetElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","updateDataset","animationOptions","animationObject","easingFunction","stepDecimal","drawDatasets","_drawTooltip","drawDataset","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","generateLegend","unbindEvents","toBase64Image","toDataURL","_chartInstance","_listeners","eventHandler","updateHoverStyle","bufferedRequest","hoverOptions","core_controller","Controller","types","configMerge","scaleMerge","core_helpers","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","defaultView","_getParentNode","constrainedNode","getComputedStyle","constrainedContainer","hasCNode","hasCContainer","infinity","collection","filterCallback","filtered","arrayToSearch","startIndex","currentItem","findPreviousWhere","almostEquals","almostWhole","rounded","NEGATIVE_INFINITY","sign","log10","exponent","log","LOG10E","powerOf10","isPowerOf10","toRadians","toDegrees","radians","_decimalPlaces","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","aliasPixel","pixelWidth","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","loop","niceNum","niceFraction","fraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","setTimeout","evt","originalEvent","srcElement","boundingRect","getBoundingClientRect","touches","clientX","clientY","paddingLeft","paddingTop","paddingRight","paddingBottom","getConstraintWidth","getConstraintHeight","_calculatePadding","parentDimension","parent","host","cw","clientHeight","ch","currentStyle","getPropertyValue","forceRatio","pixelRatio","pixelSize","longestText","arrayOfThings","gc","garbageCollect","longest","thing","nestedThing","gcLen","textWidth","numberOfLabelLines","numberOfLines","color","CanvasGradient","colorValue","CanvasPattern","abstract","DateAdapter","formats","parse","format","diff","startOf","endOf","_create","override","members","_date","core_adapters","core_ticks","formatters","tickValue","logDelta","tickString","maxTick","logTick","toExponential","numDecimal","toFixed","logarithmic","remain","valueOrDefault$9","labelsFromTicks","getPixelForGridLine","lineValue","computeTextSize","tick","drawBorder","drawOnChartArea","drawTicks","tickMarkLength","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","minor","major","core_scale","_ticks","beforeUpdate","maxWidth","maxHeight","margins","_maxLabelLines","longestLabelWidth","longestTextCache","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","beforeTickToLabelConversion","convertTicksToLabels","afterTickToLabelConversion","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","afterUpdate","tickOpts","userCallback","tickFont","labelRotation","cosRotation","sinRotation","originalLabelWidth","labelWidth","tickWidth","angleRadians","scaleLabelOpts","gridLineOpts","_isVisible","parseFont","isFullWidth","scaleLabelFont","scaleLabelPadding","deltaHeight","largestTextWidth","tallestLabelHeightInLines","lineSpace","tickPadding","labelHeight","firstLabelWidth","lastLabelWidth","offsetLeft","offsetRight","handleMargins","rawValue","getValueForPixel","innerWidth","finalVal","innerHeight","decimal","valueOffset","getBaseValue","_autoSkip","optionTicks","tickCount","skipRatio","maxTicks","maxTicksLimit","ticksLength","_tickSize","axisLength","PaddingBottom","rot","borderValue","tickStart","tickEnd","optionMajorTicks","isRotated","isMirrored","tickFontColor","fontColor","majorTickFontColor","majorTickFont","tl","scaleLabelFontColor","labelRotationRadians","itemsToDraw","axisWidth","alignPixel","lineColor","tx1","ty1","tx2","ty2","labelX","labelY","textOffset","zeroLineIndex","labelYOffset","labelXOffset","glWidth","glColor","glBorderDash","glBorderDashOffset","itemToDraw","translate","scaleLabelX","scaleLabelY","halfLineHeight","isLeft","firstLineWidth","lastLineWidth","defaultConfig","scale_category","getLabels","xLabels","yLabels","minIndex","maxIndex","valueCategory","offsetAmt","valueWidth","widthOffset","valueHeight","heightOffset","horz","valueDimension","_defaults","generateTicks","generationOptions","dataRange","factor","niceMin","niceMax","numSpaces","MIN_SPACING","stepSize","unit","maxNumSpaces","precision","rmin","rmax","spacing","ceil","scale_linearbase","handleTickRangeOptions","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","getTickLimit","_computeTickLimit","handleDirectionalChanges","numericGeneratorOptions","fixedStepSize","ticksAsNumbers","defaultConfig$1","scale_linear","DEFAULT_MIN","DEFAULT_MAX","IDMatches","hasStacks","valuesPerStack","positiveValues","negativeValues","relativePoints","valuesForType","minVal","maxVal","innerDimension","_defaults$1","valueOrDefault$a","generateTicks$1","exp","significand","tickVal","endExp","endSignificand","minNotZero","lastTick","defaultConfig$2","nonNegativeOrDefault","scale_logarithmic","tickValues","_getFirstTickValue","firstTickValue","_defaults$2","valueOrDefault$b","valueAtIndexOrDefault$1","resolve$7","defaultConfig$3","animate","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getValueCount","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","textSize","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","drawingArea","getIndexAngle","hLimits","vLimits","setReductions","getTextAlignForAngle","adjustPointPositionForLabelHeight","drawPointLabels","angleLineOpts","pointLabelOpts","tickBackdropHeight","outerDistance","outerPosition","extra","pointLabelPosition","pointLabelFontColor","drawRadiusLine","numberOrZero","param","scale_radialLinear","setCenterPoint","largestPossibleRadius","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","angleMultiplier","startAngleRadians","scalingFactor","distanceFromCenter","thisAngle","getBasePosition","yCenterOffset","_defaults$3","valueOrDefault$c","MIN_INTEGER","MIN_SAFE_INTEGER","MAX_INTEGER","MAX_SAFE_INTEGER","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","arrayUnique","hash","out","buildLookupTable","timestamps","distribution","time","table","lookup","mid","i0","i1","lo","interpolate$1","skey","tkey","span","toTimestamp","input","adapter","_adapter","parser","determineStepSize","capacity","interval","milliseconds","determineUnitForAutoTicks","minUnit","determineUnitForFormatting","determineMajorUnit","generate","timeOpts","unitStepSize","weekday","isoWeekday","majorTicksEnabled","first","computeOffsets","ticksFromTimestamps","majorUnit","defaultConfig$4","adapters","displayFormat","displayFormats","scale_time","date","warn","timestamp","dataLabels","_horizontal","_table","_timestamps","getLabelCapacity","_unit","_majorUnit","_offsets","tooltipFormat","datetime","tickFormatFunction","minorFormat","majorFormat","majorTime","majorTickOpts","formatter","getPixelForOffset","isReverse","getLabelWidth","ticksOpts","tickLabelWidth","tickFontSize","exampleTime","exampleLabel","_defaults$4","category","radialLinear","FORMATS","_id","valueOf","amount","as","filler","propagate","mappers","visible","boundary","decodeFill","computeBoundary","scaleBottom","scaleTop","scaleZero","resolveTarget","visited","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","doFill","mapper","p0","p1","d0","d1","plugin_filler","afterDatasetsUpdate","$filler","beforeDatasetDraw","noop$1","valueOrDefault$d","getBoxWidth","labelOpts","usePointStyle","boxWidth","ci","onLeave","lineDash","Legend","legendHitBoxes","_hoveredItem","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","totalWidth","currentColWidth","currentColHeight","itemHeight","itemWidth","lineDefault","legendWidth","cursor","drawLegendBox","SQRT2","halfFontSize","xLeft","yMiddle","_getLegendItemAt","hitBox","lh","hoveredItem","createNewLegendAndAttach","legendOpts","plugin_legend","_element","beforeInit","afterEvent","noop$2","Title","lineCount","fontOpts","titleX","titleY","createNewTitleBlockAndAttach","titleOpts","titleBlock","plugin_title","_adapters","Animation","animationService","Interaction","layouts","Scale","scaleService","Ticks","Tooltip","src","pluginService","PluginBase","canvasHelpers","layoutService","LinearScaleBase","klass","cfg","toLowerCase","_vm","_h","$createElement","_c","_self","staticClass","attrs","sm","md","lg","staticStyle","margin-bottom","no-body","icon","_v","aria-valuemax","aria-valuemin","aria-valuenow","role","xs","chartId","variant","slot","disabled","no-caret","staticRenderFns","dataHandler","newData","oldData","$data","newDatasetLabels","oldDatasetLabels","oldLabels","newLabels","oldDatasetKeys","newDatasetKeys","deletionKeys","attribute","deletionKey","$emit","renderChart","chartData","generateChart","chartType","styles","class","cssClasses","ref","methods","addPlugin","Chart_default","$refs","beforeDestroy","CardLine1ChartExample_render","CardLine1ChartExample_staticRenderFns","CardLine1ChartExamplevue_type_script_lang_js_","extends","mounted","brandPrimary","datasets1","dashboard_CardLine1ChartExamplevue_type_script_lang_js_","component","componentNormalizer","CardLine1ChartExample","homevue_type_script_lang_js_","page","content","app_config","description","components","Layout","main","computed","objectSpread","vuex_esm","loggedUser","state","currentUser","user","views_homevue_type_script_lang_js_","home_component","__webpack_exports__","_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CardLine1ChartExample_vue_vue_type_style_index_0_id_d868d9fe_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CardLine1ChartExample_vue_vue_type_style_index_0_id_d868d9fe_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default"],"mappings":"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","file":"js/chunk-3241e63a.125071d9.js","sourcesContent":["/*!\n * Chart.js v2.8.0\n * https://www.chartjs.org\n * (c) 2019 Chart.js Contributors\n * Released under the MIT License\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(function() { try { return require('moment'); } catch(e) { } }()) :\ntypeof define === 'function' && define.amd ? define(['require'], function(require) { return factory(function() { try { return require('moment'); } catch(e) { } }()); }) :\n(global.Chart = factory(global.moment));\n}(this, (function (moment) { 'use strict';\n\nmoment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;\n\n/* MIT license */\n\nvar conversions = {\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\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\nvar colorConvert = convert;\n\nvar colorName = {\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};\n\n/* MIT license */\n\n\nvar colorString = {\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,4})$/i,\n hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/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 hexAlpha = \"\";\n if (match) {\n match = match[1];\n hexAlpha = match[3];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(hex)) {\n hexAlpha = match[2];\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 if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\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 = colorName[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(rgba, a) {\n var a = (a !== undefined && rgba.length === 3) ? a : rgba[3];\n return \"#\" + hexDouble(rgba[0]) \n + hexDouble(rgba[1])\n + hexDouble(rgba[2])\n + (\n (a >= 0 && a < 1)\n ? hexDouble(Math.round(a * 255))\n : \"\"\n );\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 colorName) {\n reverseNames[colorName[name]] = name;\n}\n\n/* MIT license */\n\n\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 = colorString.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = colorString.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = colorString.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 colorString.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn colorString.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn colorString.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn colorString.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn colorString.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn colorString.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn colorString.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn colorString.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] = colorConvert[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\nvar chartjsColor = Color;\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 (including typed arrays), else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {boolean}\n\t * @function\n\t */\n\tisArray: function(value) {\n\t\tif (Array.isArray && Array.isArray(value)) {\n\t\t\treturn true;\n\t\t}\n\t\tvar type = Object.prototype.toString.call(value);\n\t\tif (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\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 true if `value` is a finite number, else returns false\n\t * @param {*} value - The value to test.\n\t * @returns {boolean}\n\t */\n\tisFinite: function(value) {\n\t\treturn (typeof value === 'number' || value instanceof Number) && isFinite(value);\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 https://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): also used by mergeConfig and mergeScaleConfig 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|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|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\nvar helpers_core = 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\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\nvar helpers_easing = {\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_core.easingEffects = effects;\n\nvar PI = Math.PI;\nvar RAD_PER_DEG = PI / 180;\nvar DOUBLE_PI = PI * 2;\nvar HALF_PI = PI / 2;\nvar QUARTER_PI = PI / 4;\nvar TWO_THIRDS_PI = PI * 2 / 3;\n\n/**\n * @namespace Chart.helpers.canvas\n */\nvar exports$1 = {\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 r = Math.min(radius, height / 2, width / 2);\n\t\t\tvar left = x + r;\n\t\t\tvar top = y + r;\n\t\t\tvar right = x + width - r;\n\t\t\tvar bottom = y + height - r;\n\n\t\t\tctx.moveTo(x, top);\n\t\t\tif (left < right && top < bottom) {\n\t\t\t\tctx.arc(left, top, r, -PI, -HALF_PI);\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, 0);\n\t\t\t\tctx.arc(right, bottom, r, 0, HALF_PI);\n\t\t\t\tctx.arc(left, bottom, r, HALF_PI, PI);\n\t\t\t} else if (left < right) {\n\t\t\t\tctx.moveTo(left, y);\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, HALF_PI);\n\t\t\t\tctx.arc(left, top, r, HALF_PI, PI + HALF_PI);\n\t\t\t} else if (top < bottom) {\n\t\t\t\tctx.arc(left, top, r, -PI, 0);\n\t\t\t\tctx.arc(left, bottom, r, 0, PI);\n\t\t\t} else {\n\t\t\t\tctx.arc(left, top, r, -PI, PI);\n\t\t\t}\n\t\t\tctx.closePath();\n\t\t\tctx.moveTo(x, 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, rotation) {\n\t\tvar type, xOffset, yOffset, size, cornerRadius;\n\t\tvar rad = (rotation || 0) * RAD_PER_DEG;\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\tctx.beginPath();\n\n\t\tswitch (style) {\n\t\t// Default includes circle\n\t\tdefault:\n\t\t\tctx.arc(x, y, radius, 0, DOUBLE_PI);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'triangle':\n\t\t\tctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n\t\t\trad += TWO_THIRDS_PI;\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n\t\t\trad += TWO_THIRDS_PI;\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'rectRounded':\n\t\t\t// NOTE: the rounded rect implementation changed to use `arc` instead of\n\t\t\t// `quadraticCurveTo` since it generates better results when rect is\n\t\t\t// almost a circle. 0.516 (instead of 0.5) produces results with visually\n\t\t\t// closer proportion to the previous impl and it is inscribed in the\n\t\t\t// circle with `radius`. For more details, see the following PRs:\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5597\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5858\n\t\t\tcornerRadius = radius * 0.516;\n\t\t\tsize = radius - cornerRadius;\n\t\t\txOffset = Math.cos(rad + QUARTER_PI) * size;\n\t\t\tyOffset = Math.sin(rad + QUARTER_PI) * size;\n\t\t\tctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n\t\t\tctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n\t\t\tctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n\t\t\tctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'rect':\n\t\t\tif (!rotation) {\n\t\t\t\tsize = Math.SQRT1_2 * radius;\n\t\t\t\tctx.rect(x - size, y - size, 2 * size, 2 * size);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\trad += QUARTER_PI;\n\t\t\t/* falls through */\n\t\tcase 'rectRot':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'crossRot':\n\t\t\trad += QUARTER_PI;\n\t\t\t/* falls through */\n\t\tcase 'cross':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * 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 + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\tbreak;\n\t\tcase 'star':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * 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 + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\trad += QUARTER_PI;\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * 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 + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\tbreak;\n\t\tcase 'line':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tbreak;\n\t\tcase 'dash':\n\t\t\tctx.moveTo(x, y);\n\t\t\tctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n\t\t\tbreak;\n\t\t}\n\n\t\tctx.fill();\n\t\tctx.stroke();\n\t},\n\n\t/**\n\t * Returns true if the point is inside the rectangle\n\t * @param {object} point - The point to test\n\t * @param {object} area - The rectangle\n\t * @returns {boolean}\n\t * @private\n\t */\n\t_isPointInArea: function(point, area) {\n\t\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n\n\t\treturn point.x > area.left - epsilon && point.x < area.right + epsilon &&\n\t\t\tpoint.y > area.top - epsilon && point.y < area.bottom + epsilon;\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\tvar stepped = target.steppedLine;\n\t\tif (stepped) {\n\t\t\tif (stepped === 'middle') {\n\t\t\t\tvar midpoint = (previous.x + target.x) / 2.0;\n\t\t\t\tctx.lineTo(midpoint, flip ? target.y : previous.y);\n\t\t\t\tctx.lineTo(midpoint, flip ? previous.y : target.y);\n\t\t\t} else if ((stepped === 'after' && !flip) || (stepped !== '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\nvar helpers_canvas = exports$1;\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_core.clear = exports$1.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_core.drawRoundedRectangle = function(ctx) {\n\tctx.beginPath();\n\texports$1.roundedRect.apply(exports$1, arguments);\n};\n\nvar defaults = {\n\t/**\n\t * @private\n\t */\n\t_set: function(scope, values) {\n\t\treturn helpers_core.merge(this[scope] || (this[scope] = {}), values);\n\t}\n};\n\ndefaults._set('global', {\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\tdefaultLineHeight: 1.2,\n\tshowLines: true\n});\n\nvar core_defaults = defaults;\n\nvar valueOrDefault = helpers_core.valueOrDefault;\n\n/**\n * Converts the given font object into a CSS font string.\n * @param {object} font - A font object.\n * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\nfunction toFontString(font) {\n\tif (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) {\n\t\treturn null;\n\t}\n\n\treturn (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\nvar helpers_options = {\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_core.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 * Parses font options and returns the font object.\n\t * @param {object} options - A object that contains font options to be parsed.\n\t * @return {object} The font object.\n\t * @todo Support font.* options and renamed to toFont().\n\t * @private\n\t */\n\t_parseFont: function(options) {\n\t\tvar globalDefaults = core_defaults.global;\n\t\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\n\t\tvar font = {\n\t\t\tfamily: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),\n\t\t\tlineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),\n\t\t\tsize: size,\n\t\t\tstyle: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),\n\t\t\tweight: null,\n\t\t\tstring: ''\n\t\t};\n\n\t\tfont.string = toFontString(font);\n\t\treturn font;\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_core.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\nvar helpers$1 = helpers_core;\nvar easing = helpers_easing;\nvar canvas = helpers_canvas;\nvar options = helpers_options;\nhelpers$1.easing = easing;\nhelpers$1.canvas = canvas;\nhelpers$1.options = options;\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 = chartjsColor(origin);\n\t\t\t\tif (c0.valid) {\n\t\t\t\t\tc1 = chartjsColor(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 (helpers$1.isFinite(origin) && helpers$1.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$1.extend(this, configuration);\n\tthis.initialize.apply(this, arguments);\n};\n\nhelpers$1.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$1.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$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y);\n\t}\n});\n\nElement.extend = helpers$1.inherits;\n\nvar core_element = Element;\n\nvar exports$2 = core_element.extend({\n\tchart: null, // the animation associated chart instance\n\tcurrentStep: 0, // the current animation step\n\tnumSteps: 60, // default number of steps\n\teasing: '', // the easing to use for this animation\n\trender: null, // render function used by the animation service\n\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\n});\n\nvar core_animation = exports$2;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.Animation instead\n * @prop Chart.Animation#animationObject\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports$2.prototype, 'animationObject', {\n\tget: function() {\n\t\treturn this;\n\t}\n});\n\n/**\n * Provided for backward compatibility, use Chart.Animation#chart instead\n * @prop Chart.Animation#chartInstance\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports$2.prototype, 'chartInstance', {\n\tget: function() {\n\t\treturn this.chart;\n\t},\n\tset: function(value) {\n\t\tthis.chart = value;\n\t}\n});\n\ncore_defaults._set('global', {\n\tanimation: {\n\t\tduration: 1000,\n\t\teasing: 'easeOutQuart',\n\t\tonProgress: helpers$1.noop,\n\t\tonComplete: helpers$1.noop\n\t}\n});\n\nvar core_animations = {\n\tanimations: [],\n\trequest: null,\n\n\t/**\n\t * @param {Chart} chart - The chart to animate.\n\t * @param {Chart.Animation} animation - The animation that we will animate.\n\t * @param {number} duration - The animation duration in ms.\n\t * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\n\t */\n\taddAnimation: function(chart, animation, duration, lazy) {\n\t\tvar animations = this.animations;\n\t\tvar i, ilen;\n\n\t\tanimation.chart = chart;\n\t\tanimation.startTime = Date.now();\n\t\tanimation.duration = duration;\n\n\t\tif (!lazy) {\n\t\t\tchart.animating = true;\n\t\t}\n\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\n\t\t\tif (animations[i].chart === chart) {\n\t\t\t\tanimations[i] = animation;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tanimations.push(animation);\n\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\n\t\tif (animations.length === 1) {\n\t\t\tthis.requestAnimationFrame();\n\t\t}\n\t},\n\n\tcancelAnimation: function(chart) {\n\t\tvar index = helpers$1.findIndex(this.animations, function(animation) {\n\t\t\treturn animation.chart === chart;\n\t\t});\n\n\t\tif (index !== -1) {\n\t\t\tthis.animations.splice(index, 1);\n\t\t\tchart.animating = false;\n\t\t}\n\t},\n\n\trequestAnimationFrame: function() {\n\t\tvar me = this;\n\t\tif (me.request === null) {\n\t\t\t// Skip animation frame requests until the active one is executed.\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\n\t\t\t// and 'mouseout' events will trigger multiple renders.\n\t\t\tme.request = helpers$1.requestAnimFrame.call(window, function() {\n\t\t\t\tme.request = null;\n\t\t\t\tme.startDigest();\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tstartDigest: function() {\n\t\tvar me = this;\n\n\t\tme.advance();\n\n\t\t// Do we have more stuff to animate?\n\t\tif (me.animations.length > 0) {\n\t\t\tme.requestAnimationFrame();\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tadvance: function() {\n\t\tvar animations = this.animations;\n\t\tvar animation, chart, numSteps, nextStep;\n\t\tvar i = 0;\n\n\t\t// 1 animation per chart, so we are looping charts here\n\t\twhile (i < animations.length) {\n\t\t\tanimation = animations[i];\n\t\t\tchart = animation.chart;\n\t\t\tnumSteps = animation.numSteps;\n\n\t\t\t// Make sure that currentStep starts at 1\n\t\t\t// https://github.com/chartjs/Chart.js/issues/6104\n\t\t\tnextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;\n\t\t\tanimation.currentStep = Math.min(nextStep, numSteps);\n\n\t\t\thelpers$1.callback(animation.render, [chart, animation], chart);\n\t\t\thelpers$1.callback(animation.onAnimationProgress, [animation], chart);\n\n\t\t\tif (animation.currentStep >= numSteps) {\n\t\t\t\thelpers$1.callback(animation.onAnimationComplete, [animation], chart);\n\t\t\t\tchart.animating = false;\n\t\t\t\tanimations.splice(i, 1);\n\t\t\t} else {\n\t\t\t\t++i;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar resolve = helpers$1.options.resolve;\n\nvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\n/**\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\n */\nfunction listenArrayEvents(array, listener) {\n\tif (array._chartjs) {\n\t\tarray._chartjs.listeners.push(listener);\n\t\treturn;\n\t}\n\n\tObject.defineProperty(array, '_chartjs', {\n\t\tconfigurable: true,\n\t\tenumerable: false,\n\t\tvalue: {\n\t\t\tlisteners: [listener]\n\t\t}\n\t});\n\n\tarrayEvents.forEach(function(key) {\n\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\n\t\tvar base = array[key];\n\n\t\tObject.defineProperty(array, key, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: function() {\n\t\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\t\t\tvar res = base.apply(this, args);\n\n\t\t\t\thelpers$1.each(array._chartjs.listeners, function(object) {\n\t\t\t\t\tif (typeof object[method] === 'function') {\n\t\t\t\t\t\tobject[method].apply(object, args);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn res;\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Removes the given array event listener and cleanup extra attached properties (such as\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n */\nfunction unlistenArrayEvents(array, listener) {\n\tvar stub = array._chartjs;\n\tif (!stub) {\n\t\treturn;\n\t}\n\n\tvar listeners = stub.listeners;\n\tvar index = listeners.indexOf(listener);\n\tif (index !== -1) {\n\t\tlisteners.splice(index, 1);\n\t}\n\n\tif (listeners.length > 0) {\n\t\treturn;\n\t}\n\n\tarrayEvents.forEach(function(key) {\n\t\tdelete array[key];\n\t});\n\n\tdelete array._chartjs;\n}\n\n// Base class for all dataset controllers (line, bar, etc)\nvar DatasetController = function(chart, datasetIndex) {\n\tthis.initialize(chart, datasetIndex);\n};\n\nhelpers$1.extend(DatasetController.prototype, {\n\n\t/**\n\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\n\t * @type {Chart.core.element}\n\t */\n\tdatasetElementType: null,\n\n\t/**\n\t * Element type used to generate a meta data (e.g. Chart.element.Point).\n\t * @type {Chart.core.element}\n\t */\n\tdataElementType: null,\n\n\tinitialize: function(chart, datasetIndex) {\n\t\tvar me = this;\n\t\tme.chart = chart;\n\t\tme.index = datasetIndex;\n\t\tme.linkScales();\n\t\tme.addElements();\n\t},\n\n\tupdateIndex: function(datasetIndex) {\n\t\tthis.index = datasetIndex;\n\t},\n\n\tlinkScales: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar dataset = me.getDataset();\n\n\t\tif (meta.xAxisID === null || !(meta.xAxisID in me.chart.scales)) {\n\t\t\tmeta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id;\n\t\t}\n\t\tif (meta.yAxisID === null || !(meta.yAxisID in me.chart.scales)) {\n\t\t\tmeta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id;\n\t\t}\n\t},\n\n\tgetDataset: function() {\n\t\treturn this.chart.data.datasets[this.index];\n\t},\n\n\tgetMeta: function() {\n\t\treturn this.chart.getDatasetMeta(this.index);\n\t},\n\n\tgetScaleForId: function(scaleID) {\n\t\treturn this.chart.scales[scaleID];\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getValueScaleId: function() {\n\t\treturn this.getMeta().yAxisID;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScaleId: function() {\n\t\treturn this.getMeta().xAxisID;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getValueScale: function() {\n\t\treturn this.getScaleForId(this._getValueScaleId());\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScale: function() {\n\t\treturn this.getScaleForId(this._getIndexScaleId());\n\t},\n\n\treset: function() {\n\t\tthis.update(true);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tdestroy: function() {\n\t\tif (this._data) {\n\t\t\tunlistenArrayEvents(this._data, this);\n\t\t}\n\t},\n\n\tcreateMetaDataset: function() {\n\t\tvar me = this;\n\t\tvar type = me.datasetElementType;\n\t\treturn type && new type({\n\t\t\t_chart: me.chart,\n\t\t\t_datasetIndex: me.index\n\t\t});\n\t},\n\n\tcreateMetaData: function(index) {\n\t\tvar me = this;\n\t\tvar type = me.dataElementType;\n\t\treturn type && new type({\n\t\t\t_chart: me.chart,\n\t\t\t_datasetIndex: me.index,\n\t\t\t_index: index\n\t\t});\n\t},\n\n\taddElements: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar data = me.getDataset().data || [];\n\t\tvar metaData = meta.data;\n\t\tvar i, ilen;\n\n\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\n\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\n\t\t}\n\n\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\n\t},\n\n\taddElementAndReset: function(index) {\n\t\tvar element = this.createMetaData(index);\n\t\tthis.getMeta().data.splice(index, 0, element);\n\t\tthis.updateElement(element, index, true);\n\t},\n\n\tbuildOrUpdateElements: function() {\n\t\tvar me = this;\n\t\tvar dataset = me.getDataset();\n\t\tvar data = dataset.data || (dataset.data = []);\n\n\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\n\t\t// real-time charts), we need to monitor these data modifications and synchronize\n\t\t// the internal meta data accordingly.\n\t\tif (me._data !== data) {\n\t\t\tif (me._data) {\n\t\t\t\t// This case happens when the user replaced the data array instance.\n\t\t\t\tunlistenArrayEvents(me._data, me);\n\t\t\t}\n\n\t\t\tif (data && Object.isExtensible(data)) {\n\t\t\t\tlistenArrayEvents(data, me);\n\t\t\t}\n\t\t\tme._data = data;\n\t\t}\n\n\t\t// Re-sync meta data in case the user replaced the data array or if we missed\n\t\t// any updates and so make sure that we handle number of datapoints changing.\n\t\tme.resyncElements();\n\t},\n\n\tupdate: helpers$1.noop,\n\n\ttransition: function(easingValue) {\n\t\tvar meta = this.getMeta();\n\t\tvar elements = meta.data || [];\n\t\tvar ilen = elements.length;\n\t\tvar i = 0;\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\telements[i].transition(easingValue);\n\t\t}\n\n\t\tif (meta.dataset) {\n\t\t\tmeta.dataset.transition(easingValue);\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar meta = this.getMeta();\n\t\tvar elements = meta.data || [];\n\t\tvar ilen = elements.length;\n\t\tvar i = 0;\n\n\t\tif (meta.dataset) {\n\t\t\tmeta.dataset.draw();\n\t\t}\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\telements[i].draw();\n\t\t}\n\t},\n\n\tremoveHoverStyle: function(element) {\n\t\thelpers$1.merge(element._model, element.$previousStyle || {});\n\t\tdelete element.$previousStyle;\n\t},\n\n\tsetHoverStyle: function(element) {\n\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\tvar index = element._index;\n\t\tvar custom = element.custom || {};\n\t\tvar model = element._model;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\telement.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth\n\t\t};\n\n\t\tmodel.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);\n\t\tmodel.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);\n\t\tmodel.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tresyncElements: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar data = me.getDataset().data;\n\t\tvar numMeta = meta.data.length;\n\t\tvar numData = data.length;\n\n\t\tif (numData < numMeta) {\n\t\t\tmeta.data.splice(numData, numMeta - numData);\n\t\t} else if (numData > numMeta) {\n\t\t\tme.insertElements(numMeta, numData - numMeta);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tinsertElements: function(start, count) {\n\t\tfor (var i = 0; i < count; ++i) {\n\t\t\tthis.addElementAndReset(start + i);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataPush: function() {\n\t\tvar count = arguments.length;\n\t\tthis.insertElements(this.getDataset().data.length - count, count);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataPop: function() {\n\t\tthis.getMeta().data.pop();\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataShift: function() {\n\t\tthis.getMeta().data.shift();\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataSplice: function(start, count) {\n\t\tthis.getMeta().data.splice(start, count);\n\t\tthis.insertElements(start, arguments.length - 2);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataUnshift: function() {\n\t\tthis.insertElements(0, arguments.length);\n\t}\n});\n\nDatasetController.extend = helpers$1.inherits;\n\nvar core_datasetController = DatasetController;\n\ncore_defaults._set('global', {\n\telements: {\n\t\tarc: {\n\t\t\tbackgroundColor: core_defaults.global.defaultColor,\n\t\t\tborderColor: '#fff',\n\t\t\tborderWidth: 2,\n\t\t\tborderAlign: 'center'\n\t\t}\n\t}\n});\n\nvar element_arc = core_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$1.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\t\tvar pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0;\n\t\tvar angleMargin;\n\n\t\tctx.save();\n\n\t\tctx.beginPath();\n\t\tctx.arc(vm.x, vm.y, Math.max(vm.outerRadius - pixelMargin, 0), sA, eA);\n\t\tctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);\n\t\tctx.closePath();\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.fill();\n\n\t\tif (vm.borderWidth) {\n\t\t\tif (vm.borderAlign === 'inner') {\n\t\t\t\t// Draw an inner border by cliping the arc and drawing a double-width border\n\t\t\t\t// Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n\t\t\t\tctx.beginPath();\n\t\t\t\tangleMargin = pixelMargin / vm.outerRadius;\n\t\t\t\tctx.arc(vm.x, vm.y, vm.outerRadius, sA - angleMargin, eA + angleMargin);\n\t\t\t\tif (vm.innerRadius > pixelMargin) {\n\t\t\t\t\tangleMargin = pixelMargin / vm.innerRadius;\n\t\t\t\t\tctx.arc(vm.x, vm.y, vm.innerRadius - pixelMargin, eA + angleMargin, sA - angleMargin, true);\n\t\t\t\t} else {\n\t\t\t\t\tctx.arc(vm.x, vm.y, pixelMargin, eA + Math.PI / 2, sA - Math.PI / 2);\n\t\t\t\t}\n\t\t\t\tctx.closePath();\n\t\t\t\tctx.clip();\n\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);\n\t\t\t\tctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);\n\t\t\t\tctx.closePath();\n\n\t\t\t\tctx.lineWidth = vm.borderWidth * 2;\n\t\t\t\tctx.lineJoin = 'round';\n\t\t\t} else {\n\t\t\t\tctx.lineWidth = vm.borderWidth;\n\t\t\t\tctx.lineJoin = 'bevel';\n\t\t\t}\n\n\t\t\tctx.strokeStyle = vm.borderColor;\n\t\t\tctx.stroke();\n\t\t}\n\n\t\tctx.restore();\n\t}\n});\n\nvar valueOrDefault$1 = helpers$1.valueOrDefault;\n\nvar defaultColor = core_defaults.global.defaultColor;\n\ncore_defaults._set('global', {\n\telements: {\n\t\tline: {\n\t\t\ttension: 0.4,\n\t\t\tbackgroundColor: defaultColor,\n\t\t\tborderWidth: 3,\n\t\t\tborderColor: 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\nvar element_line = core_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 globalDefaults = core_defaults.global;\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 = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n\t\tctx.lineWidth = valueOrDefault$1(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$1.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$1.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\nvar valueOrDefault$2 = helpers$1.valueOrDefault;\n\nvar defaultColor$1 = core_defaults.global.defaultColor;\n\ncore_defaults._set('global', {\n\telements: {\n\t\tpoint: {\n\t\t\tradius: 3,\n\t\t\tpointStyle: 'circle',\n\t\t\tbackgroundColor: defaultColor$1,\n\t\t\tborderColor: defaultColor$1,\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.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\n}\n\nfunction yRange(mouseY) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\n}\n\nvar element_point = core_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 ctx = this._chart.ctx;\n\t\tvar pointStyle = vm.pointStyle;\n\t\tvar rotation = vm.rotation;\n\t\tvar radius = vm.radius;\n\t\tvar x = vm.x;\n\t\tvar y = vm.y;\n\t\tvar globalDefaults = core_defaults.global;\n\t\tvar defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow\n\n\t\tif (vm.skip) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clipping for Points.\n\t\tif (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) {\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\n\t\t\tctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth);\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\n\t\t\thelpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\n\t\t}\n\t}\n});\n\nvar defaultColor$2 = core_defaults.global.defaultColor;\n\ncore_defaults._set('global', {\n\telements: {\n\t\trectangle: {\n\t\t\tbackgroundColor: defaultColor$2,\n\t\t\tborderColor: defaultColor$2,\n\t\t\tborderSkipped: 'bottom',\n\t\t\tborderWidth: 0\n\t\t}\n\t}\n});\n\nfunction isVertical(vm) {\n\treturn vm && vm.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(vm) {\n\tvar x1, x2, y1, y2, half;\n\n\tif (isVertical(vm)) {\n\t\thalf = vm.width / 2;\n\t\tx1 = vm.x - half;\n\t\tx2 = vm.x + half;\n\t\ty1 = Math.min(vm.y, vm.base);\n\t\ty2 = Math.max(vm.y, vm.base);\n\t} else {\n\t\thalf = 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 - half;\n\t\ty2 = vm.y + half;\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\nfunction swap(orig, v1, v2) {\n\treturn orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\n\nfunction parseBorderSkipped(vm) {\n\tvar edge = vm.borderSkipped;\n\tvar res = {};\n\n\tif (!edge) {\n\t\treturn res;\n\t}\n\n\tif (vm.horizontal) {\n\t\tif (vm.base > vm.x) {\n\t\t\tedge = swap(edge, 'left', 'right');\n\t\t}\n\t} else if (vm.base < vm.y) {\n\t\tedge = swap(edge, 'bottom', 'top');\n\t}\n\n\tres[edge] = true;\n\treturn res;\n}\n\nfunction parseBorderWidth(vm, maxW, maxH) {\n\tvar value = vm.borderWidth;\n\tvar skip = parseBorderSkipped(vm);\n\tvar t, r, b, l;\n\n\tif (helpers$1.isObject(value)) {\n\t\tt = +value.top || 0;\n\t\tr = +value.right || 0;\n\t\tb = +value.bottom || 0;\n\t\tl = +value.left || 0;\n\t} else {\n\t\tt = r = b = l = +value || 0;\n\t}\n\n\treturn {\n\t\tt: skip.top || (t < 0) ? 0 : t > maxH ? maxH : t,\n\t\tr: skip.right || (r < 0) ? 0 : r > maxW ? maxW : r,\n\t\tb: skip.bottom || (b < 0) ? 0 : b > maxH ? maxH : b,\n\t\tl: skip.left || (l < 0) ? 0 : l > maxW ? maxW : l\n\t};\n}\n\nfunction boundingRects(vm) {\n\tvar bounds = getBarBounds(vm);\n\tvar width = bounds.right - bounds.left;\n\tvar height = bounds.bottom - bounds.top;\n\tvar border = parseBorderWidth(vm, width / 2, height / 2);\n\n\treturn {\n\t\touter: {\n\t\t\tx: bounds.left,\n\t\t\ty: bounds.top,\n\t\t\tw: width,\n\t\t\th: height\n\t\t},\n\t\tinner: {\n\t\t\tx: bounds.left + border.l,\n\t\t\ty: bounds.top + border.t,\n\t\t\tw: width - border.l - border.r,\n\t\t\th: height - border.t - border.b\n\t\t}\n\t};\n}\n\nfunction inRange(vm, x, y) {\n\tvar skipX = x === null;\n\tvar skipY = y === null;\n\tvar bounds = !vm || (skipX && skipY) ? false : getBarBounds(vm);\n\n\treturn bounds\n\t\t&& (skipX || x >= bounds.left && x <= bounds.right)\n\t\t&& (skipY || y >= bounds.top && y <= bounds.bottom);\n}\n\nvar element_rectangle = core_element.extend({\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar rects = boundingRects(vm);\n\t\tvar outer = rects.outer;\n\t\tvar inner = rects.inner;\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.fillRect(outer.x, outer.y, outer.w, outer.h);\n\n\t\tif (outer.w === inner.w && outer.h === inner.h) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.save();\n\t\tctx.beginPath();\n\t\tctx.rect(outer.x, outer.y, outer.w, outer.h);\n\t\tctx.clip();\n\t\tctx.fillStyle = vm.borderColor;\n\t\tctx.rect(inner.x, inner.y, inner.w, inner.h);\n\t\tctx.fill('evenodd');\n\t\tctx.restore();\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\treturn inRange(this._view, mouseX, mouseY);\n\t},\n\n\tinLabelRange: function(mouseX, mouseY) {\n\t\tvar vm = this._view;\n\t\treturn isVertical(vm)\n\t\t\t? inRange(vm, mouseX, null)\n\t\t\t: inRange(vm, null, mouseY);\n\t},\n\n\tinXRange: function(mouseX) {\n\t\treturn inRange(this._view, mouseX, null);\n\t},\n\n\tinYRange: function(mouseY) {\n\t\treturn inRange(this._view, null, mouseY);\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar x, y;\n\t\tif (isVertical(vm)) {\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\n\t\treturn isVertical(vm)\n\t\t\t? vm.width * Math.abs(vm.y - vm.base)\n\t\t\t: vm.height * Math.abs(vm.x - 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\nvar elements = {};\nvar Arc = element_arc;\nvar Line = element_line;\nvar Point = element_point;\nvar Rectangle = element_rectangle;\nelements.Arc = Arc;\nelements.Line = Line;\nelements.Point = Point;\nelements.Rectangle = Rectangle;\n\nvar resolve$1 = helpers$1.options.resolve;\n\ncore_defaults._set('bar', {\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9,\n\t\t\toffset: true,\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\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(scale, pixels) {\n\tvar min = scale.isHorizontal() ? scale.width : scale.height;\n\tvar ticks = scale.getTicks();\n\tvar prev, curr, i, ilen;\n\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\n\t\tmin = Math.min(min, Math.abs(pixels[i] - pixels[i - 1]));\n\t}\n\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\tcurr = scale.getPixelForTick(i);\n\t\tmin = i > 0 ? Math.min(min, curr - prev) : min;\n\t\tprev = curr;\n\t}\n\n\treturn min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options) {\n\tvar thickness = options.barThickness;\n\tvar count = ruler.stackCount;\n\tvar curr = ruler.pixels[index];\n\tvar size, ratio;\n\n\tif (helpers$1.isNullOrUndef(thickness)) {\n\t\tsize = ruler.min * options.categoryPercentage;\n\t\tratio = options.barPercentage;\n\t} else {\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\n\t\tsize = thickness * count;\n\t\tratio = 1;\n\t}\n\n\treturn {\n\t\tchunk: size / count,\n\t\tratio: ratio,\n\t\tstart: curr - (size / 2)\n\t};\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options) {\n\tvar pixels = ruler.pixels;\n\tvar curr = pixels[index];\n\tvar prev = index > 0 ? pixels[index - 1] : null;\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\n\tvar percent = options.categoryPercentage;\n\tvar start, size;\n\n\tif (prev === null) {\n\t\t// first data: its size is double based on the next point or,\n\t\t// if it's also the last data, we use the scale size.\n\t\tprev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n\t}\n\n\tif (next === null) {\n\t\t// last data: its size is also double based on the previous point.\n\t\tnext = curr + curr - prev;\n\t}\n\n\tstart = curr - (curr - Math.min(prev, next)) / 2 * percent;\n\tsize = Math.abs(next - prev) / 2 * percent;\n\n\treturn {\n\t\tchunk: size / ruler.stackCount,\n\t\tratio: options.barPercentage,\n\t\tstart: start\n\t};\n}\n\nvar controller_bar = core_datasetController.extend({\n\n\tdataElementType: elements.Rectangle,\n\n\tinitialize: function() {\n\t\tvar me = this;\n\t\tvar meta;\n\n\t\tcore_datasetController.prototype.initialize.apply(me, arguments);\n\n\t\tmeta = me.getMeta();\n\t\tmeta.stack = me.getDataset().stack;\n\t\tmeta.bar = true;\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar rects = me.getMeta().data;\n\t\tvar i, ilen;\n\n\t\tme._ruler = me.getRuler();\n\n\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\n\t\t\tme.updateElement(rects[i], i, reset);\n\t\t}\n\t},\n\n\tupdateElement: function(rectangle, index, reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar dataset = me.getDataset();\n\t\tvar options = me._resolveElementOptions(rectangle, index);\n\n\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\n\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\n\t\trectangle._datasetIndex = me.index;\n\t\trectangle._index = index;\n\t\trectangle._model = {\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderSkipped: options.borderSkipped,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\tdatasetLabel: dataset.label,\n\t\t\tlabel: me.chart.data.labels[index]\n\t\t};\n\n\t\tme._updateElementGeometry(rectangle, index, reset);\n\n\t\trectangle.pivot();\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_updateElementGeometry: function(rectangle, index, reset) {\n\t\tvar me = this;\n\t\tvar model = rectangle._model;\n\t\tvar vscale = me._getValueScale();\n\t\tvar base = vscale.getBasePixel();\n\t\tvar horizontal = vscale.isHorizontal();\n\t\tvar ruler = me._ruler || me.getRuler();\n\t\tvar vpixels = me.calculateBarValuePixels(me.index, index);\n\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler);\n\n\t\tmodel.horizontal = horizontal;\n\t\tmodel.base = reset ? base : vpixels.base;\n\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\n\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\n\t\tmodel.height = horizontal ? ipixels.size : undefined;\n\t\tmodel.width = horizontal ? undefined : ipixels.size;\n\t},\n\n\t/**\n\t * Returns the stacks based on groups and bar visibility.\n\t * @param {number} [last] - The dataset index\n\t * @returns {string[]} The list of stack IDs\n\t * @private\n\t */\n\t_getStacks: function(last) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar scale = me._getIndexScale();\n\t\tvar stacked = scale.options.stacked;\n\t\tvar ilen = last === undefined ? chart.data.datasets.length : last + 1;\n\t\tvar stacks = [];\n\t\tvar i, meta;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\tif (meta.bar && chart.isDatasetVisible(i) &&\n\t\t\t\t(stacked === false ||\n\t\t\t\t(stacked === true && stacks.indexOf(meta.stack) === -1) ||\n\t\t\t\t(stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) {\n\t\t\t\tstacks.push(meta.stack);\n\t\t\t}\n\t\t}\n\n\t\treturn stacks;\n\t},\n\n\t/**\n\t * Returns the effective number of stacks based on groups and bar visibility.\n\t * @private\n\t */\n\tgetStackCount: function() {\n\t\treturn this._getStacks().length;\n\t},\n\n\t/**\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t * @param {number} [datasetIndex] - The dataset index\n\t * @param {string} [name] - The stack name to find\n\t * @returns {number} The stack index\n\t * @private\n\t */\n\tgetStackIndex: function(datasetIndex, name) {\n\t\tvar stacks = this._getStacks(datasetIndex);\n\t\tvar index = (name !== undefined)\n\t\t\t? stacks.indexOf(name)\n\t\t\t: -1; // indexOf returns -1 if element is not present\n\n\t\treturn (index === -1)\n\t\t\t? stacks.length - 1\n\t\t\t: index;\n\t},\n\n\t/**\n\t * @private\n\t */\n\tgetRuler: function() {\n\t\tvar me = this;\n\t\tvar scale = me._getIndexScale();\n\t\tvar stackCount = me.getStackCount();\n\t\tvar datasetIndex = me.index;\n\t\tvar isHorizontal = scale.isHorizontal();\n\t\tvar start = isHorizontal ? scale.left : scale.top;\n\t\tvar end = start + (isHorizontal ? scale.width : scale.height);\n\t\tvar pixels = [];\n\t\tvar i, ilen, min;\n\n\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\n\t\t\tpixels.push(scale.getPixelForValue(null, i, datasetIndex));\n\t\t}\n\n\t\tmin = helpers$1.isNullOrUndef(scale.options.barThickness)\n\t\t\t? computeMinSampleSize(scale, pixels)\n\t\t\t: -1;\n\n\t\treturn {\n\t\t\tmin: min,\n\t\t\tpixels: pixels,\n\t\t\tstart: start,\n\t\t\tend: end,\n\t\t\tstackCount: stackCount,\n\t\t\tscale: scale\n\t\t};\n\t},\n\n\t/**\n\t * Note: pixel values are not clamped to the scale area.\n\t * @private\n\t */\n\tcalculateBarValuePixels: function(datasetIndex, index) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar meta = me.getMeta();\n\t\tvar scale = me._getValueScale();\n\t\tvar isHorizontal = scale.isHorizontal();\n\t\tvar datasets = chart.data.datasets;\n\t\tvar value = +scale.getRightValue(datasets[datasetIndex].data[index]);\n\t\tvar minBarLength = scale.options.minBarLength;\n\t\tvar stacked = scale.options.stacked;\n\t\tvar stack = meta.stack;\n\t\tvar start = 0;\n\t\tvar i, imeta, ivalue, base, head, size;\n\n\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\n\t\t\tfor (i = 0; i < datasetIndex; ++i) {\n\t\t\t\timeta = chart.getDatasetMeta(i);\n\n\t\t\t\tif (imeta.bar &&\n\t\t\t\t\timeta.stack === stack &&\n\t\t\t\t\timeta.controller._getValueScaleId() === scale.id &&\n\t\t\t\t\tchart.isDatasetVisible(i)) {\n\n\t\t\t\t\tivalue = +scale.getRightValue(datasets[i].data[index]);\n\t\t\t\t\tif ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) {\n\t\t\t\t\t\tstart += ivalue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tbase = scale.getPixelForValue(start);\n\t\thead = scale.getPixelForValue(start + value);\n\t\tsize = head - base;\n\n\t\tif (minBarLength !== undefined && Math.abs(size) < minBarLength) {\n\t\t\tsize = minBarLength;\n\t\t\tif (value >= 0 && !isHorizontal || value < 0 && isHorizontal) {\n\t\t\t\thead = base - minBarLength;\n\t\t\t} else {\n\t\t\t\thead = base + minBarLength;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tsize: size,\n\t\t\tbase: base,\n\t\t\thead: head,\n\t\t\tcenter: head + size / 2\n\t\t};\n\t},\n\n\t/**\n\t * @private\n\t */\n\tcalculateBarIndexPixels: function(datasetIndex, index, ruler) {\n\t\tvar me = this;\n\t\tvar options = ruler.scale.options;\n\t\tvar range = options.barThickness === 'flex'\n\t\t\t? computeFlexCategoryTraits(index, ruler, options)\n\t\t\t: computeFitCategoryTraits(index, ruler, options);\n\n\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\n\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n\t\tvar size = Math.min(\n\t\t\thelpers$1.valueOrDefault(options.maxBarThickness, Infinity),\n\t\t\trange.chunk * range.ratio);\n\n\t\treturn {\n\t\t\tbase: center - size / 2,\n\t\t\thead: center + size / 2,\n\t\t\tcenter: center,\n\t\t\tsize: size\n\t\t};\n\t},\n\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar scale = me._getValueScale();\n\t\tvar rects = me.getMeta().data;\n\t\tvar dataset = me.getDataset();\n\t\tvar ilen = rects.length;\n\t\tvar i = 0;\n\n\t\thelpers$1.canvas.clipArea(chart.ctx, chart.chartArea);\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\tif (!isNaN(scale.getRightValue(dataset.data[i]))) {\n\t\t\t\trects[i].draw();\n\t\t\t}\n\t\t}\n\n\t\thelpers$1.canvas.unclipArea(chart.ctx);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveElementOptions: function(rectangle, index) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar datasets = chart.data.datasets;\n\t\tvar dataset = datasets[me.index];\n\t\tvar custom = rectangle.custom || {};\n\t\tvar options = chart.options.elements.rectangle;\n\t\tvar values = {};\n\t\tvar i, ilen, key;\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\tvar keys = [\n\t\t\t'backgroundColor',\n\t\t\t'borderColor',\n\t\t\t'borderSkipped',\n\t\t\t'borderWidth'\n\t\t];\n\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\tkey = keys[i];\n\t\t\tvalues[key] = resolve$1([\n\t\t\t\tcustom[key],\n\t\t\t\tdataset[key],\n\t\t\t\toptions[key]\n\t\t\t], context, index);\n\t\t}\n\n\t\treturn values;\n\t}\n});\n\nvar valueOrDefault$3 = helpers$1.valueOrDefault;\nvar resolve$2 = helpers$1.options.resolve;\n\ncore_defaults._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\nvar controller_bubble = core_datasetController.extend({\n\t/**\n\t * @protected\n\t */\n\tdataElementType: elements.Point,\n\n\t/**\n\t * @protected\n\t */\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar points = meta.data;\n\n\t\t// Update Points\n\t\thelpers$1.each(points, function(point, index) {\n\t\t\tme.updateElement(point, index, reset);\n\t\t});\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tupdateElement: function(point, index, reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar custom = point.custom || {};\n\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\tvar options = me._resolveElementOptions(point, index);\n\t\tvar data = me.getDataset().data[index];\n\t\tvar dsIndex = me.index;\n\n\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\n\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\n\n\t\tpoint._xScale = xScale;\n\t\tpoint._yScale = yScale;\n\t\tpoint._options = options;\n\t\tpoint._datasetIndex = dsIndex;\n\t\tpoint._index = index;\n\t\tpoint._model = {\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\thitRadius: options.hitRadius,\n\t\t\tpointStyle: options.pointStyle,\n\t\t\trotation: options.rotation,\n\t\t\tradius: reset ? 0 : options.radius,\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\tx: x,\n\t\t\ty: y,\n\t\t};\n\n\t\tpoint.pivot();\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(point) {\n\t\tvar model = point._model;\n\t\tvar options = point._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tpoint.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t\tradius: model.radius\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$3(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$3(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$3(options.hoverBorderWidth, options.borderWidth);\n\t\tmodel.radius = options.radius + options.hoverRadius;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveElementOptions: function(point, index) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar datasets = chart.data.datasets;\n\t\tvar dataset = datasets[me.index];\n\t\tvar custom = point.custom || {};\n\t\tvar options = chart.options.elements.point;\n\t\tvar data = dataset.data[index];\n\t\tvar values = {};\n\t\tvar i, ilen, key;\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\tvar keys = [\n\t\t\t'backgroundColor',\n\t\t\t'borderColor',\n\t\t\t'borderWidth',\n\t\t\t'hoverBackgroundColor',\n\t\t\t'hoverBorderColor',\n\t\t\t'hoverBorderWidth',\n\t\t\t'hoverRadius',\n\t\t\t'hitRadius',\n\t\t\t'pointStyle',\n\t\t\t'rotation'\n\t\t];\n\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\tkey = keys[i];\n\t\t\tvalues[key] = resolve$2([\n\t\t\t\tcustom[key],\n\t\t\t\tdataset[key],\n\t\t\t\toptions[key]\n\t\t\t], context, index);\n\t\t}\n\n\t\t// Custom radius resolution\n\t\tvalues.radius = resolve$2([\n\t\t\tcustom.radius,\n\t\t\tdata ? data.r : undefined,\n\t\t\tdataset.radius,\n\t\t\toptions.radius\n\t\t], context, index);\n\n\t\treturn values;\n\t}\n});\n\nvar resolve$3 = helpers$1.options.resolve;\nvar valueOrDefault$4 = helpers$1.valueOrDefault;\n\ncore_defaults._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\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 arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\tvar fill = resolve$3([custom.backgroundColor, ds.backgroundColor, arcOpts.backgroundColor], undefined, i);\n\t\t\t\t\t\tvar stroke = resolve$3([custom.borderColor, ds.borderColor, arcOpts.borderColor], undefined, i);\n\t\t\t\t\t\tvar bw = resolve$3([custom.borderWidth, ds.borderWidth, arcOpts.borderWidth], undefined, i);\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$1.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\nvar controller_doughnut = core_datasetController.extend({\n\n\tdataElementType: elements.Arc,\n\n\tlinkScales: helpers$1.noop,\n\n\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n\tgetRingIndex: function(datasetIndex) {\n\t\tvar ringIndex = 0;\n\n\t\tfor (var j = 0; j < datasetIndex; ++j) {\n\t\t\tif (this.chart.isDatasetVisible(j)) {\n\t\t\t\t++ringIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn ringIndex;\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar chartArea = chart.chartArea;\n\t\tvar opts = chart.options;\n\t\tvar availableWidth = chartArea.right - chartArea.left;\n\t\tvar availableHeight = chartArea.bottom - chartArea.top;\n\t\tvar minSize = Math.min(availableWidth, availableHeight);\n\t\tvar offset = {x: 0, y: 0};\n\t\tvar meta = me.getMeta();\n\t\tvar arcs = meta.data;\n\t\tvar cutoutPercentage = opts.cutoutPercentage;\n\t\tvar circumference = opts.circumference;\n\t\tvar chartWeight = me._getRingWeight(me.index);\n\t\tvar i, ilen;\n\n\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\tif (circumference < Math.PI * 2.0) {\n\t\t\tvar startAngle = opts.rotation % (Math.PI * 2.0);\n\t\t\tstartAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0);\n\t\t\tvar endAngle = startAngle + circumference;\n\t\t\tvar start = {x: Math.cos(startAngle), y: Math.sin(startAngle)};\n\t\t\tvar end = {x: Math.cos(endAngle), y: Math.sin(endAngle)};\n\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle);\n\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\tvar contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle);\n\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\tvar cutout = cutoutPercentage / 100.0;\n\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\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\tvar size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5};\n\t\t\tminSize = Math.min(availableWidth / size.width, availableHeight / size.height);\n\t\t\toffset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5};\n\t\t}\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tarcs[i]._options = me._resolveElementOptions(arcs[i], i);\n\t\t}\n\n\t\tchart.borderWidth = me.getMaxBorderWidth();\n\t\tchart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0);\n\t\tchart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0);\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1);\n\t\tchart.offsetX = offset.x * chart.outerRadius;\n\t\tchart.offsetY = offset.y * chart.outerRadius;\n\n\t\tmeta.total = me.calculateTotal();\n\n\t\tme.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index);\n\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0);\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tme.updateElement(arcs[i], i, reset);\n\t\t}\n\t},\n\n\tupdateElement: function(arc, index, reset) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar chartArea = chart.chartArea;\n\t\tvar opts = chart.options;\n\t\tvar animationOpts = opts.animation;\n\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\n\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\n\t\tvar startAngle = opts.rotation; // non reset case handled later\n\t\tvar endAngle = opts.rotation; // non reset case handled later\n\t\tvar dataset = me.getDataset();\n\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI));\n\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\n\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\n\t\tvar options = arc._options || {};\n\n\t\thelpers$1.extend(arc, {\n\t\t\t// Utility\n\t\t\t_datasetIndex: me.index,\n\t\t\t_index: index,\n\n\t\t\t// Desired view properties\n\t\t\t_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\tborderAlign: options.borderAlign,\n\t\t\t\tx: centerX + chart.offsetX,\n\t\t\t\ty: centerY + chart.offsetY,\n\t\t\t\tstartAngle: startAngle,\n\t\t\t\tendAngle: endAngle,\n\t\t\t\tcircumference: circumference,\n\t\t\t\touterRadius: outerRadius,\n\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n\t\t\t}\n\t\t});\n\n\t\tvar model = arc._model;\n\n\t\t// Set correct angles if not resetting\n\t\tif (!reset || !animationOpts.animateRotate) {\n\t\t\tif (index === 0) {\n\t\t\t\tmodel.startAngle = opts.rotation;\n\t\t\t} else {\n\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n\t\t\t}\n\n\t\t\tmodel.endAngle = model.startAngle + model.circumference;\n\t\t}\n\n\t\tarc.pivot();\n\t},\n\n\tcalculateTotal: function() {\n\t\tvar dataset = this.getDataset();\n\t\tvar meta = this.getMeta();\n\t\tvar total = 0;\n\t\tvar value;\n\n\t\thelpers$1.each(meta.data, function(element, index) {\n\t\t\tvalue = dataset.data[index];\n\t\t\tif (!isNaN(value) && !element.hidden) {\n\t\t\t\ttotal += Math.abs(value);\n\t\t\t}\n\t\t});\n\n\t\t/* if (total === 0) {\n\t\t\ttotal = NaN;\n\t\t}*/\n\n\t\treturn total;\n\t},\n\n\tcalculateCircumference: function(value) {\n\t\tvar total = this.getMeta().total;\n\t\tif (total > 0 && !isNaN(value)) {\n\t\t\treturn (Math.PI * 2.0) * (Math.abs(value) / total);\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// gets the max border or hover width to properly scale pie charts\n\tgetMaxBorderWidth: function(arcs) {\n\t\tvar me = this;\n\t\tvar max = 0;\n\t\tvar chart = me.chart;\n\t\tvar i, ilen, meta, arc, controller, options, borderWidth, hoverWidth;\n\n\t\tif (!arcs) {\n\t\t\t// Find the outmost visible dataset\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\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t\tarcs = meta.data;\n\t\t\t\t\tif (i !== me.index) {\n\t\t\t\t\t\tcontroller = meta.controller;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!arcs) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tarc = arcs[i];\n\t\t\toptions = controller ? controller._resolveElementOptions(arc, i) : arc._options;\n\t\t\tif (options.borderAlign !== 'inner') {\n\t\t\t\tborderWidth = options.borderWidth;\n\t\t\t\thoverWidth = options.hoverBorderWidth;\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}\n\t\treturn max;\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(arc) {\n\t\tvar model = arc._model;\n\t\tvar options = arc._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tarc.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveElementOptions: function(arc, index) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = me.getDataset();\n\t\tvar custom = arc.custom || {};\n\t\tvar options = chart.options.elements.arc;\n\t\tvar values = {};\n\t\tvar i, ilen, key;\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\tvar keys = [\n\t\t\t'backgroundColor',\n\t\t\t'borderColor',\n\t\t\t'borderWidth',\n\t\t\t'borderAlign',\n\t\t\t'hoverBackgroundColor',\n\t\t\t'hoverBorderColor',\n\t\t\t'hoverBorderWidth',\n\t\t];\n\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\tkey = keys[i];\n\t\t\tvalues[key] = resolve$3([\n\t\t\t\tcustom[key],\n\t\t\t\tdataset[key],\n\t\t\t\toptions[key]\n\t\t\t], context, index);\n\t\t}\n\n\t\treturn values;\n\t},\n\n\t/**\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\n\t * @private\n\t */\n\t_getRingWeightOffset: function(datasetIndex) {\n\t\tvar ringWeightOffset = 0;\n\n\t\tfor (var i = 0; i < datasetIndex; ++i) {\n\t\t\tif (this.chart.isDatasetVisible(i)) {\n\t\t\t\tringWeightOffset += this._getRingWeight(i);\n\t\t\t}\n\t\t}\n\n\t\treturn ringWeightOffset;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getRingWeight: function(dataSetIndex) {\n\t\treturn Math.max(valueOrDefault$4(this.chart.data.datasets[dataSetIndex].weight, 1), 0);\n\t},\n\n\t/**\n\t * Returns the sum of all visibile data set weights. This value can be 0.\n\t * @private\n\t */\n\t_getVisibleDatasetWeightTotal: function() {\n\t\treturn this._getRingWeightOffset(this.chart.data.datasets.length);\n\t}\n});\n\ncore_defaults._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\ttype: 'category',\n\t\t\tposition: 'left',\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9,\n\t\t\toffset: true,\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\tmode: 'index',\n\t\taxis: 'y'\n\t}\n});\n\nvar controller_horizontalBar = controller_bar.extend({\n\t/**\n\t * @private\n\t */\n\t_getValueScaleId: function() {\n\t\treturn this.getMeta().xAxisID;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScaleId: function() {\n\t\treturn this.getMeta().yAxisID;\n\t}\n});\n\nvar valueOrDefault$5 = helpers$1.valueOrDefault;\nvar resolve$4 = helpers$1.options.resolve;\nvar isPointInArea = helpers$1.canvas._isPointInArea;\n\ncore_defaults._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\nfunction lineEnabled(dataset, options) {\n\treturn valueOrDefault$5(dataset.showLine, options.showLines);\n}\n\nvar controller_line = core_datasetController.extend({\n\n\tdatasetElementType: elements.Line,\n\n\tdataElementType: elements.Point,\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar line = meta.dataset;\n\t\tvar points = meta.data || [];\n\t\tvar scale = me.getScaleForId(meta.yAxisID);\n\t\tvar dataset = me.getDataset();\n\t\tvar showLine = lineEnabled(dataset, me.chart.options);\n\t\tvar i, ilen;\n\n\t\t// Update Line\n\t\tif (showLine) {\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\t// Utility\n\t\t\tline._scale = scale;\n\t\t\tline._datasetIndex = me.index;\n\t\t\t// Data\n\t\t\tline._children = points;\n\t\t\t// Model\n\t\t\tline._model = me._resolveLineOptions(line);\n\n\t\t\tline.pivot();\n\t\t}\n\n\t\t// Update Points\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tme.updateElement(points[i], i, reset);\n\t\t}\n\n\t\tif (showLine && line._model.tension !== 0) {\n\t\t\tme.updateBezierControlPoints();\n\t\t}\n\n\t\t// Now pivot the point for animation\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tpoints[i].pivot();\n\t\t}\n\t},\n\n\tupdateElement: function(point, index, reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar custom = point.custom || {};\n\t\tvar dataset = me.getDataset();\n\t\tvar datasetIndex = me.index;\n\t\tvar value = dataset.data[index];\n\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\tvar lineModel = meta.dataset._model;\n\t\tvar x, y;\n\n\t\tvar options = me._resolvePointOptions(point, index);\n\n\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\n\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\n\n\t\t// Utility\n\t\tpoint._xScale = xScale;\n\t\tpoint._yScale = yScale;\n\t\tpoint._options = options;\n\t\tpoint._datasetIndex = datasetIndex;\n\t\tpoint._index = index;\n\n\t\t// Desired view properties\n\t\tpoint._model = {\n\t\t\tx: x,\n\t\t\ty: y,\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t// Appearance\n\t\t\tradius: options.radius,\n\t\t\tpointStyle: options.pointStyle,\n\t\t\trotation: options.rotation,\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\ttension: valueOrDefault$5(custom.tension, lineModel ? lineModel.tension : 0),\n\t\t\tsteppedLine: lineModel ? lineModel.steppedLine : false,\n\t\t\t// Tooltip\n\t\t\thitRadius: options.hitRadius\n\t\t};\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolvePointOptions: function(element, index) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = chart.data.datasets[me.index];\n\t\tvar custom = element.custom || {};\n\t\tvar options = chart.options.elements.point;\n\t\tvar values = {};\n\t\tvar i, ilen, key;\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\tvar ELEMENT_OPTIONS = {\n\t\t\tbackgroundColor: 'pointBackgroundColor',\n\t\t\tborderColor: 'pointBorderColor',\n\t\t\tborderWidth: 'pointBorderWidth',\n\t\t\thitRadius: 'pointHitRadius',\n\t\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\n\t\t\thoverBorderColor: 'pointHoverBorderColor',\n\t\t\thoverBorderWidth: 'pointHoverBorderWidth',\n\t\t\thoverRadius: 'pointHoverRadius',\n\t\t\tpointStyle: 'pointStyle',\n\t\t\tradius: 'pointRadius',\n\t\t\trotation: 'pointRotation'\n\t\t};\n\t\tvar keys = Object.keys(ELEMENT_OPTIONS);\n\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\tkey = keys[i];\n\t\t\tvalues[key] = resolve$4([\n\t\t\t\tcustom[key],\n\t\t\t\tdataset[ELEMENT_OPTIONS[key]],\n\t\t\t\tdataset[key],\n\t\t\t\toptions[key]\n\t\t\t], context, index);\n\t\t}\n\n\t\treturn values;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveLineOptions: function(element) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = chart.data.datasets[me.index];\n\t\tvar custom = element.custom || {};\n\t\tvar options = chart.options;\n\t\tvar elementOptions = options.elements.line;\n\t\tvar values = {};\n\t\tvar i, ilen, key;\n\n\t\tvar keys = [\n\t\t\t'backgroundColor',\n\t\t\t'borderWidth',\n\t\t\t'borderColor',\n\t\t\t'borderCapStyle',\n\t\t\t'borderDash',\n\t\t\t'borderDashOffset',\n\t\t\t'borderJoinStyle',\n\t\t\t'fill',\n\t\t\t'cubicInterpolationMode'\n\t\t];\n\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\tkey = keys[i];\n\t\t\tvalues[key] = resolve$4([\n\t\t\t\tcustom[key],\n\t\t\t\tdataset[key],\n\t\t\t\telementOptions[key]\n\t\t\t]);\n\t\t}\n\n\t\t// The default behavior of lines is to break at null values, according\n\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n\t\t// This option gives lines the ability to span gaps\n\t\tvalues.spanGaps = valueOrDefault$5(dataset.spanGaps, options.spanGaps);\n\t\tvalues.tension = valueOrDefault$5(dataset.lineTension, elementOptions.tension);\n\t\tvalues.steppedLine = resolve$4([custom.steppedLine, dataset.steppedLine, elementOptions.stepped]);\n\n\t\treturn values;\n\t},\n\n\tcalculatePointY: function(value, index, datasetIndex) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar meta = me.getMeta();\n\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\tvar sumPos = 0;\n\t\tvar sumNeg = 0;\n\t\tvar i, ds, dsMeta;\n\n\t\tif (yScale.options.stacked) {\n\t\t\tfor (i = 0; i < datasetIndex; i++) {\n\t\t\t\tds = chart.data.datasets[i];\n\t\t\t\tdsMeta = chart.getDatasetMeta(i);\n\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) {\n\t\t\t\t\tvar stackedRightValue = Number(yScale.getRightValue(ds.data[index]));\n\t\t\t\t\tif (stackedRightValue < 0) {\n\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsumPos += stackedRightValue || 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar rightValue = Number(yScale.getRightValue(value));\n\t\t\tif (rightValue < 0) {\n\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\n\t\t\t}\n\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\n\t\t}\n\n\t\treturn yScale.getPixelForValue(value);\n\t},\n\n\tupdateBezierControlPoints: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar meta = me.getMeta();\n\t\tvar lineModel = meta.dataset._model;\n\t\tvar area = chart.chartArea;\n\t\tvar points = meta.data || [];\n\t\tvar i, ilen, model, controlPoints;\n\n\t\t// Only consider points that are drawn in case the spanGaps option is used\n\t\tif (lineModel.spanGaps) {\n\t\t\tpoints = points.filter(function(pt) {\n\t\t\t\treturn !pt._model.skip;\n\t\t\t});\n\t\t}\n\n\t\tfunction capControlPoint(pt, min, max) {\n\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t}\n\n\t\tif (lineModel.cubicInterpolationMode === 'monotone') {\n\t\t\thelpers$1.splineCurveMonotone(points);\n\t\t} else {\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tmodel = points[i]._model;\n\t\t\t\tcontrolPoints = helpers$1.splineCurve(\n\t\t\t\t\thelpers$1.previousItem(points, i)._model,\n\t\t\t\t\tmodel,\n\t\t\t\t\thelpers$1.nextItem(points, i)._model,\n\t\t\t\t\tlineModel.tension\n\t\t\t\t);\n\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\n\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\n\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\n\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\n\t\t\t}\n\t\t}\n\n\t\tif (chart.options.elements.line.capBezierPoints) {\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tmodel = points[i]._model;\n\t\t\t\tif (isPointInArea(model, area)) {\n\t\t\t\t\tif (i > 0 && isPointInArea(points[i - 1]._model, area)) {\n\t\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n\t\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n\t\t\t\t\t}\n\t\t\t\t\tif (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) {\n\t\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n\t\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar meta = me.getMeta();\n\t\tvar points = meta.data || [];\n\t\tvar area = chart.chartArea;\n\t\tvar ilen = points.length;\n\t\tvar halfBorderWidth;\n\t\tvar i = 0;\n\n\t\tif (lineEnabled(me.getDataset(), chart.options)) {\n\t\t\thalfBorderWidth = (meta.dataset._model.borderWidth || 0) / 2;\n\n\t\t\thelpers$1.canvas.clipArea(chart.ctx, {\n\t\t\t\tleft: area.left,\n\t\t\t\tright: area.right,\n\t\t\t\ttop: area.top - halfBorderWidth,\n\t\t\t\tbottom: area.bottom + halfBorderWidth\n\t\t\t});\n\n\t\t\tmeta.dataset.draw();\n\n\t\t\thelpers$1.canvas.unclipArea(chart.ctx);\n\t\t}\n\n\t\t// Draw the points\n\t\tfor (; i < ilen; ++i) {\n\t\t\tpoints[i].draw(area);\n\t\t}\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(point) {\n\t\tvar model = point._model;\n\t\tvar options = point._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tpoint.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t\tradius: model.radius\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth);\n\t\tmodel.radius = valueOrDefault$5(options.hoverRadius, options.radius);\n\t},\n});\n\nvar resolve$5 = helpers$1.options.resolve;\n\ncore_defaults._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\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 arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\tvar fill = resolve$5([custom.backgroundColor, ds.backgroundColor, arcOpts.backgroundColor], undefined, i);\n\t\t\t\t\t\tvar stroke = resolve$5([custom.borderColor, ds.borderColor, arcOpts.borderColor], undefined, i);\n\t\t\t\t\t\tvar bw = resolve$5([custom.borderWidth, ds.borderWidth, arcOpts.borderWidth], undefined, i);\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\nvar controller_polarArea = core_datasetController.extend({\n\n\tdataElementType: elements.Arc,\n\n\tlinkScales: helpers$1.noop,\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar dataset = me.getDataset();\n\t\tvar meta = me.getMeta();\n\t\tvar start = me.chart.options.startAngle || 0;\n\t\tvar starts = me._starts = [];\n\t\tvar angles = me._angles = [];\n\t\tvar arcs = meta.data;\n\t\tvar i, ilen, angle;\n\n\t\tme._updateRadius();\n\n\t\tmeta.count = me.countVisibleElements();\n\n\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\n\t\t\tstarts[i] = start;\n\t\t\tangle = me._computeAngle(i);\n\t\t\tangles[i] = angle;\n\t\t\tstart += angle;\n\t\t}\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tarcs[i]._options = me._resolveElementOptions(arcs[i], i);\n\t\t\tme.updateElement(arcs[i], i, reset);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_updateRadius: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar chartArea = chart.chartArea;\n\t\tvar opts = chart.options;\n\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n\t\tchart.outerRadius = Math.max(minSize / 2, 0);\n\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\n\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\n\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\n\t},\n\n\tupdateElement: function(arc, index, reset) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = me.getDataset();\n\t\tvar opts = chart.options;\n\t\tvar animationOpts = opts.animation;\n\t\tvar scale = chart.scale;\n\t\tvar labels = chart.data.labels;\n\n\t\tvar centerX = scale.xCenter;\n\t\tvar centerY = scale.yCenter;\n\n\t\t// var negHalfPI = -0.5 * Math.PI;\n\t\tvar datasetStartAngle = opts.startAngle;\n\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\tvar startAngle = me._starts[index];\n\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\n\n\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\tvar options = arc._options || {};\n\n\t\thelpers$1.extend(arc, {\n\t\t\t// Utility\n\t\t\t_datasetIndex: me.index,\n\t\t\t_index: index,\n\t\t\t_scale: scale,\n\n\t\t\t// Desired view properties\n\t\t\t_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\tborderAlign: options.borderAlign,\n\t\t\t\tx: centerX,\n\t\t\t\ty: centerY,\n\t\t\t\tinnerRadius: 0,\n\t\t\t\touterRadius: reset ? resetRadius : distance,\n\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(labels, index, labels[index])\n\t\t\t}\n\t\t});\n\n\t\tarc.pivot();\n\t},\n\n\tcountVisibleElements: function() {\n\t\tvar dataset = this.getDataset();\n\t\tvar meta = this.getMeta();\n\t\tvar count = 0;\n\n\t\thelpers$1.each(meta.data, function(element, index) {\n\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\n\t\treturn count;\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(arc) {\n\t\tvar model = arc._model;\n\t\tvar options = arc._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\t\tvar valueOrDefault = helpers$1.valueOrDefault;\n\n\t\tarc.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveElementOptions: function(arc, index) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = me.getDataset();\n\t\tvar custom = arc.custom || {};\n\t\tvar options = chart.options.elements.arc;\n\t\tvar values = {};\n\t\tvar i, ilen, key;\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\tvar keys = [\n\t\t\t'backgroundColor',\n\t\t\t'borderColor',\n\t\t\t'borderWidth',\n\t\t\t'borderAlign',\n\t\t\t'hoverBackgroundColor',\n\t\t\t'hoverBorderColor',\n\t\t\t'hoverBorderWidth',\n\t\t];\n\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\tkey = keys[i];\n\t\t\tvalues[key] = resolve$5([\n\t\t\t\tcustom[key],\n\t\t\t\tdataset[key],\n\t\t\t\toptions[key]\n\t\t\t], context, index);\n\t\t}\n\n\t\treturn values;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_computeAngle: function(index) {\n\t\tvar me = this;\n\t\tvar count = this.getMeta().count;\n\t\tvar dataset = me.getDataset();\n\t\tvar meta = me.getMeta();\n\n\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: me.chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\treturn resolve$5([\n\t\t\tme.chart.options.elements.arc.angle,\n\t\t\t(2 * Math.PI) / count\n\t\t], context, index);\n\t}\n});\n\ncore_defaults._set('pie', helpers$1.clone(core_defaults.doughnut));\ncore_defaults._set('pie', {\n\tcutoutPercentage: 0\n});\n\n// Pie charts are Doughnut chart with different defaults\nvar controller_pie = controller_doughnut;\n\nvar valueOrDefault$6 = helpers$1.valueOrDefault;\nvar resolve$6 = helpers$1.options.resolve;\n\ncore_defaults._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\nvar controller_radar = core_datasetController.extend({\n\n\tdatasetElementType: elements.Line,\n\n\tdataElementType: elements.Point,\n\n\tlinkScales: helpers$1.noop,\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar line = meta.dataset;\n\t\tvar points = meta.data || [];\n\t\tvar scale = me.chart.scale;\n\t\tvar dataset = me.getDataset();\n\t\tvar i, ilen;\n\n\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\tdataset.lineTension = dataset.tension;\n\t\t}\n\n\t\t// Utility\n\t\tline._scale = scale;\n\t\tline._datasetIndex = me.index;\n\t\t// Data\n\t\tline._children = points;\n\t\tline._loop = true;\n\t\t// Model\n\t\tline._model = me._resolveLineOptions(line);\n\n\t\tline.pivot();\n\n\t\t// Update Points\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tme.updateElement(points[i], i, reset);\n\t\t}\n\n\t\t// Update bezier control points\n\t\tme.updateBezierControlPoints();\n\n\t\t// Now pivot the point for animation\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tpoints[i].pivot();\n\t\t}\n\t},\n\n\tupdateElement: function(point, index, reset) {\n\t\tvar me = this;\n\t\tvar custom = point.custom || {};\n\t\tvar dataset = me.getDataset();\n\t\tvar scale = me.chart.scale;\n\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n\t\tvar options = me._resolvePointOptions(point, index);\n\t\tvar lineModel = me.getMeta().dataset._model;\n\t\tvar x = reset ? scale.xCenter : pointPosition.x;\n\t\tvar y = reset ? scale.yCenter : pointPosition.y;\n\n\t\t// Utility\n\t\tpoint._scale = scale;\n\t\tpoint._options = options;\n\t\tpoint._datasetIndex = me.index;\n\t\tpoint._index = index;\n\n\t\t// Desired view properties\n\t\tpoint._model = {\n\t\t\tx: x, // value not used in dataset scale, but we want a consistent API between scales\n\t\t\ty: y,\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t// Appearance\n\t\t\tradius: options.radius,\n\t\t\tpointStyle: options.pointStyle,\n\t\t\trotation: options.rotation,\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\ttension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0),\n\n\t\t\t// Tooltip\n\t\t\thitRadius: options.hitRadius\n\t\t};\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolvePointOptions: function(element, index) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = chart.data.datasets[me.index];\n\t\tvar custom = element.custom || {};\n\t\tvar options = chart.options.elements.point;\n\t\tvar values = {};\n\t\tvar i, ilen, key;\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\tvar ELEMENT_OPTIONS = {\n\t\t\tbackgroundColor: 'pointBackgroundColor',\n\t\t\tborderColor: 'pointBorderColor',\n\t\t\tborderWidth: 'pointBorderWidth',\n\t\t\thitRadius: 'pointHitRadius',\n\t\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\n\t\t\thoverBorderColor: 'pointHoverBorderColor',\n\t\t\thoverBorderWidth: 'pointHoverBorderWidth',\n\t\t\thoverRadius: 'pointHoverRadius',\n\t\t\tpointStyle: 'pointStyle',\n\t\t\tradius: 'pointRadius',\n\t\t\trotation: 'pointRotation'\n\t\t};\n\t\tvar keys = Object.keys(ELEMENT_OPTIONS);\n\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\tkey = keys[i];\n\t\t\tvalues[key] = resolve$6([\n\t\t\t\tcustom[key],\n\t\t\t\tdataset[ELEMENT_OPTIONS[key]],\n\t\t\t\tdataset[key],\n\t\t\t\toptions[key]\n\t\t\t], context, index);\n\t\t}\n\n\t\treturn values;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveLineOptions: function(element) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = chart.data.datasets[me.index];\n\t\tvar custom = element.custom || {};\n\t\tvar options = chart.options.elements.line;\n\t\tvar values = {};\n\t\tvar i, ilen, key;\n\n\t\tvar keys = [\n\t\t\t'backgroundColor',\n\t\t\t'borderWidth',\n\t\t\t'borderColor',\n\t\t\t'borderCapStyle',\n\t\t\t'borderDash',\n\t\t\t'borderDashOffset',\n\t\t\t'borderJoinStyle',\n\t\t\t'fill'\n\t\t];\n\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\tkey = keys[i];\n\t\t\tvalues[key] = resolve$6([\n\t\t\t\tcustom[key],\n\t\t\t\tdataset[key],\n\t\t\t\toptions[key]\n\t\t\t]);\n\t\t}\n\n\t\tvalues.tension = valueOrDefault$6(dataset.lineTension, options.tension);\n\n\t\treturn values;\n\t},\n\n\tupdateBezierControlPoints: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar area = me.chart.chartArea;\n\t\tvar points = meta.data || [];\n\t\tvar i, ilen, model, controlPoints;\n\n\t\tfunction capControlPoint(pt, min, max) {\n\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t}\n\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tmodel = points[i]._model;\n\t\t\tcontrolPoints = helpers$1.splineCurve(\n\t\t\t\thelpers$1.previousItem(points, i, true)._model,\n\t\t\t\tmodel,\n\t\t\t\thelpers$1.nextItem(points, i, true)._model,\n\t\t\t\tmodel.tension\n\t\t\t);\n\n\t\t\t// Prevent the bezier going outside of the bounds of the graph\n\t\t\tmodel.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right);\n\t\t\tmodel.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom);\n\t\t\tmodel.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right);\n\t\t\tmodel.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom);\n\t\t}\n\t},\n\n\tsetHoverStyle: function(point) {\n\t\tvar model = point._model;\n\t\tvar options = point._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tpoint.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t\tradius: model.radius\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth);\n\t\tmodel.radius = valueOrDefault$6(options.hoverRadius, options.radius);\n\t}\n});\n\ncore_defaults._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\n// Scatter charts use line controllers\nvar controller_scatter = controller_line;\n\n// NOTE export a map in which the key represents the controller type, not\n// the class, and so must be CamelCase in order to be correctly retrieved\n// by the controller in core.controller.js (`controllers[meta.type]`).\n\nvar controllers = {\n\tbar: controller_bar,\n\tbubble: controller_bubble,\n\tdoughnut: controller_doughnut,\n\thorizontalBar: controller_horizontalBar,\n\tline: controller_line,\n\tpolarArea: controller_polarArea,\n\tpie: controller_pie,\n\tradar: controller_radar,\n\tscatter: controller_scatter\n};\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 {object} 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$1.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 {function} handler - 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 {ChartElement[]} items - elements to filter\n * @param {object} position - 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 {object} position - the point to be nearest to\n * @param {boolean} intersect - if true, only consider items that intersect the position\n * @param {function} distanceMetric - 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\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 */\nvar core_interaction = {\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 {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - 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 {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - 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 {Event} e - 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 {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - 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\treturn getNearestItems(chart, position, options.intersect, distanceMetric);\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 {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - 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 {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - 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\nfunction filterByPosition(array, position) {\n\treturn helpers$1.where(array, function(v) {\n\t\treturn v.position === position;\n\t});\n}\n\nfunction sortByWeight(array, reverse) {\n\tarray.forEach(function(v, i) {\n\t\tv._tmpIndex_ = i;\n\t\treturn v;\n\t});\n\tarray.sort(function(a, b) {\n\t\tvar v0 = reverse ? b : a;\n\t\tvar v1 = reverse ? a : b;\n\t\treturn v0.weight === v1.weight ?\n\t\t\tv0._tmpIndex_ - v1._tmpIndex_ :\n\t\t\tv0.weight - v1.weight;\n\t});\n\tarray.forEach(function(v) {\n\t\tdelete v._tmpIndex_;\n\t});\n}\n\nfunction findMaxPadding(boxes) {\n\tvar top = 0;\n\tvar left = 0;\n\tvar bottom = 0;\n\tvar right = 0;\n\thelpers$1.each(boxes, function(box) {\n\t\tif (box.getPadding) {\n\t\t\tvar boxPadding = box.getPadding();\n\t\t\ttop = Math.max(top, boxPadding.top);\n\t\t\tleft = Math.max(left, boxPadding.left);\n\t\t\tbottom = Math.max(bottom, boxPadding.bottom);\n\t\t\tright = Math.max(right, boxPadding.right);\n\t\t}\n\t});\n\treturn {\n\t\ttop: top,\n\t\tleft: left,\n\t\tbottom: bottom,\n\t\tright: right\n\t};\n}\n\nfunction addSizeByPosition(boxes, size) {\n\thelpers$1.each(boxes, function(box) {\n\t\tsize[box.position] += box.isHorizontal() ? box.height : box.width;\n\t});\n}\n\ncore_defaults._set('global', {\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\n/**\n * @interface ILayoutItem\n * @prop {string} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\n * @prop {function} getPadding - Returns an object with padding on the edges\n * @prop {number} width - Width of item. Must be valid after update()\n * @prop {number} height - Height of item. Must be valid after update()\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nvar core_layouts = {\n\tdefaults: {},\n\n\t/**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {ILayoutItem} item - the item to add to be layed out\n\t */\n\taddBox: function(chart, item) {\n\t\tif (!chart.boxes) {\n\t\t\tchart.boxes = [];\n\t\t}\n\n\t\t// initialize item with default values\n\t\titem.fullWidth = item.fullWidth || false;\n\t\titem.position = item.position || 'top';\n\t\titem.weight = item.weight || 0;\n\n\t\tchart.boxes.push(item);\n\t},\n\n\t/**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {ILayoutItem} layoutItem - the item to remove from the layout\n\t */\n\tremoveBox: function(chart, layoutItem) {\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n\t\tif (index !== -1) {\n\t\t\tchart.boxes.splice(index, 1);\n\t\t}\n\t},\n\n\t/**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {ILayoutItem} item - the item to configure with the given options\n\t * @param {object} options - the new item options.\n\t */\n\tconfigure: function(chart, item, options) {\n\t\tvar props = ['fullWidth', 'position', 'weight'];\n\t\tvar ilen = props.length;\n\t\tvar i = 0;\n\t\tvar prop;\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\tprop = props[i];\n\t\t\tif (options.hasOwnProperty(prop)) {\n\t\t\t\titem[prop] = options[prop];\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {number} width - the width to fit into\n\t * @param {number} height - the height to fit into\n\t */\n\tupdate: function(chart, width, height) {\n\t\tif (!chart) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar layoutOptions = chart.options.layout || {};\n\t\tvar padding = helpers$1.options.toPadding(layoutOptions.padding);\n\t\tvar leftPadding = padding.left;\n\t\tvar rightPadding = padding.right;\n\t\tvar topPadding = padding.top;\n\t\tvar bottomPadding = padding.bottom;\n\n\t\tvar leftBoxes = filterByPosition(chart.boxes, 'left');\n\t\tvar rightBoxes = filterByPosition(chart.boxes, 'right');\n\t\tvar topBoxes = filterByPosition(chart.boxes, 'top');\n\t\tvar bottomBoxes = filterByPosition(chart.boxes, 'bottom');\n\t\tvar chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea');\n\n\t\t// Sort boxes by weight. A higher weight is further away from the chart area\n\t\tsortByWeight(leftBoxes, true);\n\t\tsortByWeight(rightBoxes, false);\n\t\tsortByWeight(topBoxes, true);\n\t\tsortByWeight(bottomBoxes, false);\n\n\t\tvar verticalBoxes = leftBoxes.concat(rightBoxes);\n\t\tvar horizontalBoxes = topBoxes.concat(bottomBoxes);\n\t\tvar outerBoxes = verticalBoxes.concat(horizontalBoxes);\n\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\n\t\t// Our canvas looks like the following.\n\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// B1 is the bottom axis\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n\t\t// an error will be thrown.\n\t\t//\n\t\t// |----------------------------------------------------|\n\t\t// | T1 (Full Width) |\n\t\t// |----------------------------------------------------|\n\t\t// | | | T2 | |\n\t\t// | |----|-------------------------------------|----|\n\t\t// | | | C1 | | C2 | |\n\t\t// | | |----| |----| |\n\t\t// | | | | |\n\t\t// | L1 | L2 | ChartArea (C0) | R1 |\n\t\t// | | | | |\n\t\t// | | |----| |----| |\n\t\t// | | | C3 | | C4 | |\n\t\t// | |----|-------------------------------------|----|\n\t\t// | | | B1 | |\n\t\t// |----------------------------------------------------|\n\t\t// | B2 (Full Width) |\n\t\t// |----------------------------------------------------|\n\t\t//\n\t\t// What we do to find the best sizing, we do the following\n\t\t// 1. Determine the minimum size of the chart area.\n\t\t// 2. Split the remaining width equally between each vertical axis\n\t\t// 3. Split the remaining height equally between each horizontal axis\n\t\t// 4. Give each layout the maximum size it can be. The layout will return it's minimum size\n\t\t// 5. Adjust the sizes of each axis based on it's minimum reported size.\n\t\t// 6. Refit each axis\n\t\t// 7. Position each axis in the final location\n\t\t// 8. Tell the chart the final location of the chart area\n\t\t// 9. Tell any axes that overlay the chart area the positions of the chart area\n\n\t\t// Step 1\n\t\tvar chartWidth = width - leftPadding - rightPadding;\n\t\tvar chartHeight = height - topPadding - bottomPadding;\n\t\tvar chartAreaWidth = chartWidth / 2; // min 50%\n\n\t\t// Step 2\n\t\tvar verticalBoxWidth = (width - chartAreaWidth) / verticalBoxes.length;\n\n\t\t// Step 3\n\t\t// TODO re-limit horizontal axis height (this limit has affected only padding calculation since PR 1837)\n\t\t// var horizontalBoxHeight = (height - chartAreaHeight) / horizontalBoxes.length;\n\n\t\t// Step 4\n\t\tvar maxChartAreaWidth = chartWidth;\n\t\tvar maxChartAreaHeight = chartHeight;\n\t\tvar outerBoxSizes = {top: topPadding, left: leftPadding, bottom: bottomPadding, right: rightPadding};\n\t\tvar minBoxSizes = [];\n\t\tvar maxPadding;\n\n\t\tfunction getMinimumBoxSize(box) {\n\t\t\tvar minSize;\n\t\t\tvar isHorizontal = box.isHorizontal();\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2);\n\t\t\t\tmaxChartAreaHeight -= minSize.height;\n\t\t\t} else {\n\t\t\t\tminSize = box.update(verticalBoxWidth, maxChartAreaHeight);\n\t\t\t\tmaxChartAreaWidth -= minSize.width;\n\t\t\t}\n\n\t\t\tminBoxSizes.push({\n\t\t\t\thorizontal: isHorizontal,\n\t\t\t\twidth: minSize.width,\n\t\t\t\tbox: box,\n\t\t\t});\n\t\t}\n\n\t\thelpers$1.each(outerBoxes, getMinimumBoxSize);\n\n\t\t// If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478)\n\t\tmaxPadding = findMaxPadding(outerBoxes);\n\n\t\t// At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could\n\t\t// be if the axes are drawn at their minimum sizes.\n\t\t// Steps 5 & 6\n\n\t\t// Function to fit a box\n\t\tfunction fitBox(box) {\n\t\t\tvar minBoxSize = helpers$1.findNextWhere(minBoxSizes, function(minBox) {\n\t\t\t\treturn minBox.box === box;\n\t\t\t});\n\n\t\t\tif (minBoxSize) {\n\t\t\t\tif (minBoxSize.horizontal) {\n\t\t\t\t\tvar scaleMargin = {\n\t\t\t\t\t\tleft: Math.max(outerBoxSizes.left, maxPadding.left),\n\t\t\t\t\t\tright: Math.max(outerBoxSizes.right, maxPadding.right),\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tbottom: 0\n\t\t\t\t\t};\n\n\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// on the margin. Sometimes they need to increase in size slightly\n\t\t\t\t\tbox.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin);\n\t\t\t\t} else {\n\t\t\t\t\tbox.update(minBoxSize.width, maxChartAreaHeight);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Update, and calculate the left and right margins for the horizontal boxes\n\t\thelpers$1.each(verticalBoxes, fitBox);\n\t\taddSizeByPosition(verticalBoxes, outerBoxSizes);\n\n\t\t// Set the Left and Right margins for the horizontal boxes\n\t\thelpers$1.each(horizontalBoxes, fitBox);\n\t\taddSizeByPosition(horizontalBoxes, outerBoxSizes);\n\n\t\tfunction finalFitVerticalBox(box) {\n\t\t\tvar minBoxSize = helpers$1.findNextWhere(minBoxSizes, function(minSize) {\n\t\t\t\treturn minSize.box === box;\n\t\t\t});\n\n\t\t\tvar scaleMargin = {\n\t\t\t\tleft: 0,\n\t\t\t\tright: 0,\n\t\t\t\ttop: outerBoxSizes.top,\n\t\t\t\tbottom: outerBoxSizes.bottom\n\t\t\t};\n\n\t\t\tif (minBoxSize) {\n\t\t\t\tbox.update(minBoxSize.width, maxChartAreaHeight, scaleMargin);\n\t\t\t}\n\t\t}\n\n\t\t// Let the left layout know the final margin\n\t\thelpers$1.each(verticalBoxes, finalFitVerticalBox);\n\n\t\t// Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance)\n\t\touterBoxSizes = {top: topPadding, left: leftPadding, bottom: bottomPadding, right: rightPadding};\n\t\taddSizeByPosition(outerBoxes, outerBoxSizes);\n\n\t\t// We may be adding some padding to account for rotated x axis labels\n\t\tvar leftPaddingAddition = Math.max(maxPadding.left - outerBoxSizes.left, 0);\n\t\touterBoxSizes.left += leftPaddingAddition;\n\t\touterBoxSizes.right += Math.max(maxPadding.right - outerBoxSizes.right, 0);\n\n\t\tvar topPaddingAddition = Math.max(maxPadding.top - outerBoxSizes.top, 0);\n\t\touterBoxSizes.top += topPaddingAddition;\n\t\touterBoxSizes.bottom += Math.max(maxPadding.bottom - outerBoxSizes.bottom, 0);\n\n\t\t// Figure out if our chart area changed. This would occur if the dataset layout label rotation\n\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// without calling `fit` again\n\t\tvar newMaxChartAreaHeight = height - outerBoxSizes.top - outerBoxSizes.bottom;\n\t\tvar newMaxChartAreaWidth = width - outerBoxSizes.left - outerBoxSizes.right;\n\n\t\tif (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) {\n\t\t\thelpers$1.each(verticalBoxes, function(box) {\n\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t});\n\n\t\t\thelpers$1.each(horizontalBoxes, function(box) {\n\t\t\t\tif (!box.fullWidth) {\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmaxChartAreaHeight = newMaxChartAreaHeight;\n\t\t\tmaxChartAreaWidth = newMaxChartAreaWidth;\n\t\t}\n\n\t\t// Step 7 - Position the boxes\n\t\tvar left = leftPadding + leftPaddingAddition;\n\t\tvar top = topPadding + topPaddingAddition;\n\n\t\tfunction placeBox(box) {\n\t\t\tif (box.isHorizontal()) {\n\t\t\t\tbox.left = box.fullWidth ? leftPadding : outerBoxSizes.left;\n\t\t\t\tbox.right = box.fullWidth ? width - rightPadding : outerBoxSizes.left + maxChartAreaWidth;\n\t\t\t\tbox.top = top;\n\t\t\t\tbox.bottom = top + box.height;\n\n\t\t\t\t// Move to next point\n\t\t\t\ttop = box.bottom;\n\n\t\t\t} else {\n\n\t\t\t\tbox.left = left;\n\t\t\t\tbox.right = left + box.width;\n\t\t\t\tbox.top = outerBoxSizes.top;\n\t\t\t\tbox.bottom = outerBoxSizes.top + maxChartAreaHeight;\n\n\t\t\t\t// Move to next point\n\t\t\t\tleft = box.right;\n\t\t\t}\n\t\t}\n\n\t\thelpers$1.each(leftBoxes.concat(topBoxes), placeBox);\n\n\t\t// Account for chart width and height\n\t\tleft += maxChartAreaWidth;\n\t\ttop += maxChartAreaHeight;\n\n\t\thelpers$1.each(rightBoxes, placeBox);\n\t\thelpers$1.each(bottomBoxes, placeBox);\n\n\t\t// Step 8\n\t\tchart.chartArea = {\n\t\t\tleft: outerBoxSizes.left,\n\t\t\ttop: outerBoxSizes.top,\n\t\t\tright: outerBoxSizes.left + maxChartAreaWidth,\n\t\t\tbottom: outerBoxSizes.top + maxChartAreaHeight\n\t\t};\n\n\t\t// Step 9\n\t\thelpers$1.each(chartAreaBoxes, function(box) {\n\t\t\tbox.left = chart.chartArea.left;\n\t\t\tbox.top = chart.chartArea.top;\n\t\t\tbox.right = chart.chartArea.right;\n\t\t\tbox.bottom = chart.chartArea.bottom;\n\n\t\t\tbox.update(maxChartAreaWidth, maxChartAreaHeight);\n\t\t});\n\t}\n};\n\n/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nvar platform_basic = {\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\nvar platform_dom = \"/*\\n * DOM element rendering detection\\n * https://davidwalsh.name/detect-node-insertion\\n */\\n@keyframes chartjs-render-animation {\\n\\tfrom { opacity: 0.99; }\\n\\tto { opacity: 1; }\\n}\\n\\n.chartjs-render-monitor {\\n\\tanimation: chartjs-render-animation 0.001s;\\n}\\n\\n/*\\n * DOM element resizing detection\\n * https://github.com/marcj/css-element-queries\\n */\\n.chartjs-size-monitor,\\n.chartjs-size-monitor-expand,\\n.chartjs-size-monitor-shrink {\\n\\tposition: absolute;\\n\\tdirection: ltr;\\n\\tleft: 0;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\toverflow: hidden;\\n\\tpointer-events: none;\\n\\tvisibility: hidden;\\n\\tz-index: -1;\\n}\\n\\n.chartjs-size-monitor-expand > div {\\n\\tposition: absolute;\\n\\twidth: 1000000px;\\n\\theight: 1000000px;\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\\n.chartjs-size-monitor-shrink > div {\\n\\tposition: absolute;\\n\\twidth: 200%;\\n\\theight: 200%;\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\";\n\nvar platform_dom$1 = /*#__PURE__*/Object.freeze({\ndefault: platform_dom\n});\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n.default || n;\n}\n\nvar stylesheet = getCjsExportFromNamespace(platform_dom$1);\n\nvar EXPANDO_KEY = '$chartjs';\nvar CSS_PREFIX = 'chartjs-';\nvar CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor';\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$1.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\t// eslint-disable-next-line getter-return\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 addListener(node, type, listener) {\n\tnode.addEventListener(type, listener, eventListenerOptions);\n}\n\nfunction removeListener(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$1.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$1.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\nfunction createDiv(cls) {\n\tvar el = document.createElement('div');\n\tel.className = cls || '';\n\treturn el;\n}\n\n// Implementation based on https://github.com/marcj/css-element-queries\nfunction createResizer(handler) {\n\tvar maxSize = 1000000;\n\n\t// NOTE(SB) Don't use innerHTML because it could be considered unsafe.\n\t// https://github.com/chartjs/Chart.js/issues/5902\n\tvar resizer = createDiv(CSS_SIZE_MONITOR);\n\tvar expand = createDiv(CSS_SIZE_MONITOR + '-expand');\n\tvar shrink = createDiv(CSS_SIZE_MONITOR + '-shrink');\n\n\texpand.appendChild(createDiv());\n\tshrink.appendChild(createDiv());\n\n\tresizer.appendChild(expand);\n\tresizer.appendChild(shrink);\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\n\tvar onScroll = function() {\n\t\tresizer._reset();\n\t\thandler();\n\t};\n\n\taddListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\n\taddListener(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$1.each(ANIMATION_START_EVENTS, function(type) {\n\t\taddListener(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$1.each(ANIMATION_START_EVENTS, function(type) {\n\t\t\tremoveListener(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\tvar container = chart.options.maintainAspectRatio && node.parentNode;\n\t\t\tvar w = container ? container.clientWidth : 0;\n\t\t\tlistener(createEvent('resize', chart));\n\t\t\tif (container && container.clientWidth < w && chart.canvas) {\n\t\t\t\t// If the container size shrank during chart resize, let's assume\n\t\t\t\t// scrollbar appeared. So we resize again with the scrollbar visible -\n\t\t\t\t// effectively making chart smaller and the scrollbar hidden again.\n\t\t\t\t// Because we are inside `throttled`, and currently `ticking`, scroll\n\t\t\t\t// events are ignored during this whole 2 resize process.\n\t\t\t\t// If we assumed wrong and something else happened, we are resizing\n\t\t\t\t// twice in a frame (potential performance issue)\n\t\t\t\tlistener(createEvent('resize', chart));\n\t\t\t}\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// https://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\nvar platform_dom$2 = {\n\t/**\n\t * When `true`, prevents the automatic injection of the stylesheet required to\n\t * correctly detect when the chart is added to the DOM and then resized. This\n\t * switch has been added to allow external stylesheet (`dist/Chart(.min)?.js`)\n\t * to be manually imported to make this library compatible with any CSP.\n\t * See https://github.com/chartjs/Chart.js/issues/5208\n\t */\n\tdisableCSSInjection: false,\n\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\t/**\n\t * @private\n\t */\n\t_ensureLoaded: function() {\n\t\tif (this._loaded) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._loaded = true;\n\n\t\t// https://github.com/chartjs/Chart.js/issues/5208\n\t\tif (!this.disableCSSInjection) {\n\t\t\tinjectCSS(this, stylesheet);\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// Load platform resources on first chart creation, to make possible to change\n\t\t// platform options after importing the library (e.g. `disableCSSInjection`).\n\t\tthis._ensureLoaded();\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$1.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$1.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\t// eslint-disable-next-line no-self-assign\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\taddListener(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);\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\tremoveListener(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$1.addEvent = addListener;\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$1.removeEvent = removeListener;\n\n// @TODO Make possible to select another platform at build time.\nvar implementation = platform_dom$2._enabled ? platform_dom$2 : platform_basic;\n\n/**\n * @namespace Chart.platform\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\n * @since 2.4.0\n */\nvar platform = helpers$1.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\ncore_defaults._set('global', {\n\tplugins: {}\n});\n\n/**\n * The plugin service singleton\n * @namespace Chart.plugins\n * @since 2.1.0\n */\nvar core_plugins = {\n\t/**\n\t * Globally registered plugins.\n\t * @private\n\t */\n\t_plugins: [],\n\n\t/**\n\t * This identifier is used to invalidate the descriptors cache attached to each chart\n\t * when a global plugin is registered or unregistered. In this case, the cache ID is\n\t * incremented and descriptors are regenerated during following API calls.\n\t * @private\n\t */\n\t_cacheId: 0,\n\n\t/**\n\t * Registers the given plugin(s) if not already registered.\n\t * @param {IPlugin[]|IPlugin} plugins plugin instance(s).\n\t */\n\tregister: function(plugins) {\n\t\tvar p = this._plugins;\n\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\tif (p.indexOf(plugin) === -1) {\n\t\t\t\tp.push(plugin);\n\t\t\t}\n\t\t});\n\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Unregisters the given plugin(s) only if registered.\n\t * @param {IPlugin[]|IPlugin} plugins plugin instance(s).\n\t */\n\tunregister: function(plugins) {\n\t\tvar p = this._plugins;\n\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\tvar idx = p.indexOf(plugin);\n\t\t\tif (idx !== -1) {\n\t\t\t\tp.splice(idx, 1);\n\t\t\t}\n\t\t});\n\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Remove all registered plugins.\n\t * @since 2.1.5\n\t */\n\tclear: function() {\n\t\tthis._plugins = [];\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Returns the number of registered plugins?\n\t * @returns {number}\n\t * @since 2.1.5\n\t */\n\tcount: function() {\n\t\treturn this._plugins.length;\n\t},\n\n\t/**\n\t * Returns all registered plugin instances.\n\t * @returns {IPlugin[]} array of plugin objects.\n\t * @since 2.1.5\n\t */\n\tgetAll: function() {\n\t\treturn this._plugins;\n\t},\n\n\t/**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Chart} chart - The chart instance for which plugins should be called.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Array} [args] - Extra arguments to apply to the hook call.\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n\tnotify: function(chart, hook, args) {\n\t\tvar descriptors = this.descriptors(chart);\n\t\tvar ilen = descriptors.length;\n\t\tvar i, descriptor, plugin, params, method;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tdescriptor = descriptors[i];\n\t\t\tplugin = descriptor.plugin;\n\t\t\tmethod = plugin[hook];\n\t\t\tif (typeof method === 'function') {\n\t\t\t\tparams = [chart].concat(args || []);\n\t\t\t\tparams.push(descriptor.options);\n\t\t\t\tif (method.apply(plugin, params) === false) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns descriptors of enabled plugins for the given chart.\n\t * @returns {object[]} [{ plugin, options }]\n\t * @private\n\t */\n\tdescriptors: function(chart) {\n\t\tvar cache = chart.$plugins || (chart.$plugins = {});\n\t\tif (cache.id === this._cacheId) {\n\t\t\treturn cache.descriptors;\n\t\t}\n\n\t\tvar plugins = [];\n\t\tvar descriptors = [];\n\t\tvar config = (chart && chart.config) || {};\n\t\tvar options = (config.options && config.options.plugins) || {};\n\n\t\tthis._plugins.concat(config.plugins || []).forEach(function(plugin) {\n\t\t\tvar idx = plugins.indexOf(plugin);\n\t\t\tif (idx !== -1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar id = plugin.id;\n\t\t\tvar opts = options[id];\n\t\t\tif (opts === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (opts === true) {\n\t\t\t\topts = helpers$1.clone(core_defaults.global.plugins[id]);\n\t\t\t}\n\n\t\t\tplugins.push(plugin);\n\t\t\tdescriptors.push({\n\t\t\t\tplugin: plugin,\n\t\t\t\toptions: opts || {}\n\t\t\t});\n\t\t});\n\n\t\tcache.descriptors = descriptors;\n\t\tcache.id = this._cacheId;\n\t\treturn descriptors;\n\t},\n\n\t/**\n\t * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\n\t * but in some cases, this reference can be changed by the user when updating options.\n\t * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\t * @private\n\t */\n\t_invalidate: function(chart) {\n\t\tdelete chart.$plugins;\n\t}\n};\n\nvar core_scaleService = {\n\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\n\t// use the new chart options to grab the correct scale\n\tconstructors: {},\n\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\n\t// old browsers\n\n\t// Scale config defaults\n\tdefaults: {},\n\tregisterScaleType: function(type, scaleConstructor, scaleDefaults) {\n\t\tthis.constructors[type] = scaleConstructor;\n\t\tthis.defaults[type] = helpers$1.clone(scaleDefaults);\n\t},\n\tgetScaleConstructor: function(type) {\n\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\n\t},\n\tgetScaleDefaults: function(type) {\n\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\n\t\treturn this.defaults.hasOwnProperty(type) ? helpers$1.merge({}, [core_defaults.scale, this.defaults[type]]) : {};\n\t},\n\tupdateScaleDefaults: function(type, additions) {\n\t\tvar me = this;\n\t\tif (me.defaults.hasOwnProperty(type)) {\n\t\t\tme.defaults[type] = helpers$1.extend(me.defaults[type], additions);\n\t\t}\n\t},\n\taddScalesToLayout: function(chart) {\n\t\t// Adds each scale to the chart.boxes array to be sized accordingly\n\t\thelpers$1.each(chart.scales, function(scale) {\n\t\t\t// Set ILayoutItem parameters for backwards compatibility\n\t\t\tscale.fullWidth = scale.options.fullWidth;\n\t\t\tscale.position = scale.options.position;\n\t\t\tscale.weight = scale.options.weight;\n\t\t\tcore_layouts.addBox(chart, scale);\n\t\t});\n\t}\n};\n\nvar valueOrDefault$7 = helpers$1.valueOrDefault;\n\ncore_defaults._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$1.noop,\n\t\t\ttitle: function(tooltipItems, data) {\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\t\t\t\t\tif (item.label) {\n\t\t\t\t\t\ttitle = item.label;\n\t\t\t\t\t} else if (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$1.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeBody: helpers$1.noop,\n\n\t\t\t// Args are: (tooltipItem, data)\n\t\t\tbeforeLabel: helpers$1.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\tif (!helpers$1.isNullOrUndef(tooltipItem.value)) {\n\t\t\t\t\tlabel += tooltipItem.value;\n\t\t\t\t} else {\n\t\t\t\t\tlabel += tooltipItem.yLabel;\n\t\t\t\t}\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$1.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tafterBody: helpers$1.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeFooter: helpers$1.noop,\n\t\t\tfooter: helpers$1.noop,\n\t\t\tafterFooter: helpers$1.noop\n\t\t}\n\t}\n});\n\nvar positioners = {\n\t/**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t * @function Chart.Tooltip.positioners.average\n\t * @param elements {ChartElement[]} the elements being displayed in the tooltip\n\t * @returns {object} tooltip position\n\t */\n\taverage: function(elements) {\n\t\tif (!elements.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar i, len;\n\t\tvar x = 0;\n\t\tvar y = 0;\n\t\tvar count = 0;\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()) {\n\t\t\t\tvar pos = el.tooltipPosition();\n\t\t\t\tx += pos.x;\n\t\t\t\ty += pos.y;\n\t\t\t\t++count;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tx: x / count,\n\t\t\ty: y / count\n\t\t};\n\t},\n\n\t/**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t * @function Chart.Tooltip.positioners.nearest\n\t * @param elements {Chart.Element[]} the tooltip elements\n\t * @param eventPosition {object} the position of the event in canvas coordinates\n\t * @returns {object} the tooltip position\n\t */\n\tnearest: function(elements, eventPosition) {\n\t\tvar x = eventPosition.x;\n\t\tvar y = eventPosition.y;\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\n\t\tvar i, len, nearestElement;\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()) {\n\t\t\t\tvar center = el.getCenterPoint();\n\t\t\t\tvar d = helpers$1.distanceBetweenPoints(eventPosition, center);\n\n\t\t\t\tif (d < minDistance) {\n\t\t\t\t\tminDistance = d;\n\t\t\t\t\tnearestElement = el;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (nearestElement) {\n\t\t\tvar tp = nearestElement.tooltipPosition();\n\t\t\tx = tp.x;\n\t\t\ty = tp.y;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t}\n};\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n\tif (toPush) {\n\t\tif (helpers$1.isArray(toPush)) {\n\t\t\t// base = base.concat(toPush);\n\t\t\tArray.prototype.push.apply(base, toPush);\n\t\t} else {\n\t\t\tbase.push(toPush);\n\t\t}\n\t}\n\n\treturn base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {string} value - The value to split by newline.\n * @returns {string[]} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n\tif ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n\t\treturn str.split('\\n');\n\t}\n\treturn str;\n}\n\n\n/**\n * Private helper to create a tooltip item model\n * @param element - the chart element (point, arc, bar) to create the tooltip item for\n * @return new tooltip item\n */\nfunction createTooltipItem(element) {\n\tvar xScale = element._xScale;\n\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\n\tvar index = element._index;\n\tvar datasetIndex = element._datasetIndex;\n\tvar controller = element._chart.getDatasetMeta(datasetIndex).controller;\n\tvar indexScale = controller._getIndexScale();\n\tvar valueScale = controller._getValueScale();\n\n\treturn {\n\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tlabel: indexScale ? '' + indexScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tvalue: valueScale ? '' + valueScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tindex: index,\n\t\tdatasetIndex: datasetIndex,\n\t\tx: element._model.x,\n\t\ty: element._model.y\n\t};\n}\n\n/**\n * Helper to get the reset model for the tooltip\n * @param tooltipOpts {object} the tooltip options\n */\nfunction getBaseModel(tooltipOpts) {\n\tvar globalDefaults = core_defaults.global;\n\n\treturn {\n\t\t// Positioning\n\t\txPadding: tooltipOpts.xPadding,\n\t\tyPadding: tooltipOpts.yPadding,\n\t\txAlign: tooltipOpts.xAlign,\n\t\tyAlign: tooltipOpts.yAlign,\n\n\t\t// Body\n\t\tbodyFontColor: tooltipOpts.bodyFontColor,\n\t\t_bodyFontFamily: valueOrDefault$7(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\n\t\t_bodyFontStyle: valueOrDefault$7(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\n\t\t_bodyAlign: tooltipOpts.bodyAlign,\n\t\tbodyFontSize: valueOrDefault$7(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\n\t\tbodySpacing: tooltipOpts.bodySpacing,\n\n\t\t// Title\n\t\ttitleFontColor: tooltipOpts.titleFontColor,\n\t\t_titleFontFamily: valueOrDefault$7(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\n\t\t_titleFontStyle: valueOrDefault$7(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\n\t\ttitleFontSize: valueOrDefault$7(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\n\t\t_titleAlign: tooltipOpts.titleAlign,\n\t\ttitleSpacing: tooltipOpts.titleSpacing,\n\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\n\n\t\t// Footer\n\t\tfooterFontColor: tooltipOpts.footerFontColor,\n\t\t_footerFontFamily: valueOrDefault$7(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\n\t\t_footerFontStyle: valueOrDefault$7(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\n\t\tfooterFontSize: valueOrDefault$7(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\n\t\t_footerAlign: tooltipOpts.footerAlign,\n\t\tfooterSpacing: tooltipOpts.footerSpacing,\n\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\n\n\t\t// Appearance\n\t\tcaretSize: tooltipOpts.caretSize,\n\t\tcornerRadius: tooltipOpts.cornerRadius,\n\t\tbackgroundColor: tooltipOpts.backgroundColor,\n\t\topacity: 0,\n\t\tlegendColorBackground: tooltipOpts.multiKeyBackground,\n\t\tdisplayColors: tooltipOpts.displayColors,\n\t\tborderColor: tooltipOpts.borderColor,\n\t\tborderWidth: tooltipOpts.borderWidth\n\t};\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, model) {\n\tvar ctx = tooltip._chart.ctx;\n\n\tvar height = model.yPadding * 2; // Tooltip Padding\n\tvar width = 0;\n\n\t// Count of all lines in the body\n\tvar body = model.body;\n\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\n\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\n\t}, 0);\n\tcombinedBodyLength += model.beforeBody.length + model.afterBody.length;\n\n\tvar titleLineCount = model.title.length;\n\tvar footerLineCount = model.footer.length;\n\tvar titleFontSize = model.titleFontSize;\n\tvar bodyFontSize = model.bodyFontSize;\n\tvar footerFontSize = model.footerFontSize;\n\n\theight += titleLineCount * titleFontSize; // Title Lines\n\theight += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\n\theight += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\n\theight += combinedBodyLength * bodyFontSize; // Body Lines\n\theight += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\n\theight += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\n\theight += footerLineCount * (footerFontSize); // Footer Lines\n\theight += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\n\n\t// Title width\n\tvar widthPadding = 0;\n\tvar maxLineWidth = function(line) {\n\t\twidth = Math.max(width, ctx.measureText(line).width + widthPadding);\n\t};\n\n\tctx.font = helpers$1.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\n\thelpers$1.each(model.title, maxLineWidth);\n\n\t// Body width\n\tctx.font = helpers$1.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\n\thelpers$1.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\n\n\t// Body lines may include some extra width due to the color box\n\twidthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\n\thelpers$1.each(body, function(bodyItem) {\n\t\thelpers$1.each(bodyItem.before, maxLineWidth);\n\t\thelpers$1.each(bodyItem.lines, maxLineWidth);\n\t\thelpers$1.each(bodyItem.after, maxLineWidth);\n\t});\n\n\t// Reset back to 0\n\twidthPadding = 0;\n\n\t// Footer width\n\tctx.font = helpers$1.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\n\thelpers$1.each(model.footer, maxLineWidth);\n\n\t// Add padding\n\twidth += 2 * model.xPadding;\n\n\treturn {\n\t\twidth: width,\n\t\theight: height\n\t};\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(tooltip, size) {\n\tvar model = tooltip._model;\n\tvar chart = tooltip._chart;\n\tvar chartArea = tooltip._chart.chartArea;\n\tvar xAlign = 'center';\n\tvar yAlign = 'center';\n\n\tif (model.y < size.height) {\n\t\tyAlign = 'top';\n\t} else if (model.y > (chart.height - size.height)) {\n\t\tyAlign = 'bottom';\n\t}\n\n\tvar lf, rf; // functions to determine left, right alignment\n\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\n\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\n\tvar midX = (chartArea.left + chartArea.right) / 2;\n\tvar midY = (chartArea.top + chartArea.bottom) / 2;\n\n\tif (yAlign === 'center') {\n\t\tlf = function(x) {\n\t\t\treturn x <= midX;\n\t\t};\n\t\trf = function(x) {\n\t\t\treturn x > midX;\n\t\t};\n\t} else {\n\t\tlf = function(x) {\n\t\t\treturn x <= (size.width / 2);\n\t\t};\n\t\trf = function(x) {\n\t\t\treturn x >= (chart.width - (size.width / 2));\n\t\t};\n\t}\n\n\tolf = function(x) {\n\t\treturn x + size.width + model.caretSize + model.caretPadding > chart.width;\n\t};\n\torf = function(x) {\n\t\treturn x - size.width - model.caretSize - model.caretPadding < 0;\n\t};\n\tyf = function(y) {\n\t\treturn y <= midY ? 'top' : 'bottom';\n\t};\n\n\tif (lf(model.x)) {\n\t\txAlign = 'left';\n\n\t\t// Is tooltip too wide and goes over the right side of the chart.?\n\t\tif (olf(model.x)) {\n\t\t\txAlign = 'center';\n\t\t\tyAlign = yf(model.y);\n\t\t}\n\t} else if (rf(model.x)) {\n\t\txAlign = 'right';\n\n\t\t// Is tooltip too wide and goes outside left edge of canvas?\n\t\tif (orf(model.x)) {\n\t\t\txAlign = 'center';\n\t\t\tyAlign = yf(model.y);\n\t\t}\n\t}\n\n\tvar opts = tooltip._options;\n\treturn {\n\t\txAlign: opts.xAlign ? opts.xAlign : xAlign,\n\t\tyAlign: opts.yAlign ? opts.yAlign : yAlign\n\t};\n}\n\n/**\n * 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 */\nfunction getBackgroundPoint(vm, size, alignment, chart) {\n\t// Background Position\n\tvar x = vm.x;\n\tvar y = vm.y;\n\n\tvar caretSize = vm.caretSize;\n\tvar caretPadding = vm.caretPadding;\n\tvar cornerRadius = vm.cornerRadius;\n\tvar xAlign = alignment.xAlign;\n\tvar yAlign = alignment.yAlign;\n\tvar paddingAndSize = caretSize + caretPadding;\n\tvar radiusAndPadding = cornerRadius + caretPadding;\n\n\tif (xAlign === 'right') {\n\t\tx -= size.width;\n\t} else if (xAlign === 'center') {\n\t\tx -= (size.width / 2);\n\t\tif (x + size.width > chart.width) {\n\t\t\tx = chart.width - size.width;\n\t\t}\n\t\tif (x < 0) {\n\t\t\tx = 0;\n\t\t}\n\t}\n\n\tif (yAlign === 'top') {\n\t\ty += paddingAndSize;\n\t} else if (yAlign === 'bottom') {\n\t\ty -= size.height + paddingAndSize;\n\t} else {\n\t\ty -= (size.height / 2);\n\t}\n\n\tif (yAlign === 'center') {\n\t\tif (xAlign === 'left') {\n\t\t\tx += paddingAndSize;\n\t\t} else if (xAlign === 'right') {\n\t\t\tx -= paddingAndSize;\n\t\t}\n\t} else if (xAlign === 'left') {\n\t\tx -= radiusAndPadding;\n\t} else if (xAlign === 'right') {\n\t\tx += radiusAndPadding;\n\t}\n\n\treturn {\n\t\tx: x,\n\t\ty: y\n\t};\n}\n\nfunction getAlignedX(vm, align) {\n\treturn align === 'center'\n\t\t? vm.x + vm.width / 2\n\t\t: align === 'right'\n\t\t\t? vm.x + vm.width - vm.xPadding\n\t\t\t: vm.x + vm.xPadding;\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n\treturn pushOrConcat([], splitNewlines(callback));\n}\n\nvar exports$3 = core_element.extend({\n\tinitialize: function() {\n\t\tthis._model = getBaseModel(this._options);\n\t\tthis._lastActive = [];\n\t},\n\n\t// Get the title\n\t// Args are: (tooltipItem, data)\n\tgetTitle: function() {\n\t\tvar me = this;\n\t\tvar opts = me._options;\n\t\tvar callbacks = opts.callbacks;\n\n\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments);\n\t\tvar title = callbacks.title.apply(me, arguments);\n\t\tvar afterTitle = callbacks.afterTitle.apply(me, arguments);\n\n\t\tvar lines = [];\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeTitle));\n\t\tlines = pushOrConcat(lines, splitNewlines(title));\n\t\tlines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n\t\treturn lines;\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetBeforeBody: function() {\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetBody: function(tooltipItems, data) {\n\t\tvar me = this;\n\t\tvar callbacks = me._options.callbacks;\n\t\tvar bodyItems = [];\n\n\t\thelpers$1.each(tooltipItems, function(tooltipItem) {\n\t\t\tvar bodyItem = {\n\t\t\t\tbefore: [],\n\t\t\t\tlines: [],\n\t\t\t\tafter: []\n\t\t\t};\n\t\t\tpushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\n\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\n\t\t\tpushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\n\n\t\t\tbodyItems.push(bodyItem);\n\t\t});\n\n\t\treturn bodyItems;\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetAfterBody: function() {\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\n\t},\n\n\t// Get the footer and beforeFooter and afterFooter lines\n\t// Args are: (tooltipItem, data)\n\tgetFooter: function() {\n\t\tvar me = this;\n\t\tvar callbacks = me._options.callbacks;\n\n\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\n\t\tvar footer = callbacks.footer.apply(me, arguments);\n\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\n\n\t\tvar lines = [];\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeFooter));\n\t\tlines = pushOrConcat(lines, splitNewlines(footer));\n\t\tlines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n\t\treturn lines;\n\t},\n\n\tupdate: function(changed) {\n\t\tvar me = this;\n\t\tvar opts = me._options;\n\n\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// 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// which breaks any animations.\n\t\tvar existingModel = me._model;\n\t\tvar model = me._model = getBaseModel(opts);\n\t\tvar active = me._active;\n\n\t\tvar data = me._data;\n\n\t\t// In the case where active.length === 0 we need to keep these at existing values for good animations\n\t\tvar alignment = {\n\t\t\txAlign: existingModel.xAlign,\n\t\t\tyAlign: existingModel.yAlign\n\t\t};\n\t\tvar backgroundPoint = {\n\t\t\tx: existingModel.x,\n\t\t\ty: existingModel.y\n\t\t};\n\t\tvar tooltipSize = {\n\t\t\twidth: existingModel.width,\n\t\t\theight: existingModel.height\n\t\t};\n\t\tvar tooltipPosition = {\n\t\t\tx: existingModel.caretX,\n\t\t\ty: existingModel.caretY\n\t\t};\n\n\t\tvar i, len;\n\n\t\tif (active.length) {\n\t\t\tmodel.opacity = 1;\n\n\t\t\tvar labelColors = [];\n\t\t\tvar labelTextColors = [];\n\t\t\ttooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\n\n\t\t\tvar tooltipItems = [];\n\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\n\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\n\t\t\t}\n\n\t\t\t// If the user provided a filter function, use it to modify the tooltip items\n\t\t\tif (opts.filter) {\n\t\t\t\ttooltipItems = tooltipItems.filter(function(a) {\n\t\t\t\t\treturn opts.filter(a, data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\n\t\t\tif (opts.itemSort) {\n\t\t\t\ttooltipItems = tooltipItems.sort(function(a, b) {\n\t\t\t\t\treturn opts.itemSort(a, b, data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Determine colors for boxes\n\t\t\thelpers$1.each(tooltipItems, function(tooltipItem) {\n\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\n\t\t\t\tlabelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\n\t\t\t});\n\n\n\t\t\t// Build the Text Lines\n\t\t\tmodel.title = me.getTitle(tooltipItems, data);\n\t\t\tmodel.beforeBody = me.getBeforeBody(tooltipItems, data);\n\t\t\tmodel.body = me.getBody(tooltipItems, data);\n\t\t\tmodel.afterBody = me.getAfterBody(tooltipItems, data);\n\t\t\tmodel.footer = me.getFooter(tooltipItems, data);\n\n\t\t\t// Initial positioning and colors\n\t\t\tmodel.x = tooltipPosition.x;\n\t\t\tmodel.y = tooltipPosition.y;\n\t\t\tmodel.caretPadding = opts.caretPadding;\n\t\t\tmodel.labelColors = labelColors;\n\t\t\tmodel.labelTextColors = labelTextColors;\n\n\t\t\t// data points\n\t\t\tmodel.dataPoints = tooltipItems;\n\n\t\t\t// We need to determine alignment of the tooltip\n\t\t\ttooltipSize = getTooltipSize(this, model);\n\t\t\talignment = determineAlignment(this, tooltipSize);\n\t\t\t// Final Size and Position\n\t\t\tbackgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\n\t\t} else {\n\t\t\tmodel.opacity = 0;\n\t\t}\n\n\t\tmodel.xAlign = alignment.xAlign;\n\t\tmodel.yAlign = alignment.yAlign;\n\t\tmodel.x = backgroundPoint.x;\n\t\tmodel.y = backgroundPoint.y;\n\t\tmodel.width = tooltipSize.width;\n\t\tmodel.height = tooltipSize.height;\n\n\t\t// Point where the caret on the tooltip points to\n\t\tmodel.caretX = tooltipPosition.x;\n\t\tmodel.caretY = tooltipPosition.y;\n\n\t\tme._model = model;\n\n\t\tif (changed && opts.custom) {\n\t\t\topts.custom.call(me, model);\n\t\t}\n\n\t\treturn me;\n\t},\n\n\tdrawCaret: function(tooltipPoint, size) {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\n\n\t\tctx.lineTo(caretPosition.x1, caretPosition.y1);\n\t\tctx.lineTo(caretPosition.x2, caretPosition.y2);\n\t\tctx.lineTo(caretPosition.x3, caretPosition.y3);\n\t},\n\tgetCaretPosition: function(tooltipPoint, size, vm) {\n\t\tvar x1, x2, x3, y1, y2, y3;\n\t\tvar caretSize = vm.caretSize;\n\t\tvar cornerRadius = vm.cornerRadius;\n\t\tvar xAlign = vm.xAlign;\n\t\tvar yAlign = vm.yAlign;\n\t\tvar ptX = tooltipPoint.x;\n\t\tvar ptY = tooltipPoint.y;\n\t\tvar width = size.width;\n\t\tvar height = size.height;\n\n\t\tif (yAlign === 'center') {\n\t\t\ty2 = ptY + (height / 2);\n\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx1 = ptX;\n\t\t\t\tx2 = x1 - caretSize;\n\t\t\t\tx3 = x1;\n\n\t\t\t\ty1 = y2 + caretSize;\n\t\t\t\ty3 = y2 - caretSize;\n\t\t\t} else {\n\t\t\t\tx1 = ptX + width;\n\t\t\t\tx2 = x1 + caretSize;\n\t\t\t\tx3 = x1;\n\n\t\t\t\ty1 = y2 - caretSize;\n\t\t\t\ty3 = y2 + caretSize;\n\t\t\t}\n\t\t} else {\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx2 = ptX + cornerRadius + (caretSize);\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t} else if (xAlign === 'right') {\n\t\t\t\tx2 = ptX + width - cornerRadius - caretSize;\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t} else {\n\t\t\t\tx2 = vm.caretX;\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t}\n\t\t\tif (yAlign === 'top') {\n\t\t\t\ty1 = ptY;\n\t\t\t\ty2 = y1 - caretSize;\n\t\t\t\ty3 = y1;\n\t\t\t} else {\n\t\t\t\ty1 = ptY + height;\n\t\t\t\ty2 = y1 + caretSize;\n\t\t\t\ty3 = y1;\n\t\t\t\t// invert drawing order\n\t\t\t\tvar tmp = x3;\n\t\t\t\tx3 = x1;\n\t\t\t\tx1 = tmp;\n\t\t\t}\n\t\t}\n\t\treturn {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\n\t},\n\n\tdrawTitle: function(pt, vm, ctx) {\n\t\tvar title = vm.title;\n\n\t\tif (title.length) {\n\t\t\tpt.x = getAlignedX(vm, vm._titleAlign);\n\n\t\t\tctx.textAlign = vm._titleAlign;\n\t\t\tctx.textBaseline = 'top';\n\n\t\t\tvar titleFontSize = vm.titleFontSize;\n\t\t\tvar titleSpacing = vm.titleSpacing;\n\n\t\t\tctx.fillStyle = vm.titleFontColor;\n\t\t\tctx.font = helpers$1.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\n\n\t\t\tvar i, len;\n\t\t\tfor (i = 0, len = title.length; i < len; ++i) {\n\t\t\t\tctx.fillText(title[i], pt.x, pt.y);\n\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\n\n\t\t\t\tif (i + 1 === title.length) {\n\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tdrawBody: function(pt, vm, ctx) {\n\t\tvar bodyFontSize = vm.bodyFontSize;\n\t\tvar bodySpacing = vm.bodySpacing;\n\t\tvar bodyAlign = vm._bodyAlign;\n\t\tvar body = vm.body;\n\t\tvar drawColorBoxes = vm.displayColors;\n\t\tvar labelColors = vm.labelColors;\n\t\tvar xLinePadding = 0;\n\t\tvar colorX = drawColorBoxes ? getAlignedX(vm, 'left') : 0;\n\t\tvar textColor;\n\n\t\tctx.textAlign = bodyAlign;\n\t\tctx.textBaseline = 'top';\n\t\tctx.font = helpers$1.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\n\n\t\tpt.x = getAlignedX(vm, bodyAlign);\n\n\t\t// Before Body\n\t\tvar fillLineOfText = function(line) {\n\t\t\tctx.fillText(line, pt.x + xLinePadding, pt.y);\n\t\t\tpt.y += bodyFontSize + bodySpacing;\n\t\t};\n\n\t\t// Before body lines\n\t\tctx.fillStyle = vm.bodyFontColor;\n\t\thelpers$1.each(vm.beforeBody, fillLineOfText);\n\n\t\txLinePadding = drawColorBoxes && bodyAlign !== 'right'\n\t\t\t? bodyAlign === 'center' ? (bodyFontSize / 2 + 1) : (bodyFontSize + 2)\n\t\t\t: 0;\n\n\t\t// Draw body lines now\n\t\thelpers$1.each(body, function(bodyItem, i) {\n\t\t\ttextColor = vm.labelTextColors[i];\n\t\t\tctx.fillStyle = textColor;\n\t\t\thelpers$1.each(bodyItem.before, fillLineOfText);\n\n\t\t\thelpers$1.each(bodyItem.lines, function(line) {\n\t\t\t\t// Draw Legend-like boxes if needed\n\t\t\t\tif (drawColorBoxes) {\n\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\n\t\t\t\t\tctx.fillStyle = vm.legendColorBackground;\n\t\t\t\t\tctx.fillRect(colorX, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t// Border\n\t\t\t\t\tctx.lineWidth = 1;\n\t\t\t\t\tctx.strokeStyle = labelColors[i].borderColor;\n\t\t\t\t\tctx.strokeRect(colorX, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t// Inner square\n\t\t\t\t\tctx.fillStyle = labelColors[i].backgroundColor;\n\t\t\t\t\tctx.fillRect(colorX + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\n\t\t\t\t\tctx.fillStyle = textColor;\n\t\t\t\t}\n\n\t\t\t\tfillLineOfText(line);\n\t\t\t});\n\n\t\t\thelpers$1.each(bodyItem.after, fillLineOfText);\n\t\t});\n\n\t\t// Reset back to 0 for after body\n\t\txLinePadding = 0;\n\n\t\t// After body lines\n\t\thelpers$1.each(vm.afterBody, fillLineOfText);\n\t\tpt.y -= bodySpacing; // Remove last body spacing\n\t},\n\n\tdrawFooter: function(pt, vm, ctx) {\n\t\tvar footer = vm.footer;\n\n\t\tif (footer.length) {\n\t\t\tpt.x = getAlignedX(vm, vm._footerAlign);\n\t\t\tpt.y += vm.footerMarginTop;\n\n\t\t\tctx.textAlign = vm._footerAlign;\n\t\t\tctx.textBaseline = 'top';\n\n\t\t\tctx.fillStyle = vm.footerFontColor;\n\t\t\tctx.font = helpers$1.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\n\n\t\t\thelpers$1.each(footer, function(line) {\n\t\t\t\tctx.fillText(line, pt.x, pt.y);\n\t\t\t\tpt.y += vm.footerFontSize + vm.footerSpacing;\n\t\t\t});\n\t\t}\n\t},\n\n\tdrawBackground: function(pt, vm, ctx, tooltipSize) {\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = vm.borderWidth;\n\t\tvar xAlign = vm.xAlign;\n\t\tvar yAlign = vm.yAlign;\n\t\tvar x = pt.x;\n\t\tvar y = pt.y;\n\t\tvar width = tooltipSize.width;\n\t\tvar height = tooltipSize.height;\n\t\tvar radius = vm.cornerRadius;\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x + radius, y);\n\t\tif (yAlign === 'top') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + width - radius, y);\n\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n\t\tif (yAlign === 'center' && xAlign === 'right') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + width, y + height - radius);\n\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n\t\tif (yAlign === 'bottom') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + radius, y + height);\n\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n\t\tif (yAlign === 'center' && xAlign === 'left') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x, y + radius);\n\t\tctx.quadraticCurveTo(x, y, x + radius, y);\n\t\tctx.closePath();\n\n\t\tctx.fill();\n\n\t\tif (vm.borderWidth > 0) {\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\n\t\tif (vm.opacity === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar tooltipSize = {\n\t\t\twidth: vm.width,\n\t\t\theight: vm.height\n\t\t};\n\t\tvar pt = {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\n\t\t// IE11/Edge does not like very small opacities, so snap to 0\n\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\n\n\t\t// Truthy/falsey value for empty tooltip\n\t\tvar hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\n\n\t\tif (this._options.enabled && hasTooltipContent) {\n\t\t\tctx.save();\n\t\t\tctx.globalAlpha = opacity;\n\n\t\t\t// Draw Background\n\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize);\n\n\t\t\t// Draw Title, Body, and Footer\n\t\t\tpt.y += vm.yPadding;\n\n\t\t\t// Titles\n\t\t\tthis.drawTitle(pt, vm, ctx);\n\n\t\t\t// Body\n\t\t\tthis.drawBody(pt, vm, ctx);\n\n\t\t\t// Footer\n\t\t\tthis.drawFooter(pt, vm, ctx);\n\n\t\t\tctx.restore();\n\t\t}\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event - The event to handle\n\t * @returns {boolean} true if the tooltip changed\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar options = me._options;\n\t\tvar changed = false;\n\n\t\tme._lastActive = me._lastActive || [];\n\n\t\t// Find Active Elements for tooltips\n\t\tif (e.type === 'mouseout') {\n\t\t\tme._active = [];\n\t\t} else {\n\t\t\tme._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\n\t\t}\n\n\t\t// Remember Last Actives\n\t\tchanged = !helpers$1.arrayEquals(me._active, me._lastActive);\n\n\t\t// Only handle target event on tooltip change\n\t\tif (changed) {\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\tme.update(true);\n\t\t\t\tme.pivot();\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t}\n});\n\n/**\n * @namespace Chart.Tooltip.positioners\n */\nvar positioners_1 = positioners;\n\nvar core_tooltip = exports$3;\ncore_tooltip.positioners = positioners_1;\n\nvar valueOrDefault$8 = helpers$1.valueOrDefault;\n\ncore_defaults._set('global', {\n\telements: {},\n\tevents: [\n\t\t'mousemove',\n\t\t'mouseout',\n\t\t'click',\n\t\t'touchstart',\n\t\t'touchmove'\n\t],\n\thover: {\n\t\tonHover: null,\n\t\tmode: 'nearest',\n\t\tintersect: true,\n\t\tanimationDuration: 400\n\t},\n\tonClick: null,\n\tmaintainAspectRatio: true,\n\tresponsive: true,\n\tresponsiveAnimationDuration: 0\n});\n\n/**\n * Recursively merge the given config objects representing the `scales` option\n * by incorporating scale defaults in `xAxes` and `yAxes` array items, then\n * returns a deep copy of the result, thus doesn't alter inputs.\n */\nfunction mergeScaleConfig(/* config objects ... */) {\n\treturn helpers$1.merge({}, [].slice.call(arguments), {\n\t\tmerger: function(key, target, source, options) {\n\t\t\tif (key === 'xAxes' || key === 'yAxes') {\n\t\t\t\tvar slen = source[key].length;\n\t\t\t\tvar i, type, scale;\n\n\t\t\t\tif (!target[key]) {\n\t\t\t\t\ttarget[key] = [];\n\t\t\t\t}\n\n\t\t\t\tfor (i = 0; i < slen; ++i) {\n\t\t\t\t\tscale = source[key][i];\n\t\t\t\t\ttype = valueOrDefault$8(scale.type, key === 'xAxes' ? 'category' : 'linear');\n\n\t\t\t\t\tif (i >= target[key].length) {\n\t\t\t\t\t\ttarget[key].push({});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {\n\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// then merge source scale to correctly overwrite the defaults.\n\t\t\t\t\t\thelpers$1.merge(target[key][i], [core_scaleService.getScaleDefaults(type), scale]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// scales type are the same\n\t\t\t\t\t\thelpers$1.merge(target[key][i], scale);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\thelpers$1._merger(key, target, source, options);\n\t\t\t}\n\t\t}\n\t});\n}\n\n/**\n * Recursively merge the given config objects as the root options by handling\n * default scale options for the `scales` and `scale` properties, then returns\n * a deep copy of the result, thus doesn't alter inputs.\n */\nfunction mergeConfig(/* config objects ... */) {\n\treturn helpers$1.merge({}, [].slice.call(arguments), {\n\t\tmerger: function(key, target, source, options) {\n\t\t\tvar tval = target[key] || {};\n\t\t\tvar sval = source[key];\n\n\t\t\tif (key === 'scales') {\n\t\t\t\t// scale config merging is complex. Add our own function here for that\n\t\t\t\ttarget[key] = mergeScaleConfig(tval, sval);\n\t\t\t} else if (key === 'scale') {\n\t\t\t\t// used in polar area & radar charts since there is only one scale\n\t\t\t\ttarget[key] = helpers$1.merge(tval, [core_scaleService.getScaleDefaults(sval.type), sval]);\n\t\t\t} else {\n\t\t\t\thelpers$1._merger(key, target, source, options);\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction initConfig(config) {\n\tconfig = config || {};\n\n\t// Do NOT use mergeConfig for the data object because this method merges arrays\n\t// and so would change references to labels and datasets, preventing data updates.\n\tvar data = config.data = config.data || {};\n\tdata.datasets = data.datasets || [];\n\tdata.labels = data.labels || [];\n\n\tconfig.options = mergeConfig(\n\t\tcore_defaults.global,\n\t\tcore_defaults[config.type],\n\t\tconfig.options || {});\n\n\treturn config;\n}\n\nfunction updateConfig(chart) {\n\tvar newOptions = chart.options;\n\n\thelpers$1.each(chart.scales, function(scale) {\n\t\tcore_layouts.removeBox(chart, scale);\n\t});\n\n\tnewOptions = mergeConfig(\n\t\tcore_defaults.global,\n\t\tcore_defaults[chart.config.type],\n\t\tnewOptions);\n\n\tchart.options = chart.config.options = newOptions;\n\tchart.ensureScalesHaveIDs();\n\tchart.buildOrUpdateScales();\n\n\t// Tooltip\n\tchart.tooltip._options = newOptions.tooltips;\n\tchart.tooltip.initialize();\n}\n\nfunction positionIsHorizontal(position) {\n\treturn position === 'top' || position === 'bottom';\n}\n\nvar Chart = function(item, config) {\n\tthis.construct(item, config);\n\treturn this;\n};\n\nhelpers$1.extend(Chart.prototype, /** @lends Chart */ {\n\t/**\n\t * @private\n\t */\n\tconstruct: function(item, config) {\n\t\tvar me = this;\n\n\t\tconfig = initConfig(config);\n\n\t\tvar context = platform.acquireContext(item, config);\n\t\tvar canvas = context && context.canvas;\n\t\tvar height = canvas && canvas.height;\n\t\tvar width = canvas && canvas.width;\n\n\t\tme.id = helpers$1.uid();\n\t\tme.ctx = context;\n\t\tme.canvas = canvas;\n\t\tme.config = config;\n\t\tme.width = width;\n\t\tme.height = height;\n\t\tme.aspectRatio = height ? width / height : null;\n\t\tme.options = config.options;\n\t\tme._bufferedRender = false;\n\n\t\t/**\n\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\n\t\t * the \"instance\" still need to be defined since it might be called from plugins.\n\t\t * @prop Chart#chart\n\t\t * @deprecated since version 2.6.0\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\tme.chart = me;\n\t\tme.controller = me; // chart.chart.controller #inception\n\n\t\t// Add the chart instance to the global namespace\n\t\tChart.instances[me.id] = me;\n\n\t\t// Define alias to the config data: `chart.data === chart.config.data`\n\t\tObject.defineProperty(me, 'data', {\n\t\t\tget: function() {\n\t\t\t\treturn me.config.data;\n\t\t\t},\n\t\t\tset: function(value) {\n\t\t\t\tme.config.data = value;\n\t\t\t}\n\t\t});\n\n\t\tif (!context || !canvas) {\n\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\n\t\t\t// the chart initialization but after setting basic chart / controller properties that\n\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\n\t\t\treturn;\n\t\t}\n\n\t\tme.initialize();\n\t\tme.update();\n\t},\n\n\t/**\n\t * @private\n\t */\n\tinitialize: function() {\n\t\tvar me = this;\n\n\t\t// Before init plugin notification\n\t\tcore_plugins.notify(me, 'beforeInit');\n\n\t\thelpers$1.retinaScale(me, me.options.devicePixelRatio);\n\n\t\tme.bindEvents();\n\n\t\tif (me.options.responsive) {\n\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\n\t\t\tme.resize(true);\n\t\t}\n\n\t\t// Make sure scales have IDs and are built before we build any controllers.\n\t\tme.ensureScalesHaveIDs();\n\t\tme.buildOrUpdateScales();\n\t\tme.initToolTip();\n\n\t\t// After init plugin notification\n\t\tcore_plugins.notify(me, 'afterInit');\n\n\t\treturn me;\n\t},\n\n\tclear: function() {\n\t\thelpers$1.canvas.clear(this);\n\t\treturn this;\n\t},\n\n\tstop: function() {\n\t\t// Stops any current animation loop occurring\n\t\tcore_animations.cancelAnimation(this);\n\t\treturn this;\n\t},\n\n\tresize: function(silent) {\n\t\tvar me = this;\n\t\tvar options = me.options;\n\t\tvar canvas = me.canvas;\n\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\n\n\t\t// the canvas render width and height will be casted to integers so make sure that\n\t\t// the canvas display style uses the same integer values to avoid blurring effect.\n\n\t\t// Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\n\t\tvar newWidth = Math.max(0, Math.floor(helpers$1.getMaximumWidth(canvas)));\n\t\tvar newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers$1.getMaximumHeight(canvas)));\n\n\t\tif (me.width === newWidth && me.height === newHeight) {\n\t\t\treturn;\n\t\t}\n\n\t\tcanvas.width = me.width = newWidth;\n\t\tcanvas.height = me.height = newHeight;\n\t\tcanvas.style.width = newWidth + 'px';\n\t\tcanvas.style.height = newHeight + 'px';\n\n\t\thelpers$1.retinaScale(me, options.devicePixelRatio);\n\n\t\tif (!silent) {\n\t\t\t// Notify any plugins about the resize\n\t\t\tvar newSize = {width: newWidth, height: newHeight};\n\t\t\tcore_plugins.notify(me, 'resize', [newSize]);\n\n\t\t\t// Notify of resize\n\t\t\tif (options.onResize) {\n\t\t\t\toptions.onResize(me, newSize);\n\t\t\t}\n\n\t\t\tme.stop();\n\t\t\tme.update({\n\t\t\t\tduration: options.responsiveAnimationDuration\n\t\t\t});\n\t\t}\n\t},\n\n\tensureScalesHaveIDs: function() {\n\t\tvar options = this.options;\n\t\tvar scalesOptions = options.scales || {};\n\t\tvar scaleOptions = options.scale;\n\n\t\thelpers$1.each(scalesOptions.xAxes, function(xAxisOptions, index) {\n\t\t\txAxisOptions.id = xAxisOptions.id || ('x-axis-' + index);\n\t\t});\n\n\t\thelpers$1.each(scalesOptions.yAxes, function(yAxisOptions, index) {\n\t\t\tyAxisOptions.id = yAxisOptions.id || ('y-axis-' + index);\n\t\t});\n\n\t\tif (scaleOptions) {\n\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\n\t\t}\n\t},\n\n\t/**\n\t * Builds a map of scale ID to scale object for future lookup.\n\t */\n\tbuildOrUpdateScales: function() {\n\t\tvar me = this;\n\t\tvar options = me.options;\n\t\tvar scales = me.scales || {};\n\t\tvar items = [];\n\t\tvar updated = Object.keys(scales).reduce(function(obj, id) {\n\t\t\tobj[id] = false;\n\t\t\treturn obj;\n\t\t}, {});\n\n\t\tif (options.scales) {\n\t\t\titems = items.concat(\n\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\n\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\n\t\t\t\t}),\n\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\n\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tif (options.scale) {\n\t\t\titems.push({\n\t\t\t\toptions: options.scale,\n\t\t\t\tdtype: 'radialLinear',\n\t\t\t\tisDefault: true,\n\t\t\t\tdposition: 'chartArea'\n\t\t\t});\n\t\t}\n\n\t\thelpers$1.each(items, function(item) {\n\t\t\tvar scaleOptions = item.options;\n\t\t\tvar id = scaleOptions.id;\n\t\t\tvar scaleType = valueOrDefault$8(scaleOptions.type, item.dtype);\n\n\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\n\t\t\t\tscaleOptions.position = item.dposition;\n\t\t\t}\n\n\t\t\tupdated[id] = true;\n\t\t\tvar scale = null;\n\t\t\tif (id in scales && scales[id].type === scaleType) {\n\t\t\t\tscale = scales[id];\n\t\t\t\tscale.options = scaleOptions;\n\t\t\t\tscale.ctx = me.ctx;\n\t\t\t\tscale.chart = me;\n\t\t\t} else {\n\t\t\t\tvar scaleClass = core_scaleService.getScaleConstructor(scaleType);\n\t\t\t\tif (!scaleClass) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tscale = new scaleClass({\n\t\t\t\t\tid: id,\n\t\t\t\t\ttype: scaleType,\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\t\t\t\tscales[scale.id] = scale;\n\t\t\t}\n\n\t\t\tscale.mergeTicksOptions();\n\n\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\n\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\n\t\t\t// make the logic easier and remove some useless? custom code.\n\t\t\tif (item.isDefault) {\n\t\t\t\tme.scale = scale;\n\t\t\t}\n\t\t});\n\t\t// clear up discarded scales\n\t\thelpers$1.each(updated, function(hasUpdated, id) {\n\t\t\tif (!hasUpdated) {\n\t\t\t\tdelete scales[id];\n\t\t\t}\n\t\t});\n\n\t\tme.scales = scales;\n\n\t\tcore_scaleService.addScalesToLayout(this);\n\t},\n\n\tbuildOrUpdateControllers: function() {\n\t\tvar me = this;\n\t\tvar newControllers = [];\n\n\t\thelpers$1.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\n\t\t\tvar type = dataset.type || me.config.type;\n\n\t\t\tif (meta.type && meta.type !== type) {\n\t\t\t\tme.destroyDatasetMeta(datasetIndex);\n\t\t\t\tmeta = me.getDatasetMeta(datasetIndex);\n\t\t\t}\n\t\t\tmeta.type = type;\n\n\t\t\tif (meta.controller) {\n\t\t\t\tmeta.controller.updateIndex(datasetIndex);\n\t\t\t\tmeta.controller.linkScales();\n\t\t\t} else {\n\t\t\t\tvar ControllerClass = controllers[meta.type];\n\t\t\t\tif (ControllerClass === undefined) {\n\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\n\t\t\t\t}\n\n\t\t\t\tmeta.controller = new ControllerClass(me, datasetIndex);\n\t\t\t\tnewControllers.push(meta.controller);\n\t\t\t}\n\t\t}, me);\n\n\t\treturn newControllers;\n\t},\n\n\t/**\n\t * Reset the elements of all datasets\n\t * @private\n\t */\n\tresetElements: function() {\n\t\tvar me = this;\n\t\thelpers$1.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\n\t\t}, me);\n\t},\n\n\t/**\n\t* Resets the chart back to it's state before the initial animation\n\t*/\n\treset: function() {\n\t\tthis.resetElements();\n\t\tthis.tooltip.initialize();\n\t},\n\n\tupdate: function(config) {\n\t\tvar me = this;\n\n\t\tif (!config || typeof config !== 'object') {\n\t\t\t// backwards compatibility\n\t\t\tconfig = {\n\t\t\t\tduration: config,\n\t\t\t\tlazy: arguments[1]\n\t\t\t};\n\t\t}\n\n\t\tupdateConfig(me);\n\n\t\t// plugins options references might have change, let's invalidate the cache\n\t\t// https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\t\tcore_plugins._invalidate(me);\n\n\t\tif (core_plugins.notify(me, 'beforeUpdate') === false) {\n\t\t\treturn;\n\t\t}\n\n\t\t// In case the entire data object changed\n\t\tme.tooltip._data = me.data;\n\n\t\t// Make sure dataset controllers are updated and new controllers are reset\n\t\tvar newControllers = me.buildOrUpdateControllers();\n\n\t\t// Make sure all dataset controllers have correct meta data counts\n\t\thelpers$1.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\tme.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();\n\t\t}, me);\n\n\t\tme.updateLayout();\n\n\t\t// Can only reset the new controllers after the scales have been updated\n\t\tif (me.options.animation && me.options.animation.duration) {\n\t\t\thelpers$1.each(newControllers, function(controller) {\n\t\t\t\tcontroller.reset();\n\t\t\t});\n\t\t}\n\n\t\tme.updateDatasets();\n\n\t\t// Need to reset tooltip in case it is displayed with elements that are removed\n\t\t// after update.\n\t\tme.tooltip.initialize();\n\n\t\t// Last active contains items that were previously in the tooltip.\n\t\t// When we reset the tooltip, we need to clear it\n\t\tme.lastActive = [];\n\n\t\t// Do this before render so that any plugins that need final scale updates can use it\n\t\tcore_plugins.notify(me, 'afterUpdate');\n\n\t\tif (me._bufferedRender) {\n\t\t\tme._bufferedRequest = {\n\t\t\t\tduration: config.duration,\n\t\t\t\teasing: config.easing,\n\t\t\t\tlazy: config.lazy\n\t\t\t};\n\t\t} else {\n\t\t\tme.render(config);\n\t\t}\n\t},\n\n\t/**\n\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t * @private\n\t */\n\tupdateLayout: function() {\n\t\tvar me = this;\n\n\t\tif (core_plugins.notify(me, 'beforeLayout') === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tcore_layouts.update(this, this.width, this.height);\n\n\t\t/**\n\t\t * Provided for backward compatibility, use `afterLayout` instead.\n\t\t * @method IPlugin#afterScaleUpdate\n\t\t * @deprecated since version 2.5.0\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\tcore_plugins.notify(me, 'afterScaleUpdate');\n\t\tcore_plugins.notify(me, 'afterLayout');\n\t},\n\n\t/**\n\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t * @private\n\t */\n\tupdateDatasets: function() {\n\t\tvar me = this;\n\n\t\tif (core_plugins.notify(me, 'beforeDatasetsUpdate') === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\tme.updateDataset(i);\n\t\t}\n\n\t\tcore_plugins.notify(me, 'afterDatasetsUpdate');\n\t},\n\n\t/**\n\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t * @private\n\t */\n\tupdateDataset: function(index) {\n\t\tvar me = this;\n\t\tvar meta = me.getDatasetMeta(index);\n\t\tvar args = {\n\t\t\tmeta: meta,\n\t\t\tindex: index\n\t\t};\n\n\t\tif (core_plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tmeta.controller.update();\n\n\t\tcore_plugins.notify(me, 'afterDatasetUpdate', [args]);\n\t},\n\n\trender: function(config) {\n\t\tvar me = this;\n\n\t\tif (!config || typeof config !== 'object') {\n\t\t\t// backwards compatibility\n\t\t\tconfig = {\n\t\t\t\tduration: config,\n\t\t\t\tlazy: arguments[1]\n\t\t\t};\n\t\t}\n\n\t\tvar animationOptions = me.options.animation;\n\t\tvar duration = valueOrDefault$8(config.duration, animationOptions && animationOptions.duration);\n\t\tvar lazy = config.lazy;\n\n\t\tif (core_plugins.notify(me, 'beforeRender') === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar onComplete = function(animation) {\n\t\t\tcore_plugins.notify(me, 'afterRender');\n\t\t\thelpers$1.callback(animationOptions && animationOptions.onComplete, [animation], me);\n\t\t};\n\n\t\tif (animationOptions && duration) {\n\t\t\tvar animation = new core_animation({\n\t\t\t\tnumSteps: duration / 16.66, // 60 fps\n\t\t\t\teasing: config.easing || animationOptions.easing,\n\n\t\t\t\trender: function(chart, animationObject) {\n\t\t\t\t\tvar easingFunction = helpers$1.easing.effects[animationObject.easing];\n\t\t\t\t\tvar currentStep = animationObject.currentStep;\n\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\n\n\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\n\t\t\t\t},\n\n\t\t\t\tonAnimationProgress: animationOptions.onProgress,\n\t\t\t\tonAnimationComplete: onComplete\n\t\t\t});\n\n\t\t\tcore_animations.addAnimation(me, animation, duration, lazy);\n\t\t} else {\n\t\t\tme.draw();\n\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\n\t\t\tonComplete(new core_animation({numSteps: 0, chart: me}));\n\t\t}\n\n\t\treturn me;\n\t},\n\n\tdraw: function(easingValue) {\n\t\tvar me = this;\n\n\t\tme.clear();\n\n\t\tif (helpers$1.isNullOrUndef(easingValue)) {\n\t\t\teasingValue = 1;\n\t\t}\n\n\t\tme.transition(easingValue);\n\n\t\tif (me.width <= 0 || me.height <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (core_plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Draw all the scales\n\t\thelpers$1.each(me.boxes, function(box) {\n\t\t\tbox.draw(me.chartArea);\n\t\t}, me);\n\n\t\tme.drawDatasets(easingValue);\n\t\tme._drawTooltip(easingValue);\n\n\t\tcore_plugins.notify(me, 'afterDraw', [easingValue]);\n\t},\n\n\t/**\n\t * @private\n\t */\n\ttransition: function(easingValue) {\n\t\tvar me = this;\n\n\t\tfor (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\n\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\n\t\t\t}\n\t\t}\n\n\t\tme.tooltip.transition(easingValue);\n\t},\n\n\t/**\n\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t * @private\n\t */\n\tdrawDatasets: function(easingValue) {\n\t\tvar me = this;\n\n\t\tif (core_plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Draw datasets reversed to support proper line stacking\n\t\tfor (var i = (me.data.datasets || []).length - 1; i >= 0; --i) {\n\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\tme.drawDataset(i, easingValue);\n\t\t\t}\n\t\t}\n\n\t\tcore_plugins.notify(me, 'afterDatasetsDraw', [easingValue]);\n\t},\n\n\t/**\n\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t * @private\n\t */\n\tdrawDataset: function(index, easingValue) {\n\t\tvar me = this;\n\t\tvar meta = me.getDatasetMeta(index);\n\t\tvar args = {\n\t\t\tmeta: meta,\n\t\t\tindex: index,\n\t\t\teasingValue: easingValue\n\t\t};\n\n\t\tif (core_plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tmeta.controller.draw(easingValue);\n\n\t\tcore_plugins.notify(me, 'afterDatasetDraw', [args]);\n\t},\n\n\t/**\n\t * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\n\t * hook, in which case, plugins will not be called on `afterTooltipDraw`.\n\t * @private\n\t */\n\t_drawTooltip: function(easingValue) {\n\t\tvar me = this;\n\t\tvar tooltip = me.tooltip;\n\t\tvar args = {\n\t\t\ttooltip: tooltip,\n\t\t\teasingValue: easingValue\n\t\t};\n\n\t\tif (core_plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\n\t\t\treturn;\n\t\t}\n\n\t\ttooltip.draw();\n\n\t\tcore_plugins.notify(me, 'afterTooltipDraw', [args]);\n\t},\n\n\t/**\n\t * Get the single element that was clicked on\n\t * @return An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\n\t */\n\tgetElementAtEvent: function(e) {\n\t\treturn core_interaction.modes.single(this, e);\n\t},\n\n\tgetElementsAtEvent: function(e) {\n\t\treturn core_interaction.modes.label(this, e, {intersect: true});\n\t},\n\n\tgetElementsAtXAxis: function(e) {\n\t\treturn core_interaction.modes['x-axis'](this, e, {intersect: true});\n\t},\n\n\tgetElementsAtEventForMode: function(e, mode, options) {\n\t\tvar method = core_interaction.modes[mode];\n\t\tif (typeof method === 'function') {\n\t\t\treturn method(this, e, options);\n\t\t}\n\n\t\treturn [];\n\t},\n\n\tgetDatasetAtEvent: function(e) {\n\t\treturn core_interaction.modes.dataset(this, e, {intersect: true});\n\t},\n\n\tgetDatasetMeta: function(datasetIndex) {\n\t\tvar me = this;\n\t\tvar dataset = me.data.datasets[datasetIndex];\n\t\tif (!dataset._meta) {\n\t\t\tdataset._meta = {};\n\t\t}\n\n\t\tvar meta = dataset._meta[me.id];\n\t\tif (!meta) {\n\t\t\tmeta = dataset._meta[me.id] = {\n\t\t\t\ttype: null,\n\t\t\t\tdata: [],\n\t\t\t\tdataset: null,\n\t\t\t\tcontroller: null,\n\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\n\t\t\t\txAxisID: null,\n\t\t\t\tyAxisID: null\n\t\t\t};\n\t\t}\n\n\t\treturn meta;\n\t},\n\n\tgetVisibleDatasetCount: function() {\n\t\tvar count = 0;\n\t\tfor (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n\t\t\tif (this.isDatasetVisible(i)) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t}\n\t\treturn count;\n\t},\n\n\tisDatasetVisible: function(datasetIndex) {\n\t\tvar meta = this.getDatasetMeta(datasetIndex);\n\n\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n\t\treturn typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\n\t},\n\n\tgenerateLegend: function() {\n\t\treturn this.options.legendCallback(this);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tdestroyDatasetMeta: function(datasetIndex) {\n\t\tvar id = this.id;\n\t\tvar dataset = this.data.datasets[datasetIndex];\n\t\tvar meta = dataset._meta && dataset._meta[id];\n\n\t\tif (meta) {\n\t\t\tmeta.controller.destroy();\n\t\t\tdelete dataset._meta[id];\n\t\t}\n\t},\n\n\tdestroy: function() {\n\t\tvar me = this;\n\t\tvar canvas = me.canvas;\n\t\tvar i, ilen;\n\n\t\tme.stop();\n\n\t\t// dataset controllers need to cleanup associated data\n\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\tme.destroyDatasetMeta(i);\n\t\t}\n\n\t\tif (canvas) {\n\t\t\tme.unbindEvents();\n\t\t\thelpers$1.canvas.clear(me);\n\t\t\tplatform.releaseContext(me.ctx);\n\t\t\tme.canvas = null;\n\t\t\tme.ctx = null;\n\t\t}\n\n\t\tcore_plugins.notify(me, 'destroy');\n\n\t\tdelete Chart.instances[me.id];\n\t},\n\n\ttoBase64Image: function() {\n\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\n\t},\n\n\tinitToolTip: function() {\n\t\tvar me = this;\n\t\tme.tooltip = new core_tooltip({\n\t\t\t_chart: me,\n\t\t\t_chartInstance: me, // deprecated, backward compatibility\n\t\t\t_data: me.data,\n\t\t\t_options: me.options.tooltips\n\t\t}, me);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tbindEvents: function() {\n\t\tvar me = this;\n\t\tvar listeners = me._listeners = {};\n\t\tvar listener = function() {\n\t\t\tme.eventHandler.apply(me, arguments);\n\t\t};\n\n\t\thelpers$1.each(me.options.events, function(type) {\n\t\t\tplatform.addEventListener(me, type, listener);\n\t\t\tlisteners[type] = listener;\n\t\t});\n\n\t\t// Elements used to detect size change should not be injected for non responsive charts.\n\t\t// See https://github.com/chartjs/Chart.js/issues/2210\n\t\tif (me.options.responsive) {\n\t\t\tlistener = function() {\n\t\t\t\tme.resize();\n\t\t\t};\n\n\t\t\tplatform.addEventListener(me, 'resize', listener);\n\t\t\tlisteners.resize = listener;\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tunbindEvents: function() {\n\t\tvar me = this;\n\t\tvar listeners = me._listeners;\n\t\tif (!listeners) {\n\t\t\treturn;\n\t\t}\n\n\t\tdelete me._listeners;\n\t\thelpers$1.each(listeners, function(listener, type) {\n\t\t\tplatform.removeEventListener(me, type, listener);\n\t\t});\n\t},\n\n\tupdateHoverStyle: function(elements, mode, enabled) {\n\t\tvar method = enabled ? 'setHoverStyle' : 'removeHoverStyle';\n\t\tvar element, i, ilen;\n\n\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\n\t\t\telement = elements[i];\n\t\t\tif (element) {\n\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[method](element);\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\teventHandler: function(e) {\n\t\tvar me = this;\n\t\tvar tooltip = me.tooltip;\n\n\t\tif (core_plugins.notify(me, 'beforeEvent', [e]) === false) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Buffer any update calls so that renders do not occur\n\t\tme._bufferedRender = true;\n\t\tme._bufferedRequest = null;\n\n\t\tvar changed = me.handleEvent(e);\n\t\t// for smooth tooltip animations issue #4989\n\t\t// the tooltip should be the source of change\n\t\t// Animation check workaround:\n\t\t// tooltip._start will be null when tooltip isn't animating\n\t\tif (tooltip) {\n\t\t\tchanged = tooltip._start\n\t\t\t\t? tooltip.handleEvent(e)\n\t\t\t\t: changed | tooltip.handleEvent(e);\n\t\t}\n\n\t\tcore_plugins.notify(me, 'afterEvent', [e]);\n\n\t\tvar bufferedRequest = me._bufferedRequest;\n\t\tif (bufferedRequest) {\n\t\t\t// If we have an update that was triggered, we need to do a normal render\n\t\t\tme.render(bufferedRequest);\n\t\t} else if (changed && !me.animating) {\n\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\n\t\t\tme.stop();\n\n\t\t\t// We only need to render at this point. Updating will cause scales to be\n\t\t\t// recomputed generating flicker & using more memory than necessary.\n\t\t\tme.render({\n\t\t\t\tduration: me.options.hover.animationDuration,\n\t\t\t\tlazy: true\n\t\t\t});\n\t\t}\n\n\t\tme._bufferedRender = false;\n\t\tme._bufferedRequest = null;\n\n\t\treturn me;\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event the event to handle\n\t * @return {boolean} true if the chart needs to re-render\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar options = me.options || {};\n\t\tvar hoverOptions = options.hover;\n\t\tvar changed = false;\n\n\t\tme.lastActive = me.lastActive || [];\n\n\t\t// Find Active Elements for hover and tooltips\n\t\tif (e.type === 'mouseout') {\n\t\t\tme.active = [];\n\t\t} else {\n\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\n\t\t}\n\n\t\t// Invoke onHover hook\n\t\t// Need to call with native event here to not break backwards compatibility\n\t\thelpers$1.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\n\n\t\tif (e.type === 'mouseup' || e.type === 'click') {\n\t\t\tif (options.onClick) {\n\t\t\t\t// Use e.native here for backwards compatibility\n\t\t\t\toptions.onClick.call(me, e.native, me.active);\n\t\t\t}\n\t\t}\n\n\t\t// Remove styling for last active (even if it may still be active)\n\t\tif (me.lastActive.length) {\n\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\n\t\t}\n\n\t\t// Built in hover styling\n\t\tif (me.active.length && hoverOptions.mode) {\n\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\n\t\t}\n\n\t\tchanged = !helpers$1.arrayEquals(me.active, me.lastActive);\n\n\t\t// Remember Last Actives\n\t\tme.lastActive = me.active;\n\n\t\treturn changed;\n\t}\n});\n\n/**\n * NOTE(SB) We actually don't use this container anymore but we need to keep it\n * for backward compatibility. Though, it can still be useful for plugins that\n * would need to work on multiple charts?!\n */\nChart.instances = {};\n\nvar core_controller = Chart;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart instead.\n * @class Chart.Controller\n * @deprecated since version 2.6\n * @todo remove at version 3\n * @private\n */\nChart.Controller = Chart;\n\n/**\n * Provided for backward compatibility, not available anymore.\n * @namespace Chart\n * @deprecated since version 2.8\n * @todo remove at version 3\n * @private\n */\nChart.types = {};\n\n/**\n * Provided for backward compatibility, not available anymore.\n * @namespace Chart.helpers.configMerge\n * @deprecated since version 2.8.0\n * @todo remove at version 3\n * @private\n */\nhelpers$1.configMerge = mergeConfig;\n\n/**\n * Provided for backward compatibility, not available anymore.\n * @namespace Chart.helpers.scaleMerge\n * @deprecated since version 2.8.0\n * @todo remove at version 3\n * @private\n */\nhelpers$1.scaleMerge = mergeScaleConfig;\n\nvar core_helpers = function() {\n\n\t// -- Basic js utility methods\n\n\thelpers$1.where = function(collection, filterCallback) {\n\t\tif (helpers$1.isArray(collection) && Array.prototype.filter) {\n\t\t\treturn collection.filter(filterCallback);\n\t\t}\n\t\tvar filtered = [];\n\n\t\thelpers$1.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$1.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$1.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to start of the array\n\t\tif (helpers$1.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$1.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to end of the array\n\t\tif (helpers$1.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$1.isNumber = function(n) {\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\n\t};\n\thelpers$1.almostEquals = function(x, y, epsilon) {\n\t\treturn Math.abs(x - y) < epsilon;\n\t};\n\thelpers$1.almostWhole = function(x, epsilon) {\n\t\tvar rounded = Math.round(x);\n\t\treturn (((rounded - epsilon) < x) && ((rounded + epsilon) > x));\n\t};\n\thelpers$1.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$1.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$1.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$1.log10 = Math.log10 ?\n\t\tfunction(x) {\n\t\t\treturn Math.log10(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\n\t\t\t// Check for whole powers of 10,\n\t\t\t// which due to floating point rounding error should be corrected.\n\t\t\tvar powerOf10 = Math.round(exponent);\n\t\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\n\n\t\t\treturn isPowerOf10 ? powerOf10 : exponent;\n\t\t};\n\thelpers$1.toRadians = function(degrees) {\n\t\treturn degrees * (Math.PI / 180);\n\t};\n\thelpers$1.toDegrees = function(radians) {\n\t\treturn radians * (180 / Math.PI);\n\t};\n\n\t/**\n\t * Returns the number of decimal places\n\t * i.e. the number of digits after the decimal point, of the value of this Number.\n\t * @param {number} x - A number.\n\t * @returns {number} The number of decimal places.\n\t * @private\n\t */\n\thelpers$1._decimalPlaces = function(x) {\n\t\tif (!helpers$1.isFinite(x)) {\n\t\t\treturn;\n\t\t}\n\t\tvar e = 1;\n\t\tvar p = 0;\n\t\twhile (Math.round(x * e) / e !== x) {\n\t\t\te *= 10;\n\t\t\tp++;\n\t\t}\n\t\treturn p;\n\t};\n\n\t// Gets the angle from vertical upright to the point about a centre.\n\thelpers$1.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$1.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\n\t/**\n\t * Provided for backward compatibility, not available anymore\n\t * @function Chart.helpers.aliasPixel\n\t * @deprecated since version 2.8.0\n\t * @todo remove at version 3\n\t */\n\thelpers$1.aliasPixel = function(pixelWidth) {\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\n\t};\n\n\t/**\n\t * Returns the aligned pixel value to avoid anti-aliasing blur\n\t * @param {Chart} chart - The chart instance.\n\t * @param {number} pixel - A pixel value.\n\t * @param {number} width - The width of the element.\n\t * @returns {number} The aligned pixel value.\n\t * @private\n\t */\n\thelpers$1._alignPixel = function(chart, pixel, width) {\n\t\tvar devicePixelRatio = chart.currentDevicePixelRatio;\n\t\tvar halfWidth = width / 2;\n\t\treturn Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n\t};\n\n\thelpers$1.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$1.EPSILON = Number.EPSILON || 1e-14;\n\thelpers$1.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$1.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$1.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$1.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$1.niceNum = function(range, round) {\n\t\tvar exponent = Math.floor(helpers$1.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 - https://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\n\thelpers$1.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$1.getRelativePosition = function(evt, chart) {\n\t\tvar mouseX, mouseY;\n\t\tvar e = evt.originalEvent || evt;\n\t\tvar canvas = evt.target || 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// https://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\n\t\tvar paddingLeft = parseFloat(helpers$1.getStyle(canvas, 'padding-left'));\n\t\tvar paddingTop = parseFloat(helpers$1.getStyle(canvas, 'padding-top'));\n\t\tvar paddingRight = parseFloat(helpers$1.getStyle(canvas, 'padding-right'));\n\t\tvar paddingBottom = parseFloat(helpers$1.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/**\n\t * Returns the max width or height of the given DOM node in a cross-browser compatible fashion\n\t * @param {HTMLElement} domNode - the node to check the constraint on\n\t * @param {string} maxStyle - the style that defines the maximum for the direction we are using ('max-width' / 'max-height')\n\t * @param {string} percentageProperty - property of parent to use when calculating width as a percentage\n\t * @see {@link https://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser}\n\t */\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\n\t\tvar view = document.defaultView;\n\t\tvar parentNode = helpers$1._getParentNode(domNode);\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$1.getConstraintWidth = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\n\t};\n\t// returns Number or undefined if no constraint\n\thelpers$1.getConstraintHeight = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\n\t};\n\t/**\n\t * @private\n \t */\n\thelpers$1._calculatePadding = function(container, padding, parentDimension) {\n\t\tpadding = helpers$1.getStyle(container, padding);\n\n\t\treturn padding.indexOf('%') > -1 ? parentDimension * parseInt(padding, 10) / 100 : parseInt(padding, 10);\n\t};\n\t/**\n\t * @private\n\t */\n\thelpers$1._getParentNode = function(domNode) {\n\t\tvar parent = domNode.parentNode;\n\t\tif (parent && parent.toString() === '[object ShadowRoot]') {\n\t\t\tparent = parent.host;\n\t\t}\n\t\treturn parent;\n\t};\n\thelpers$1.getMaximumWidth = function(domNode) {\n\t\tvar container = helpers$1._getParentNode(domNode);\n\t\tif (!container) {\n\t\t\treturn domNode.clientWidth;\n\t\t}\n\n\t\tvar clientWidth = container.clientWidth;\n\t\tvar paddingLeft = helpers$1._calculatePadding(container, 'padding-left', clientWidth);\n\t\tvar paddingRight = helpers$1._calculatePadding(container, 'padding-right', clientWidth);\n\n\t\tvar w = clientWidth - paddingLeft - paddingRight;\n\t\tvar cw = helpers$1.getConstraintWidth(domNode);\n\t\treturn isNaN(cw) ? w : Math.min(w, cw);\n\t};\n\thelpers$1.getMaximumHeight = function(domNode) {\n\t\tvar container = helpers$1._getParentNode(domNode);\n\t\tif (!container) {\n\t\t\treturn domNode.clientHeight;\n\t\t}\n\n\t\tvar clientHeight = container.clientHeight;\n\t\tvar paddingTop = helpers$1._calculatePadding(container, 'padding-top', clientHeight);\n\t\tvar paddingBottom = helpers$1._calculatePadding(container, 'padding-bottom', clientHeight);\n\n\t\tvar h = clientHeight - paddingTop - paddingBottom;\n\t\tvar ch = helpers$1.getConstraintHeight(domNode);\n\t\treturn isNaN(ch) ? h : Math.min(h, ch);\n\t};\n\thelpers$1.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$1.retinaScale = function(chart, forceRatio) {\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && 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\tif (!canvas.style.height && !canvas.style.width) {\n\t\t\tcanvas.style.height = height + 'px';\n\t\t\tcanvas.style.width = width + 'px';\n\t\t}\n\t};\n\t// -- Canvas methods\n\thelpers$1.fontString = function(pixelSize, fontStyle, fontFamily) {\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n\t};\n\thelpers$1.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$1.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$1.isArray(thing) !== true) {\n\t\t\t\tlongest = helpers$1.measureText(ctx, data, gc, longest, thing);\n\t\t\t} else if (helpers$1.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$1.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$1.isArray(nestedThing)) {\n\t\t\t\t\t\tlongest = helpers$1.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$1.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$1.numberOfLabelLines = function(arrayOfThings) {\n\t\tvar numberOfLines = 1;\n\t\thelpers$1.each(arrayOfThings, function(thing) {\n\t\t\tif (helpers$1.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$1.color = !chartjsColor ?\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 = core_defaults.global.defaultColor;\n\t\t\t}\n\n\t\t\treturn chartjsColor(value);\n\t\t};\n\n\thelpers$1.getHoverColor = function(colorValue) {\n\t\t/* global CanvasPattern */\n\t\treturn (colorValue instanceof CanvasPattern || colorValue instanceof CanvasGradient) ?\n\t\t\tcolorValue :\n\t\t\thelpers$1.color(colorValue).saturate(0.5).darken(0.1).rgbString();\n\t};\n};\n\nfunction abstract() {\n\tthrow new Error(\n\t\t'This method is not implemented: either no adapter can ' +\n\t\t'be found or an incomplete integration was provided.'\n\t);\n}\n\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */\n\n/**\n * Currently supported unit string values.\n * @typedef {('millisecond'|'second'|'minute'|'hour'|'day'|'week'|'month'|'quarter'|'year')}\n * @memberof Chart._adapters._date\n * @name Unit\n */\n\n/**\n * @class\n */\nfunction DateAdapter(options) {\n\tthis.options = options || {};\n}\n\nhelpers$1.extend(DateAdapter.prototype, /** @lends DateAdapter */ {\n\t/**\n\t * Returns a map of time formats for the supported formatting units defined\n\t * in Unit as well as 'datetime' representing a detailed date/time string.\n\t * @returns {{string: string}}\n\t */\n\tformats: abstract,\n\n\t/**\n\t * Parses the given `value` and return the associated timestamp.\n\t * @param {any} value - the value to parse (usually comes from the data)\n\t * @param {string} [format] - the expected data format\n\t * @returns {(number|null)}\n\t * @function\n\t */\n\tparse: abstract,\n\n\t/**\n\t * Returns the formatted date in the specified `format` for a given `timestamp`.\n\t * @param {number} timestamp - the timestamp to format\n\t * @param {string} format - the date/time token\n\t * @return {string}\n\t * @function\n\t */\n\tformat: abstract,\n\n\t/**\n\t * Adds the specified `amount` of `unit` to the given `timestamp`.\n\t * @param {number} timestamp - the input timestamp\n\t * @param {number} amount - the amount to add\n\t * @param {Unit} unit - the unit as string\n\t * @return {number}\n\t * @function\n\t */\n\tadd: abstract,\n\n\t/**\n\t * Returns the number of `unit` between the given timestamps.\n\t * @param {number} max - the input timestamp (reference)\n\t * @param {number} min - the timestamp to substract\n\t * @param {Unit} unit - the unit as string\n\t * @return {number}\n\t * @function\n\t */\n\tdiff: abstract,\n\n\t/**\n\t * Returns start of `unit` for the given `timestamp`.\n\t * @param {number} timestamp - the input timestamp\n\t * @param {Unit} unit - the unit as string\n\t * @param {number} [weekday] - the ISO day of the week with 1 being Monday\n\t * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\n\t * @function\n\t */\n\tstartOf: abstract,\n\n\t/**\n\t * Returns end of `unit` for the given `timestamp`.\n\t * @param {number} timestamp - the input timestamp\n\t * @param {Unit} unit - the unit as string\n\t * @function\n\t */\n\tendOf: abstract,\n\n\t// DEPRECATIONS\n\n\t/**\n\t * Provided for backward compatibility for scale.getValueForPixel(),\n\t * this method should be overridden only by the moment adapter.\n\t * @deprecated since version 2.8.0\n\t * @todo remove at version 3\n\t * @private\n\t */\n\t_create: function(value) {\n\t\treturn value;\n\t}\n});\n\nDateAdapter.override = function(members) {\n\thelpers$1.extend(DateAdapter.prototype, members);\n};\n\nvar _date = DateAdapter;\n\nvar core_adapters = {\n\t_date: _date\n};\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nvar core_ticks = {\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|string[]} the label to display\n\t\t */\n\t\tvalues: function(value) {\n\t\t\treturn helpers$1.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 {number[]} 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$1.log10(Math.abs(delta));\n\t\t\tvar tickString = '';\n\n\t\t\tif (tickValue !== 0) {\n\t\t\t\tvar maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\n\t\t\t\tif (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation\n\t\t\t\t\tvar logTick = helpers$1.log10(Math.abs(tickValue));\n\t\t\t\t\ttickString = tickValue.toExponential(Math.floor(logTick) - Math.floor(logDelta));\n\t\t\t\t} else {\n\t\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\n\t\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\n\t\t\t\t\ttickString = tickValue.toFixed(numDecimal);\n\t\t\t\t}\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$1.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\nvar valueOrDefault$9 = helpers$1.valueOrDefault;\nvar valueAtIndexOrDefault = helpers$1.valueAtIndexOrDefault;\n\ncore_defaults._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// 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: core_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 getPixelForGridLine(scale, index, offsetGridLines) {\n\tvar lineValue = scale.getPixelForTick(index);\n\n\tif (offsetGridLines) {\n\t\tif (scale.getTicks().length === 1) {\n\t\t\tlineValue -= scale.isHorizontal() ?\n\t\t\t\tMath.max(lineValue - scale.left, scale.right - lineValue) :\n\t\t\t\tMath.max(lineValue - scale.top, scale.bottom - lineValue);\n\t\t} else if (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\nfunction computeTextSize(context, tick, font) {\n\treturn helpers$1.isArray(tick) ?\n\t\thelpers$1.longestText(context, font, tick) :\n\t\tcontext.measureText(tick).width;\n}\n\nvar core_scale = core_element.extend({\n\t/**\n\t * Get the padding needed for the scale\n\t * @method getPadding\n\t * @private\n\t * @returns {Padding} the necessary padding\n\t */\n\tgetPadding: function() {\n\t\tvar me = this;\n\t\treturn {\n\t\t\tleft: me.paddingLeft || 0,\n\t\t\ttop: me.paddingTop || 0,\n\t\t\tright: me.paddingRight || 0,\n\t\t\tbottom: me.paddingBottom || 0\n\t\t};\n\t},\n\n\t/**\n\t * Returns the scale tick objects ({label, major})\n\t * @since 2.7\n\t */\n\tgetTicks: function() {\n\t\treturn this._ticks;\n\t},\n\n\t// These methods are ordered by lifecyle. Utilities then follow.\n\t// Any function defined here is inherited by all scale types.\n\t// Any function can be extended by the scale type\n\n\tmergeTicksOptions: function() {\n\t\tvar ticks = this.options.ticks;\n\t\tif (ticks.minor === false) {\n\t\t\tticks.minor = {\n\t\t\t\tdisplay: false\n\t\t\t};\n\t\t}\n\t\tif (ticks.major === false) {\n\t\t\tticks.major = {\n\t\t\t\tdisplay: false\n\t\t\t};\n\t\t}\n\t\tfor (var key in ticks) {\n\t\t\tif (key !== 'major' && key !== 'minor') {\n\t\t\t\tif (typeof ticks.minor[key] === 'undefined') {\n\t\t\t\t\tticks.minor[key] = ticks[key];\n\t\t\t\t}\n\t\t\t\tif (typeof ticks.major[key] === 'undefined') {\n\t\t\t\t\tticks.major[key] = ticks[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tbeforeUpdate: function() {\n\t\thelpers$1.callback(this.options.beforeUpdate, [this]);\n\t},\n\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\t\tvar i, ilen, labels, label, ticks, tick;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = helpers$1.extend({\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\ttop: 0,\n\t\t\tbottom: 0\n\t\t}, margins);\n\n\t\tme._maxLabelLines = 0;\n\t\tme.longestLabelWidth = 0;\n\t\tme.longestTextCache = me.longestTextCache || {};\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\n\t\t// Data min/max\n\t\tme.beforeDataLimits();\n\t\tme.determineDataLimits();\n\t\tme.afterDataLimits();\n\n\t\t// Ticks - `this.ticks` is now DEPRECATED!\n\t\t// Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\n\t\t// and must not be accessed directly from outside this class. `this.ticks` being\n\t\t// around for long time and not marked as private, we can't change its structure\n\t\t// without unexpected breaking changes. If you need to access the scale ticks,\n\t\t// use scale.getTicks() instead.\n\n\t\tme.beforeBuildTicks();\n\n\t\t// New implementations should return an array of objects but for BACKWARD COMPAT,\n\t\t// we still support no return (`this.ticks` internally set by calling this method).\n\t\tticks = me.buildTicks() || [];\n\n\t\t// Allow modification of ticks in callback.\n\t\tticks = me.afterBuildTicks(ticks) || ticks;\n\n\t\tme.beforeTickToLabelConversion();\n\n\t\t// New implementations should return the formatted tick labels but for BACKWARD\n\t\t// COMPAT, we still support no return (`this.ticks` internally changed by calling\n\t\t// this method and supposed to contain only string values).\n\t\tlabels = me.convertTicksToLabels(ticks) || me.ticks;\n\n\t\tme.afterTickToLabelConversion();\n\n\t\tme.ticks = labels; // BACKWARD COMPATIBILITY\n\n\t\t// IMPORTANT: from this point, we consider that `this.ticks` will NEVER change!\n\n\t\t// BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\t\tlabel = labels[i];\n\t\t\ttick = ticks[i];\n\t\t\tif (!tick) {\n\t\t\t\tticks.push(tick = {\n\t\t\t\t\tlabel: label,\n\t\t\t\t\tmajor: false\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttick.label = label;\n\t\t\t}\n\t\t}\n\n\t\tme._ticks = ticks;\n\n\t\t// Tick Rotation\n\t\tme.beforeCalculateTickRotation();\n\t\tme.calculateTickRotation();\n\t\tme.afterCalculateTickRotation();\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\n\t},\n\tafterUpdate: function() {\n\t\thelpers$1.callback(this.options.afterUpdate, [this]);\n\t},\n\n\t//\n\n\tbeforeSetDimensions: function() {\n\t\thelpers$1.callback(this.options.beforeSetDimensions, [this]);\n\t},\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\t},\n\tafterSetDimensions: function() {\n\t\thelpers$1.callback(this.options.afterSetDimensions, [this]);\n\t},\n\n\t// Data limits\n\tbeforeDataLimits: function() {\n\t\thelpers$1.callback(this.options.beforeDataLimits, [this]);\n\t},\n\tdetermineDataLimits: helpers$1.noop,\n\tafterDataLimits: function() {\n\t\thelpers$1.callback(this.options.afterDataLimits, [this]);\n\t},\n\n\t//\n\tbeforeBuildTicks: function() {\n\t\thelpers$1.callback(this.options.beforeBuildTicks, [this]);\n\t},\n\tbuildTicks: helpers$1.noop,\n\tafterBuildTicks: function(ticks) {\n\t\tvar me = this;\n\t\t// ticks is empty for old axis implementations here\n\t\tif (helpers$1.isArray(ticks) && ticks.length) {\n\t\t\treturn helpers$1.callback(me.options.afterBuildTicks, [me, ticks]);\n\t\t}\n\t\t// Support old implementations (that modified `this.ticks` directly in buildTicks)\n\t\tme.ticks = helpers$1.callback(me.options.afterBuildTicks, [me, me.ticks]) || me.ticks;\n\t\treturn ticks;\n\t},\n\n\tbeforeTickToLabelConversion: function() {\n\t\thelpers$1.callback(this.options.beforeTickToLabelConversion, [this]);\n\t},\n\tconvertTicksToLabels: function() {\n\t\tvar me = this;\n\t\t// Convert ticks to strings\n\t\tvar tickOpts = me.options.ticks;\n\t\tme.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\n\t},\n\tafterTickToLabelConversion: function() {\n\t\thelpers$1.callback(this.options.afterTickToLabelConversion, [this]);\n\t},\n\n\t//\n\n\tbeforeCalculateTickRotation: function() {\n\t\thelpers$1.callback(this.options.beforeCalculateTickRotation, [this]);\n\t},\n\tcalculateTickRotation: function() {\n\t\tvar me = this;\n\t\tvar context = me.ctx;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar labels = labelsFromTicks(me._ticks);\n\n\t\t// Get the width of each grid by calculating the difference\n\t\t// between x offsets between 0 and 1.\n\t\tvar tickFont = helpers$1.options._parseFont(tickOpts);\n\t\tcontext.font = tickFont.string;\n\n\t\tvar labelRotation = tickOpts.minRotation || 0;\n\n\t\tif (labels.length && me.options.display && me.isHorizontal()) {\n\t\t\tvar originalLabelWidth = helpers$1.longestText(context, tickFont.string, labels, me.longestTextCache);\n\t\t\tvar labelWidth = originalLabelWidth;\n\t\t\tvar cosRotation, sinRotation;\n\n\t\t\t// Allow 3 pixels x2 padding either side for label readability\n\t\t\tvar tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6;\n\n\t\t\t// Max label rotation can be set or default to 90 - also act as a loop counter\n\t\t\twhile (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) {\n\t\t\t\tvar angleRadians = helpers$1.toRadians(labelRotation);\n\t\t\t\tcosRotation = Math.cos(angleRadians);\n\t\t\t\tsinRotation = Math.sin(angleRadians);\n\n\t\t\t\tif (sinRotation * originalLabelWidth > me.maxHeight) {\n\t\t\t\t\t// go back one step\n\t\t\t\t\tlabelRotation--;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tlabelRotation++;\n\t\t\t\tlabelWidth = cosRotation * originalLabelWidth;\n\t\t\t}\n\t\t}\n\n\t\tme.labelRotation = labelRotation;\n\t},\n\tafterCalculateTickRotation: function() {\n\t\thelpers$1.callback(this.options.afterCalculateTickRotation, [this]);\n\t},\n\n\t//\n\n\tbeforeFit: function() {\n\t\thelpers$1.callback(this.options.beforeFit, [this]);\n\t},\n\tfit: function() {\n\t\tvar me = this;\n\t\t// Reset\n\t\tvar minSize = me.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\n\t\tvar labels = labelsFromTicks(me._ticks);\n\n\t\tvar opts = me.options;\n\t\tvar tickOpts = opts.ticks;\n\t\tvar scaleLabelOpts = opts.scaleLabel;\n\t\tvar gridLineOpts = opts.gridLines;\n\t\tvar display = me._isVisible();\n\t\tvar position = opts.position;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tvar parseFont = helpers$1.options._parseFont;\n\t\tvar tickFont = parseFont(tickOpts);\n\t\tvar tickMarkLength = opts.gridLines.tickMarkLength;\n\n\t\t// Width\n\t\tif (isHorizontal) {\n\t\t\t// subtract the margins to line up with the chartArea if we are a full width scale\n\t\t\tminSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth;\n\t\t} else {\n\t\t\tminSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t}\n\n\t\t// height\n\t\tif (isHorizontal) {\n\t\t\tminSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t} else {\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\t// Are we showing a title for the scale?\n\t\tif (scaleLabelOpts.display && display) {\n\t\t\tvar scaleLabelFont = parseFont(scaleLabelOpts);\n\t\t\tvar scaleLabelPadding = helpers$1.options.toPadding(scaleLabelOpts.padding);\n\t\t\tvar deltaHeight = scaleLabelFont.lineHeight + scaleLabelPadding.height;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize.height += deltaHeight;\n\t\t\t} else {\n\t\t\t\tminSize.width += deltaHeight;\n\t\t\t}\n\t\t}\n\n\t\t// Don't bother fitting the ticks if we are not showing the labels\n\t\tif (tickOpts.display && display) {\n\t\t\tvar largestTextWidth = helpers$1.longestText(me.ctx, tickFont.string, labels, me.longestTextCache);\n\t\t\tvar tallestLabelHeightInLines = helpers$1.numberOfLabelLines(labels);\n\t\t\tvar lineSpace = tickFont.size * 0.5;\n\t\t\tvar tickPadding = me.options.ticks.padding;\n\n\t\t\t// Store max number of lines and widest label for _autoSkip\n\t\t\tme._maxLabelLines = tallestLabelHeightInLines;\n\t\t\tme.longestLabelWidth = largestTextWidth;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tvar angleRadians = helpers$1.toRadians(me.labelRotation);\n\t\t\t\tvar cosRotation = Math.cos(angleRadians);\n\t\t\t\tvar sinRotation = Math.sin(angleRadians);\n\n\t\t\t\t// TODO - improve this calculation\n\t\t\t\tvar labelHeight = (sinRotation * largestTextWidth)\n\t\t\t\t\t+ (tickFont.lineHeight * tallestLabelHeightInLines)\n\t\t\t\t\t+ lineSpace; // padding\n\n\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\n\n\t\t\t\tme.ctx.font = tickFont.string;\n\t\t\t\tvar firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.string);\n\t\t\t\tvar lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.string);\n\t\t\t\tvar offsetLeft = me.getPixelForTick(0) - me.left;\n\t\t\t\tvar offsetRight = me.right - me.getPixelForTick(labels.length - 1);\n\t\t\t\tvar paddingLeft, paddingRight;\n\n\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n\t\t\t\t// which means that the right padding is dominated by the font height\n\t\t\t\tif (me.labelRotation !== 0) {\n\t\t\t\t\tpaddingLeft = position === 'bottom' ? (cosRotation * firstLabelWidth) : (cosRotation * lineSpace);\n\t\t\t\t\tpaddingRight = position === 'bottom' ? (cosRotation * lineSpace) : (cosRotation * lastLabelWidth);\n\t\t\t\t} else {\n\t\t\t\t\tpaddingLeft = firstLabelWidth / 2;\n\t\t\t\t\tpaddingRight = lastLabelWidth / 2;\n\t\t\t\t}\n\t\t\t\tme.paddingLeft = Math.max(paddingLeft - offsetLeft, 0) + 3; // add 3 px to move away from canvas edges\n\t\t\t\tme.paddingRight = Math.max(paddingRight - offsetRight, 0) + 3;\n\t\t\t} else {\n\t\t\t\t// A vertical axis is more constrained by the width. Labels are the\n\t\t\t\t// dominant factor here, so get that length first and account for padding\n\t\t\t\tif (tickOpts.mirror) {\n\t\t\t\t\tlargestTextWidth = 0;\n\t\t\t\t} else {\n\t\t\t\t\t// use lineSpace for consistency with horizontal axis\n\t\t\t\t\t// tickPadding is not implemented for horizontal\n\t\t\t\t\tlargestTextWidth += tickPadding + lineSpace;\n\t\t\t\t}\n\n\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth);\n\n\t\t\t\tme.paddingTop = tickFont.size / 2;\n\t\t\t\tme.paddingBottom = tickFont.size / 2;\n\t\t\t}\n\t\t}\n\n\t\tme.handleMargins();\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\t},\n\n\t/**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n\thandleMargins: function() {\n\t\tvar me = this;\n\t\tif (me.margins) {\n\t\t\tme.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0);\n\t\t\tme.paddingTop = Math.max(me.paddingTop - me.margins.top, 0);\n\t\t\tme.paddingRight = Math.max(me.paddingRight - me.margins.right, 0);\n\t\t\tme.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0);\n\t\t}\n\t},\n\n\tafterFit: function() {\n\t\thelpers$1.callback(this.options.afterFit, [this]);\n\t},\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t},\n\tisFullWidth: function() {\n\t\treturn (this.options.fullWidth);\n\t},\n\n\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\tgetRightValue: function(rawValue) {\n\t\t// Null and undefined values first\n\t\tif (helpers$1.isNullOrUndef(rawValue)) {\n\t\t\treturn NaN;\n\t\t}\n\t\t// isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\n\t\tif ((typeof rawValue === 'number' || rawValue instanceof Number) && !isFinite(rawValue)) {\n\t\t\treturn NaN;\n\t\t}\n\t\t// If it is in fact an object, dive in one more level\n\t\tif (rawValue) {\n\t\t\tif (this.isHorizontal()) {\n\t\t\t\tif (rawValue.x !== undefined) {\n\t\t\t\t\treturn this.getRightValue(rawValue.x);\n\t\t\t\t}\n\t\t\t} else if (rawValue.y !== undefined) {\n\t\t\t\treturn this.getRightValue(rawValue.y);\n\t\t\t}\n\t\t}\n\n\t\t// Value is good, return it\n\t\treturn rawValue;\n\t},\n\n\t/**\n\t * Used to get the value to display in the tooltip for the data at the given index\n\t * @param index\n\t * @param datasetIndex\n\t */\n\tgetLabelForIndex: helpers$1.noop,\n\n\t/**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param value\n\t * @param index\n\t * @param datasetIndex\n\t */\n\tgetPixelForValue: helpers$1.noop,\n\n\t/**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param pixel\n\t */\n\tgetValueForPixel: helpers$1.noop,\n\n\t/**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetPixelForTick: function(index) {\n\t\tvar me = this;\n\t\tvar offset = me.options.offset;\n\t\tif (me.isHorizontal()) {\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\tvar tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n\t\t\tvar pixel = (tickWidth * index) + me.paddingLeft;\n\n\t\t\tif (offset) {\n\t\t\t\tpixel += tickWidth / 2;\n\t\t\t}\n\n\t\t\tvar finalVal = me.left + pixel;\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\treturn finalVal;\n\t\t}\n\t\tvar innerHeight = me.height - (me.paddingTop + me.paddingBottom);\n\t\treturn me.top + (index * (innerHeight / (me._ticks.length - 1)));\n\t},\n\n\t/**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetPixelForDecimal: function(decimal) {\n\t\tvar me = this;\n\t\tif (me.isHorizontal()) {\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\tvar valueOffset = (innerWidth * decimal) + me.paddingLeft;\n\n\t\t\tvar finalVal = me.left + valueOffset;\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\treturn finalVal;\n\t\t}\n\t\treturn me.top + (decimal * me.height);\n\t},\n\n\t/**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetBasePixel: function() {\n\t\treturn this.getPixelForValue(this.getBaseValue());\n\t},\n\n\tgetBaseValue: function() {\n\t\tvar me = this;\n\t\tvar min = me.min;\n\t\tvar max = me.max;\n\n\t\treturn me.beginAtZero ? 0 :\n\t\t\tmin < 0 && max < 0 ? max :\n\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t0;\n\t},\n\n\t/**\n\t * Returns a subset of ticks to be plotted to avoid overlapping labels.\n\t * @private\n\t */\n\t_autoSkip: function(ticks) {\n\t\tvar me = this;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tvar optionTicks = me.options.ticks.minor;\n\t\tvar tickCount = ticks.length;\n\t\tvar skipRatio = false;\n\t\tvar maxTicks = optionTicks.maxTicksLimit;\n\n\t\t// Total space needed to display all ticks. First and last ticks are\n\t\t// drawn as their center at end of axis, so tickCount-1\n\t\tvar ticksLength = me._tickSize() * (tickCount - 1);\n\n\t\t// Axis length\n\t\tvar axisLength = isHorizontal\n\t\t\t? me.width - (me.paddingLeft + me.paddingRight)\n\t\t\t: me.height - (me.paddingTop + me.PaddingBottom);\n\n\t\tvar result = [];\n\t\tvar i, tick;\n\n\t\tif (ticksLength > axisLength) {\n\t\t\tskipRatio = 1 + Math.floor(ticksLength / axisLength);\n\t\t}\n\n\t\t// if they defined a max number of optionTicks,\n\t\t// increase skipRatio until that number is met\n\t\tif (tickCount > maxTicks) {\n\t\t\tskipRatio = Math.max(skipRatio, 1 + Math.floor(tickCount / maxTicks));\n\t\t}\n\n\t\tfor (i = 0; i < tickCount; i++) {\n\t\t\ttick = ticks[i];\n\n\t\t\tif (skipRatio > 1 && i % skipRatio > 0) {\n\t\t\t\t// leave tick in place but make sure it's not displayed (#4635)\n\t\t\t\tdelete tick.label;\n\t\t\t}\n\t\t\tresult.push(tick);\n\t\t}\n\t\treturn result;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_tickSize: function() {\n\t\tvar me = this;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tvar optionTicks = me.options.ticks.minor;\n\n\t\t// Calculate space needed by label in axis direction.\n\t\tvar rot = helpers$1.toRadians(me.labelRotation);\n\t\tvar cos = Math.abs(Math.cos(rot));\n\t\tvar sin = Math.abs(Math.sin(rot));\n\n\t\tvar padding = optionTicks.autoSkipPadding || 0;\n\t\tvar w = (me.longestLabelWidth + padding) || 0;\n\n\t\tvar tickFont = helpers$1.options._parseFont(optionTicks);\n\t\tvar h = (me._maxLabelLines * tickFont.lineHeight + padding) || 0;\n\n\t\t// Calculate space needed for 1 tick in axis direction.\n\t\treturn isHorizontal\n\t\t\t? h * cos > w * sin ? w / cos : h / sin\n\t\t\t: h * sin < w * cos ? h / cos : w / sin;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_isVisible: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar display = me.options.display;\n\t\tvar i, ilen, meta;\n\n\t\tif (display !== 'auto') {\n\t\t\treturn !!display;\n\t\t}\n\n\t\t// When 'auto', the scale is visible if at least one associated dataset is visible.\n\t\tfor (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n\t\t\tif (chart.isDatasetVisible(i)) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tif (meta.xAxisID === me.id || meta.yAxisID === me.id) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Actually draw the scale on the canvas\n\t * @param {object} chartArea - the area of the chart to draw full grid lines on\n\t */\n\tdraw: function(chartArea) {\n\t\tvar me = this;\n\t\tvar options = me.options;\n\n\t\tif (!me._isVisible()) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar chart = me.chart;\n\t\tvar context = me.ctx;\n\t\tvar globalDefaults = core_defaults.global;\n\t\tvar defaultFontColor = globalDefaults.defaultFontColor;\n\t\tvar optionTicks = options.ticks.minor;\n\t\tvar optionMajorTicks = options.ticks.major || optionTicks;\n\t\tvar gridLines = options.gridLines;\n\t\tvar scaleLabel = options.scaleLabel;\n\t\tvar position = options.position;\n\n\t\tvar isRotated = me.labelRotation !== 0;\n\t\tvar isMirrored = optionTicks.mirror;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tvar parseFont = helpers$1.options._parseFont;\n\t\tvar ticks = optionTicks.display && optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks();\n\t\tvar tickFontColor = valueOrDefault$9(optionTicks.fontColor, defaultFontColor);\n\t\tvar tickFont = parseFont(optionTicks);\n\t\tvar lineHeight = tickFont.lineHeight;\n\t\tvar majorTickFontColor = valueOrDefault$9(optionMajorTicks.fontColor, defaultFontColor);\n\t\tvar majorTickFont = parseFont(optionMajorTicks);\n\t\tvar tickPadding = optionTicks.padding;\n\t\tvar labelOffset = optionTicks.labelOffset;\n\n\t\tvar tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0;\n\n\t\tvar scaleLabelFontColor = valueOrDefault$9(scaleLabel.fontColor, defaultFontColor);\n\t\tvar scaleLabelFont = parseFont(scaleLabel);\n\t\tvar scaleLabelPadding = helpers$1.options.toPadding(scaleLabel.padding);\n\t\tvar labelRotationRadians = helpers$1.toRadians(me.labelRotation);\n\n\t\tvar itemsToDraw = [];\n\n\t\tvar axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;\n\t\tvar alignPixel = helpers$1._alignPixel;\n\t\tvar borderValue, tickStart, tickEnd;\n\n\t\tif (position === 'top') {\n\t\t\tborderValue = alignPixel(chart, me.bottom, axisWidth);\n\t\t\ttickStart = me.bottom - tl;\n\t\t\ttickEnd = borderValue - axisWidth / 2;\n\t\t} else if (position === 'bottom') {\n\t\t\tborderValue = alignPixel(chart, me.top, axisWidth);\n\t\t\ttickStart = borderValue + axisWidth / 2;\n\t\t\ttickEnd = me.top + tl;\n\t\t} else if (position === 'left') {\n\t\t\tborderValue = alignPixel(chart, me.right, axisWidth);\n\t\t\ttickStart = me.right - tl;\n\t\t\ttickEnd = borderValue - axisWidth / 2;\n\t\t} else {\n\t\t\tborderValue = alignPixel(chart, me.left, axisWidth);\n\t\t\ttickStart = borderValue + axisWidth / 2;\n\t\t\ttickEnd = me.left + tl;\n\t\t}\n\n\t\tvar epsilon = 0.0000001; // 0.0000001 is margin in pixels for Accumulated error.\n\n\t\thelpers$1.each(ticks, function(tick, index) {\n\t\t\t// autoskipper skipped this tick (#4635)\n\t\t\tif (helpers$1.isNullOrUndef(tick.label)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar label = tick.label;\n\t\t\tvar lineWidth, lineColor, borderDash, borderDashOffset;\n\t\t\tif (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) {\n\t\t\t\t// Draw the first index specially\n\t\t\t\tlineWidth = gridLines.zeroLineWidth;\n\t\t\t\tlineColor = gridLines.zeroLineColor;\n\t\t\t\tborderDash = gridLines.zeroLineBorderDash || [];\n\t\t\t\tborderDashOffset = gridLines.zeroLineBorderDashOffset || 0.0;\n\t\t\t} else {\n\t\t\t\tlineWidth = valueAtIndexOrDefault(gridLines.lineWidth, index);\n\t\t\t\tlineColor = valueAtIndexOrDefault(gridLines.color, index);\n\t\t\t\tborderDash = gridLines.borderDash || [];\n\t\t\t\tborderDashOffset = gridLines.borderDashOffset || 0.0;\n\t\t\t}\n\n\t\t\t// Common properties\n\t\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY, textOffset, textAlign;\n\t\t\tvar labelCount = helpers$1.isArray(label) ? label.length : 1;\n\t\t\tvar lineValue = getPixelForGridLine(me, index, gridLines.offsetGridLines);\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tvar labelYOffset = tl + tickPadding;\n\n\t\t\t\tif (lineValue < me.left - epsilon) {\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\n\t\t\t\t}\n\n\t\t\t\ttx1 = tx2 = x1 = x2 = alignPixel(chart, lineValue, lineWidth);\n\t\t\t\tty1 = tickStart;\n\t\t\t\tty2 = tickEnd;\n\t\t\t\tlabelX = me.getPixelForTick(index) + labelOffset; // x values for optionTicks (need to consider offsetLabel option)\n\n\t\t\t\tif (position === 'top') {\n\t\t\t\t\ty1 = alignPixel(chart, chartArea.top, axisWidth) + axisWidth / 2;\n\t\t\t\t\ty2 = chartArea.bottom;\n\t\t\t\t\ttextOffset = ((!isRotated ? 0.5 : 1) - labelCount) * lineHeight;\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'left';\n\t\t\t\t\tlabelY = me.bottom - labelYOffset;\n\t\t\t\t} else {\n\t\t\t\t\ty1 = chartArea.top;\n\t\t\t\t\ty2 = alignPixel(chart, chartArea.bottom, axisWidth) - axisWidth / 2;\n\t\t\t\t\ttextOffset = (!isRotated ? 0.5 : 0) * lineHeight;\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'right';\n\t\t\t\t\tlabelY = me.top + labelYOffset;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar labelXOffset = (isMirrored ? 0 : tl) + tickPadding;\n\n\t\t\t\tif (lineValue < me.top - epsilon) {\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\n\t\t\t\t}\n\n\t\t\t\ttx1 = tickStart;\n\t\t\t\ttx2 = tickEnd;\n\t\t\t\tty1 = ty2 = y1 = y2 = alignPixel(chart, lineValue, lineWidth);\n\t\t\t\tlabelY = me.getPixelForTick(index) + labelOffset;\n\t\t\t\ttextOffset = (1 - labelCount) * lineHeight / 2;\n\n\t\t\t\tif (position === 'left') {\n\t\t\t\t\tx1 = alignPixel(chart, chartArea.left, axisWidth) + axisWidth / 2;\n\t\t\t\t\tx2 = chartArea.right;\n\t\t\t\t\ttextAlign = isMirrored ? 'left' : 'right';\n\t\t\t\t\tlabelX = me.right - labelXOffset;\n\t\t\t\t} else {\n\t\t\t\t\tx1 = chartArea.left;\n\t\t\t\t\tx2 = alignPixel(chart, chartArea.right, axisWidth) - axisWidth / 2;\n\t\t\t\t\ttextAlign = isMirrored ? 'right' : 'left';\n\t\t\t\t\tlabelX = me.left + labelXOffset;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\titemsToDraw.push({\n\t\t\t\ttx1: tx1,\n\t\t\t\tty1: ty1,\n\t\t\t\ttx2: tx2,\n\t\t\t\tty2: ty2,\n\t\t\t\tx1: x1,\n\t\t\t\ty1: y1,\n\t\t\t\tx2: x2,\n\t\t\t\ty2: y2,\n\t\t\t\tlabelX: labelX,\n\t\t\t\tlabelY: labelY,\n\t\t\t\tglWidth: lineWidth,\n\t\t\t\tglColor: lineColor,\n\t\t\t\tglBorderDash: borderDash,\n\t\t\t\tglBorderDashOffset: borderDashOffset,\n\t\t\t\trotation: -1 * labelRotationRadians,\n\t\t\t\tlabel: label,\n\t\t\t\tmajor: tick.major,\n\t\t\t\ttextOffset: textOffset,\n\t\t\t\ttextAlign: textAlign\n\t\t\t});\n\t\t});\n\n\t\t// Draw all of the tick labels, tick marks, and grid lines at the correct places\n\t\thelpers$1.each(itemsToDraw, function(itemToDraw) {\n\t\t\tvar glWidth = itemToDraw.glWidth;\n\t\t\tvar glColor = itemToDraw.glColor;\n\n\t\t\tif (gridLines.display && glWidth && glColor) {\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.lineWidth = glWidth;\n\t\t\t\tcontext.strokeStyle = glColor;\n\t\t\t\tif (context.setLineDash) {\n\t\t\t\t\tcontext.setLineDash(itemToDraw.glBorderDash);\n\t\t\t\t\tcontext.lineDashOffset = itemToDraw.glBorderDashOffset;\n\t\t\t\t}\n\n\t\t\t\tcontext.beginPath();\n\n\t\t\t\tif (gridLines.drawTicks) {\n\t\t\t\t\tcontext.moveTo(itemToDraw.tx1, itemToDraw.ty1);\n\t\t\t\t\tcontext.lineTo(itemToDraw.tx2, itemToDraw.ty2);\n\t\t\t\t}\n\n\t\t\t\tif (gridLines.drawOnChartArea) {\n\t\t\t\t\tcontext.moveTo(itemToDraw.x1, itemToDraw.y1);\n\t\t\t\t\tcontext.lineTo(itemToDraw.x2, itemToDraw.y2);\n\t\t\t\t}\n\n\t\t\t\tcontext.stroke();\n\t\t\t\tcontext.restore();\n\t\t\t}\n\n\t\t\tif (optionTicks.display) {\n\t\t\t\t// Make sure we draw text in the correct color and font\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.translate(itemToDraw.labelX, itemToDraw.labelY);\n\t\t\t\tcontext.rotate(itemToDraw.rotation);\n\t\t\t\tcontext.font = itemToDraw.major ? majorTickFont.string : tickFont.string;\n\t\t\t\tcontext.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor;\n\t\t\t\tcontext.textBaseline = 'middle';\n\t\t\t\tcontext.textAlign = itemToDraw.textAlign;\n\n\t\t\t\tvar label = itemToDraw.label;\n\t\t\t\tvar y = itemToDraw.textOffset;\n\t\t\t\tif (helpers$1.isArray(label)) {\n\t\t\t\t\tfor (var i = 0; i < label.length; ++i) {\n\t\t\t\t\t\t// We just make sure the multiline element is a string here..\n\t\t\t\t\t\tcontext.fillText('' + label[i], 0, y);\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\tcontext.fillText(label, 0, y);\n\t\t\t\t}\n\t\t\t\tcontext.restore();\n\t\t\t}\n\t\t});\n\n\t\tif (scaleLabel.display) {\n\t\t\t// Draw the scale label\n\t\t\tvar scaleLabelX;\n\t\t\tvar scaleLabelY;\n\t\t\tvar rotation = 0;\n\t\t\tvar halfLineHeight = scaleLabelFont.lineHeight / 2;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tscaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width\n\t\t\t\tscaleLabelY = position === 'bottom'\n\t\t\t\t\t? me.bottom - halfLineHeight - scaleLabelPadding.bottom\n\t\t\t\t\t: me.top + halfLineHeight + scaleLabelPadding.top;\n\t\t\t} else {\n\t\t\t\tvar isLeft = position === 'left';\n\t\t\t\tscaleLabelX = isLeft\n\t\t\t\t\t? me.left + halfLineHeight + scaleLabelPadding.top\n\t\t\t\t\t: me.right - halfLineHeight - scaleLabelPadding.top;\n\t\t\t\tscaleLabelY = me.top + ((me.bottom - me.top) / 2);\n\t\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\n\t\t\t}\n\n\t\t\tcontext.save();\n\t\t\tcontext.translate(scaleLabelX, scaleLabelY);\n\t\t\tcontext.rotate(rotation);\n\t\t\tcontext.textAlign = 'center';\n\t\t\tcontext.textBaseline = 'middle';\n\t\t\tcontext.fillStyle = scaleLabelFontColor; // render in correct colour\n\t\t\tcontext.font = scaleLabelFont.string;\n\t\t\tcontext.fillText(scaleLabel.labelString, 0, 0);\n\t\t\tcontext.restore();\n\t\t}\n\n\t\tif (axisWidth) {\n\t\t\t// Draw the line at the edge of the axis\n\t\t\tvar firstLineWidth = axisWidth;\n\t\t\tvar lastLineWidth = valueAtIndexOrDefault(gridLines.lineWidth, ticks.length - 1, 0);\n\t\t\tvar x1, x2, y1, y2;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tx1 = alignPixel(chart, me.left, firstLineWidth) - firstLineWidth / 2;\n\t\t\t\tx2 = alignPixel(chart, me.right, lastLineWidth) + lastLineWidth / 2;\n\t\t\t\ty1 = y2 = borderValue;\n\t\t\t} else {\n\t\t\t\ty1 = alignPixel(chart, me.top, firstLineWidth) - firstLineWidth / 2;\n\t\t\t\ty2 = alignPixel(chart, me.bottom, lastLineWidth) + lastLineWidth / 2;\n\t\t\t\tx1 = x2 = borderValue;\n\t\t\t}\n\n\t\t\tcontext.lineWidth = axisWidth;\n\t\t\tcontext.strokeStyle = valueAtIndexOrDefault(gridLines.color, 0);\n\t\t\tcontext.beginPath();\n\t\t\tcontext.moveTo(x1, y1);\n\t\t\tcontext.lineTo(x2, y2);\n\t\t\tcontext.stroke();\n\t\t}\n\t}\n});\n\nvar defaultConfig = {\n\tposition: 'bottom'\n};\n\nvar scale_category = core_scale.extend({\n\t/**\n\t* Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those\n\t* else fall back to data.labels\n\t* @private\n\t*/\n\tgetLabels: function() {\n\t\tvar data = this.chart.data;\n\t\treturn this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels;\n\t},\n\n\tdetermineDataLimits: function() {\n\t\tvar me = this;\n\t\tvar labels = me.getLabels();\n\t\tme.minIndex = 0;\n\t\tme.maxIndex = labels.length - 1;\n\t\tvar findIndex;\n\n\t\tif (me.options.ticks.min !== undefined) {\n\t\t\t// user specified min value\n\t\t\tfindIndex = labels.indexOf(me.options.ticks.min);\n\t\t\tme.minIndex = findIndex !== -1 ? findIndex : me.minIndex;\n\t\t}\n\n\t\tif (me.options.ticks.max !== undefined) {\n\t\t\t// user specified max value\n\t\t\tfindIndex = labels.indexOf(me.options.ticks.max);\n\t\t\tme.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex;\n\t\t}\n\n\t\tme.min = labels[me.minIndex];\n\t\tme.max = labels[me.maxIndex];\n\t},\n\n\tbuildTicks: function() {\n\t\tvar me = this;\n\t\tvar labels = me.getLabels();\n\t\t// If we are viewing some subset of labels, slice the original array\n\t\tme.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1);\n\t},\n\n\tgetLabelForIndex: function(index, datasetIndex) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\n\t\tif (chart.getDatasetMeta(datasetIndex).controller._getValueScaleId() === me.id) {\n\t\t\treturn me.getRightValue(chart.data.datasets[datasetIndex].data[index]);\n\t\t}\n\n\t\treturn me.ticks[index - me.minIndex];\n\t},\n\n\t// Used to get data value locations. Value can either be an index or a numerical value\n\tgetPixelForValue: function(value, index) {\n\t\tvar me = this;\n\t\tvar offset = me.options.offset;\n\t\t// 1 is added because we need the length but we have the indexes\n\t\tvar offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1);\n\n\t\t// If value is a data object, then index is the index in the data array,\n\t\t// not the index of the scale. We need to change that.\n\t\tvar valueCategory;\n\t\tif (value !== undefined && value !== null) {\n\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\n\t\t}\n\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\n\t\t\tvar labels = me.getLabels();\n\t\t\tvalue = valueCategory || value;\n\t\t\tvar idx = labels.indexOf(value);\n\t\t\tindex = idx !== -1 ? idx : index;\n\t\t}\n\n\t\tif (me.isHorizontal()) {\n\t\t\tvar valueWidth = me.width / offsetAmt;\n\t\t\tvar widthOffset = (valueWidth * (index - me.minIndex));\n\n\t\t\tif (offset) {\n\t\t\t\twidthOffset += (valueWidth / 2);\n\t\t\t}\n\n\t\t\treturn me.left + widthOffset;\n\t\t}\n\t\tvar valueHeight = me.height / offsetAmt;\n\t\tvar heightOffset = (valueHeight * (index - me.minIndex));\n\n\t\tif (offset) {\n\t\t\theightOffset += (valueHeight / 2);\n\t\t}\n\n\t\treturn me.top + heightOffset;\n\t},\n\n\tgetPixelForTick: function(index) {\n\t\treturn this.getPixelForValue(this.ticks[index], index + this.minIndex, null);\n\t},\n\n\tgetValueForPixel: function(pixel) {\n\t\tvar me = this;\n\t\tvar offset = me.options.offset;\n\t\tvar value;\n\t\tvar offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n\t\tvar horz = me.isHorizontal();\n\t\tvar valueDimension = (horz ? me.width : me.height) / offsetAmt;\n\n\t\tpixel -= horz ? me.left : me.top;\n\n\t\tif (offset) {\n\t\t\tpixel -= (valueDimension / 2);\n\t\t}\n\n\t\tif (pixel <= 0) {\n\t\t\tvalue = 0;\n\t\t} else {\n\t\t\tvalue = Math.round(pixel / valueDimension);\n\t\t}\n\n\t\treturn value + me.minIndex;\n\t},\n\n\tgetBasePixel: function() {\n\t\treturn this.bottom;\n\t}\n});\n\n// INTERNAL: static default options, registered in src/index.js\nvar _defaults = defaultConfig;\nscale_category._defaults = _defaults;\n\nvar noop = helpers$1.noop;\nvar isNullOrUndef = helpers$1.isNullOrUndef;\n\n/**\n * Generate a set of linear ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {number[]} array of tick values\n */\nfunction generateTicks(generationOptions, dataRange) {\n\tvar ticks = [];\n\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\n\t// \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n\t// for details.\n\n\tvar MIN_SPACING = 1e-14;\n\tvar stepSize = generationOptions.stepSize;\n\tvar unit = stepSize || 1;\n\tvar maxNumSpaces = generationOptions.maxTicks - 1;\n\tvar min = generationOptions.min;\n\tvar max = generationOptions.max;\n\tvar precision = generationOptions.precision;\n\tvar rmin = dataRange.min;\n\tvar rmax = dataRange.max;\n\tvar spacing = helpers$1.niceNum((rmax - rmin) / maxNumSpaces / unit) * unit;\n\tvar factor, niceMin, niceMax, numSpaces;\n\n\t// Beyond MIN_SPACING floating point numbers being to lose precision\n\t// such that we can't do the math necessary to generate ticks\n\tif (spacing < MIN_SPACING && isNullOrUndef(min) && isNullOrUndef(max)) {\n\t\treturn [rmin, rmax];\n\t}\n\n\tnumSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n\tif (numSpaces > maxNumSpaces) {\n\t\t// If the calculated num of spaces exceeds maxNumSpaces, recalculate it\n\t\tspacing = helpers$1.niceNum(numSpaces * spacing / maxNumSpaces / unit) * unit;\n\t}\n\n\tif (stepSize || isNullOrUndef(precision)) {\n\t\t// If a precision is not specified, calculate factor based on spacing\n\t\tfactor = Math.pow(10, helpers$1._decimalPlaces(spacing));\n\t} else {\n\t\t// If the user specified a precision, round to that number of decimal places\n\t\tfactor = Math.pow(10, precision);\n\t\tspacing = Math.ceil(spacing * factor) / factor;\n\t}\n\n\tniceMin = Math.floor(rmin / spacing) * spacing;\n\tniceMax = Math.ceil(rmax / spacing) * spacing;\n\n\t// If min, max and stepSize is set and they make an evenly spaced scale use it.\n\tif (stepSize) {\n\t\t// If very close to our whole number, use it.\n\t\tif (!isNullOrUndef(min) && helpers$1.almostWhole(min / spacing, spacing / 1000)) {\n\t\t\tniceMin = min;\n\t\t}\n\t\tif (!isNullOrUndef(max) && helpers$1.almostWhole(max / spacing, spacing / 1000)) {\n\t\t\tniceMax = max;\n\t\t}\n\t}\n\n\tnumSpaces = (niceMax - niceMin) / spacing;\n\t// If very close to our rounded value, use it.\n\tif (helpers$1.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n\t\tnumSpaces = Math.round(numSpaces);\n\t} else {\n\t\tnumSpaces = Math.ceil(numSpaces);\n\t}\n\n\tniceMin = Math.round(niceMin * factor) / factor;\n\tniceMax = Math.round(niceMax * factor) / factor;\n\tticks.push(isNullOrUndef(min) ? niceMin : min);\n\tfor (var j = 1; j < numSpaces; ++j) {\n\t\tticks.push(Math.round((niceMin + j * spacing) * factor) / factor);\n\t}\n\tticks.push(isNullOrUndef(max) ? niceMax : max);\n\n\treturn ticks;\n}\n\nvar scale_linearbase = core_scale.extend({\n\tgetRightValue: function(value) {\n\t\tif (typeof value === 'string') {\n\t\t\treturn +value;\n\t\t}\n\t\treturn core_scale.prototype.getRightValue.call(this, value);\n\t},\n\n\thandleTickRangeOptions: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar tickOpts = opts.ticks;\n\n\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\n\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\n\t\t// axis, they can manually override it\n\t\tif (tickOpts.beginAtZero) {\n\t\t\tvar minSign = helpers$1.sign(me.min);\n\t\t\tvar maxSign = helpers$1.sign(me.max);\n\n\t\t\tif (minSign < 0 && maxSign < 0) {\n\t\t\t\t// move the top up to 0\n\t\t\t\tme.max = 0;\n\t\t\t} else if (minSign > 0 && maxSign > 0) {\n\t\t\t\t// move the bottom down to 0\n\t\t\t\tme.min = 0;\n\t\t\t}\n\t\t}\n\n\t\tvar setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\n\t\tvar setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\n\n\t\tif (tickOpts.min !== undefined) {\n\t\t\tme.min = tickOpts.min;\n\t\t} else if (tickOpts.suggestedMin !== undefined) {\n\t\t\tif (me.min === null) {\n\t\t\t\tme.min = tickOpts.suggestedMin;\n\t\t\t} else {\n\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\n\t\t\t}\n\t\t}\n\n\t\tif (tickOpts.max !== undefined) {\n\t\t\tme.max = tickOpts.max;\n\t\t} else if (tickOpts.suggestedMax !== undefined) {\n\t\t\tif (me.max === null) {\n\t\t\t\tme.max = tickOpts.suggestedMax;\n\t\t\t} else {\n\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\n\t\t\t}\n\t\t}\n\n\t\tif (setMin !== setMax) {\n\t\t\t// We set the min or the max but not both.\n\t\t\t// So ensure that our range is good\n\t\t\t// Inverted or 0 length range can happen when\n\t\t\t// ticks.min is set, and no datasets are visible\n\t\t\tif (me.min >= me.max) {\n\t\t\t\tif (setMin) {\n\t\t\t\t\tme.max = me.min + 1;\n\t\t\t\t} else {\n\t\t\t\t\tme.min = me.max - 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (me.min === me.max) {\n\t\t\tme.max++;\n\n\t\t\tif (!tickOpts.beginAtZero) {\n\t\t\t\tme.min--;\n\t\t\t}\n\t\t}\n\t},\n\n\tgetTickLimit: function() {\n\t\tvar me = this;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar stepSize = tickOpts.stepSize;\n\t\tvar maxTicksLimit = tickOpts.maxTicksLimit;\n\t\tvar maxTicks;\n\n\t\tif (stepSize) {\n\t\t\tmaxTicks = Math.ceil(me.max / stepSize) - Math.floor(me.min / stepSize) + 1;\n\t\t} else {\n\t\t\tmaxTicks = me._computeTickLimit();\n\t\t\tmaxTicksLimit = maxTicksLimit || 11;\n\t\t}\n\n\t\tif (maxTicksLimit) {\n\t\t\tmaxTicks = Math.min(maxTicksLimit, maxTicks);\n\t\t}\n\n\t\treturn maxTicks;\n\t},\n\n\t_computeTickLimit: function() {\n\t\treturn Number.POSITIVE_INFINITY;\n\t},\n\n\thandleDirectionalChanges: noop,\n\n\tbuildTicks: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar tickOpts = opts.ticks;\n\n\t\t// Figure out what the max number of ticks we can support it is based on the size of\n\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 40\n\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t\t// the graph. Make sure we always have at least 2 ticks\n\t\tvar maxTicks = me.getTickLimit();\n\t\tmaxTicks = Math.max(2, maxTicks);\n\n\t\tvar numericGeneratorOptions = {\n\t\t\tmaxTicks: maxTicks,\n\t\t\tmin: tickOpts.min,\n\t\t\tmax: tickOpts.max,\n\t\t\tprecision: tickOpts.precision,\n\t\t\tstepSize: helpers$1.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\n\t\t};\n\t\tvar ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\n\n\t\tme.handleDirectionalChanges();\n\n\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// range of the scale\n\t\tme.max = helpers$1.max(ticks);\n\t\tme.min = helpers$1.min(ticks);\n\n\t\tif (tickOpts.reverse) {\n\t\t\tticks.reverse();\n\n\t\t\tme.start = me.max;\n\t\t\tme.end = me.min;\n\t\t} else {\n\t\t\tme.start = me.min;\n\t\t\tme.end = me.max;\n\t\t}\n\t},\n\n\tconvertTicksToLabels: function() {\n\t\tvar me = this;\n\t\tme.ticksAsNumbers = me.ticks.slice();\n\t\tme.zeroLineIndex = me.ticks.indexOf(0);\n\n\t\tcore_scale.prototype.convertTicksToLabels.call(me);\n\t}\n});\n\nvar defaultConfig$1 = {\n\tposition: 'left',\n\tticks: {\n\t\tcallback: core_ticks.formatters.linear\n\t}\n};\n\nvar scale_linear = scale_linearbase.extend({\n\tdetermineDataLimits: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar chart = me.chart;\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tvar DEFAULT_MIN = 0;\n\t\tvar DEFAULT_MAX = 1;\n\n\t\tfunction IDMatches(meta) {\n\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t}\n\n\t\t// First Calculate the range\n\t\tme.min = null;\n\t\tme.max = null;\n\n\t\tvar hasStacks = opts.stacked;\n\t\tif (hasStacks === undefined) {\n\t\t\thelpers$1.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\tif (hasStacks) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\thasStacks = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (opts.stacked || hasStacks) {\n\t\t\tvar valuesPerStack = {};\n\n\t\t\thelpers$1.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\tvar key = [\n\t\t\t\t\tmeta.type,\n\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((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\tmeta.stack\n\t\t\t\t].join('.');\n\n\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\tvaluesPerStack[key] = {\n\t\t\t\t\t\tpositiveValues: [],\n\t\t\t\t\t\tnegativeValues: []\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Store these per type\n\t\t\t\tvar positiveValues = valuesPerStack[key].positiveValues;\n\t\t\t\tvar negativeValues = valuesPerStack[key].negativeValues;\n\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\thelpers$1.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\tpositiveValues[index] = positiveValues[index] || 0;\n\t\t\t\t\t\tnegativeValues[index] = negativeValues[index] || 0;\n\n\t\t\t\t\t\tif (opts.relativePoints) {\n\t\t\t\t\t\t\tpositiveValues[index] = 100;\n\t\t\t\t\t\t} else if (value < 0) {\n\t\t\t\t\t\t\tnegativeValues[index] += value;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpositiveValues[index] += value;\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\thelpers$1.each(valuesPerStack, function(valuesForType) {\n\t\t\t\tvar values = valuesForType.positiveValues.concat(valuesForType.negativeValues);\n\t\t\t\tvar minVal = helpers$1.min(values);\n\t\t\t\tvar maxVal = helpers$1.max(values);\n\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t});\n\n\t\t} else {\n\t\t\thelpers$1.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\thelpers$1.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\tif (me.min === null) {\n\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tme.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\n\t\tme.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\n\n\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\tthis.handleTickRangeOptions();\n\t},\n\n\t// Returns the maximum number of ticks based on the scale dimension\n\t_computeTickLimit: function() {\n\t\tvar me = this;\n\t\tvar tickFont;\n\n\t\tif (me.isHorizontal()) {\n\t\t\treturn Math.ceil(me.width / 40);\n\t\t}\n\t\ttickFont = helpers$1.options._parseFont(me.options.ticks);\n\t\treturn Math.ceil(me.height / tickFont.lineHeight);\n\t},\n\n\t// Called after the ticks are built. We need\n\thandleDirectionalChanges: function() {\n\t\tif (!this.isHorizontal()) {\n\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\n\t\t\tthis.ticks.reverse();\n\t\t}\n\t},\n\n\tgetLabelForIndex: function(index, datasetIndex) {\n\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t},\n\n\t// Utils\n\tgetPixelForValue: function(value) {\n\t\t// This must be called after fit has been run so that\n\t\t// this.left, this.top, this.right, and this.bottom have been defined\n\t\tvar me = this;\n\t\tvar start = me.start;\n\n\t\tvar rightValue = +me.getRightValue(value);\n\t\tvar pixel;\n\t\tvar range = me.end - start;\n\n\t\tif (me.isHorizontal()) {\n\t\t\tpixel = me.left + (me.width / range * (rightValue - start));\n\t\t} else {\n\t\t\tpixel = me.bottom - (me.height / range * (rightValue - start));\n\t\t}\n\t\treturn pixel;\n\t},\n\n\tgetValueForPixel: function(pixel) {\n\t\tvar me = this;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tvar innerDimension = isHorizontal ? me.width : me.height;\n\t\tvar offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension;\n\t\treturn me.start + ((me.end - me.start) * offset);\n\t},\n\n\tgetPixelForTick: function(index) {\n\t\treturn this.getPixelForValue(this.ticksAsNumbers[index]);\n\t}\n});\n\n// INTERNAL: static default options, registered in src/index.js\nvar _defaults$1 = defaultConfig$1;\nscale_linear._defaults = _defaults$1;\n\nvar valueOrDefault$a = helpers$1.valueOrDefault;\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {number[]} array of tick values\n */\nfunction generateTicks$1(generationOptions, dataRange) {\n\tvar ticks = [];\n\n\tvar tickVal = valueOrDefault$a(generationOptions.min, Math.pow(10, Math.floor(helpers$1.log10(dataRange.min))));\n\n\tvar endExp = Math.floor(helpers$1.log10(dataRange.max));\n\tvar endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n\tvar exp, significand;\n\n\tif (tickVal === 0) {\n\t\texp = Math.floor(helpers$1.log10(dataRange.minNotZero));\n\t\tsignificand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\n\n\t\tticks.push(tickVal);\n\t\ttickVal = significand * Math.pow(10, exp);\n\t} else {\n\t\texp = Math.floor(helpers$1.log10(tickVal));\n\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp));\n\t}\n\tvar precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n\n\tdo {\n\t\tticks.push(tickVal);\n\n\t\t++significand;\n\t\tif (significand === 10) {\n\t\t\tsignificand = 1;\n\t\t\t++exp;\n\t\t\tprecision = exp >= 0 ? 1 : precision;\n\t\t}\n\n\t\ttickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n\t} while (exp < endExp || (exp === endExp && significand < endSignificand));\n\n\tvar lastTick = valueOrDefault$a(generationOptions.max, tickVal);\n\tticks.push(lastTick);\n\n\treturn ticks;\n}\n\nvar defaultConfig$2 = {\n\tposition: 'left',\n\n\t// label settings\n\tticks: {\n\t\tcallback: core_ticks.formatters.logarithmic\n\t}\n};\n\n// TODO(v3): change this to positiveOrDefault\nfunction nonNegativeOrDefault(value, defaultValue) {\n\treturn helpers$1.isFinite(value) && value >= 0 ? value : defaultValue;\n}\n\nvar scale_logarithmic = core_scale.extend({\n\tdetermineDataLimits: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar chart = me.chart;\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tfunction IDMatches(meta) {\n\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t}\n\n\t\t// Calculate Range\n\t\tme.min = null;\n\t\tme.max = null;\n\t\tme.minNotZero = null;\n\n\t\tvar hasStacks = opts.stacked;\n\t\tif (hasStacks === undefined) {\n\t\t\thelpers$1.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\tif (hasStacks) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\thasStacks = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (opts.stacked || hasStacks) {\n\t\t\tvar valuesPerStack = {};\n\n\t\t\thelpers$1.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\tvar key = [\n\t\t\t\t\tmeta.type,\n\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((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\tmeta.stack\n\t\t\t\t].join('.');\n\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\tvaluesPerStack[key] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\thelpers$1.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\tvar values = valuesPerStack[key];\n\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t// invalid, hidden and negative values are ignored\n\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalues[index] = values[index] || 0;\n\t\t\t\t\t\tvalues[index] += value;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\thelpers$1.each(valuesPerStack, function(valuesForType) {\n\t\t\t\tif (valuesForType.length > 0) {\n\t\t\t\t\tvar minVal = helpers$1.min(valuesForType);\n\t\t\t\t\tvar maxVal = helpers$1.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\t\t\t});\n\n\t\t} else {\n\t\t\thelpers$1.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\thelpers$1.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t// invalid, hidden and negative values are ignored\n\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) {\n\t\t\t\t\t\t\tme.minNotZero = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// Common base implementation to handle ticks.min, ticks.max\n\t\tthis.handleTickRangeOptions();\n\t},\n\n\thandleTickRangeOptions: function() {\n\t\tvar me = this;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar DEFAULT_MIN = 1;\n\t\tvar DEFAULT_MAX = 10;\n\n\t\tme.min = nonNegativeOrDefault(tickOpts.min, me.min);\n\t\tme.max = nonNegativeOrDefault(tickOpts.max, me.max);\n\n\t\tif (me.min === me.max) {\n\t\t\tif (me.min !== 0 && me.min !== null) {\n\t\t\t\tme.min = Math.pow(10, Math.floor(helpers$1.log10(me.min)) - 1);\n\t\t\t\tme.max = Math.pow(10, Math.floor(helpers$1.log10(me.max)) + 1);\n\t\t\t} else {\n\t\t\t\tme.min = DEFAULT_MIN;\n\t\t\t\tme.max = DEFAULT_MAX;\n\t\t\t}\n\t\t}\n\t\tif (me.min === null) {\n\t\t\tme.min = Math.pow(10, Math.floor(helpers$1.log10(me.max)) - 1);\n\t\t}\n\t\tif (me.max === null) {\n\t\t\tme.max = me.min !== 0\n\t\t\t\t? Math.pow(10, Math.floor(helpers$1.log10(me.min)) + 1)\n\t\t\t\t: DEFAULT_MAX;\n\t\t}\n\t\tif (me.minNotZero === null) {\n\t\t\tif (me.min > 0) {\n\t\t\t\tme.minNotZero = me.min;\n\t\t\t} else if (me.max < 1) {\n\t\t\t\tme.minNotZero = Math.pow(10, Math.floor(helpers$1.log10(me.max)));\n\t\t\t} else {\n\t\t\t\tme.minNotZero = DEFAULT_MIN;\n\t\t\t}\n\t\t}\n\t},\n\n\tbuildTicks: function() {\n\t\tvar me = this;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar reverse = !me.isHorizontal();\n\n\t\tvar generationOptions = {\n\t\t\tmin: nonNegativeOrDefault(tickOpts.min),\n\t\t\tmax: nonNegativeOrDefault(tickOpts.max)\n\t\t};\n\t\tvar ticks = me.ticks = generateTicks$1(generationOptions, me);\n\n\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// range of the scale\n\t\tme.max = helpers$1.max(ticks);\n\t\tme.min = helpers$1.min(ticks);\n\n\t\tif (tickOpts.reverse) {\n\t\t\treverse = !reverse;\n\t\t\tme.start = me.max;\n\t\t\tme.end = me.min;\n\t\t} else {\n\t\t\tme.start = me.min;\n\t\t\tme.end = me.max;\n\t\t}\n\t\tif (reverse) {\n\t\t\tticks.reverse();\n\t\t}\n\t},\n\n\tconvertTicksToLabels: function() {\n\t\tthis.tickValues = this.ticks.slice();\n\n\t\tcore_scale.prototype.convertTicksToLabels.call(this);\n\t},\n\n\t// Get the correct tooltip label\n\tgetLabelForIndex: function(index, datasetIndex) {\n\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t},\n\n\tgetPixelForTick: function(index) {\n\t\treturn this.getPixelForValue(this.tickValues[index]);\n\t},\n\n\t/**\n\t * Returns the value of the first tick.\n\t * @param {number} value - The minimum not zero value.\n\t * @return {number} The first tick value.\n\t * @private\n\t */\n\t_getFirstTickValue: function(value) {\n\t\tvar exp = Math.floor(helpers$1.log10(value));\n\t\tvar significand = Math.floor(value / Math.pow(10, exp));\n\n\t\treturn significand * Math.pow(10, exp);\n\t},\n\n\tgetPixelForValue: function(value) {\n\t\tvar me = this;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar reverse = tickOpts.reverse;\n\t\tvar log10 = helpers$1.log10;\n\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\n\t\tvar offset = 0;\n\t\tvar innerDimension, pixel, start, end, sign;\n\n\t\tvalue = +me.getRightValue(value);\n\t\tif (reverse) {\n\t\t\tstart = me.end;\n\t\t\tend = me.start;\n\t\t\tsign = -1;\n\t\t} else {\n\t\t\tstart = me.start;\n\t\t\tend = me.end;\n\t\t\tsign = 1;\n\t\t}\n\t\tif (me.isHorizontal()) {\n\t\t\tinnerDimension = me.width;\n\t\t\tpixel = reverse ? me.right : me.left;\n\t\t} else {\n\t\t\tinnerDimension = me.height;\n\t\t\tsign *= -1; // invert, since the upper-left corner of the canvas is at pixel (0, 0)\n\t\t\tpixel = reverse ? me.top : me.bottom;\n\t\t}\n\t\tif (value !== start) {\n\t\t\tif (start === 0) { // include zero tick\n\t\t\t\toffset = valueOrDefault$a(tickOpts.fontSize, core_defaults.global.defaultFontSize);\n\t\t\t\tinnerDimension -= offset;\n\t\t\t\tstart = firstTickValue;\n\t\t\t}\n\t\t\tif (value !== 0) {\n\t\t\t\toffset += innerDimension / (log10(end) - log10(start)) * (log10(value) - log10(start));\n\t\t\t}\n\t\t\tpixel += sign * offset;\n\t\t}\n\t\treturn pixel;\n\t},\n\n\tgetValueForPixel: function(pixel) {\n\t\tvar me = this;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar reverse = tickOpts.reverse;\n\t\tvar log10 = helpers$1.log10;\n\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\n\t\tvar innerDimension, start, end, value;\n\n\t\tif (reverse) {\n\t\t\tstart = me.end;\n\t\t\tend = me.start;\n\t\t} else {\n\t\t\tstart = me.start;\n\t\t\tend = me.end;\n\t\t}\n\t\tif (me.isHorizontal()) {\n\t\t\tinnerDimension = me.width;\n\t\t\tvalue = reverse ? me.right - pixel : pixel - me.left;\n\t\t} else {\n\t\t\tinnerDimension = me.height;\n\t\t\tvalue = reverse ? pixel - me.top : me.bottom - pixel;\n\t\t}\n\t\tif (value !== start) {\n\t\t\tif (start === 0) { // include zero tick\n\t\t\t\tvar offset = valueOrDefault$a(tickOpts.fontSize, core_defaults.global.defaultFontSize);\n\t\t\t\tvalue -= offset;\n\t\t\t\tinnerDimension -= offset;\n\t\t\t\tstart = firstTickValue;\n\t\t\t}\n\t\t\tvalue *= log10(end) - log10(start);\n\t\t\tvalue /= innerDimension;\n\t\t\tvalue = Math.pow(10, log10(start) + value);\n\t\t}\n\t\treturn value;\n\t}\n});\n\n// INTERNAL: static default options, registered in src/index.js\nvar _defaults$2 = defaultConfig$2;\nscale_logarithmic._defaults = _defaults$2;\n\nvar valueOrDefault$b = helpers$1.valueOrDefault;\nvar valueAtIndexOrDefault$1 = helpers$1.valueAtIndexOrDefault;\nvar resolve$7 = helpers$1.options.resolve;\n\nvar defaultConfig$3 = {\n\tdisplay: true,\n\n\t// Boolean - Whether to animate scaling the chart from the centre\n\tanimate: true,\n\tposition: 'chartArea',\n\n\tangleLines: {\n\t\tdisplay: true,\n\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\tlineWidth: 1,\n\t\tborderDash: [],\n\t\tborderDashOffset: 0.0\n\t},\n\n\tgridLines: {\n\t\tcircular: false\n\t},\n\n\t// label settings\n\tticks: {\n\t\t// Boolean - Show a backdrop to the scale label\n\t\tshowLabelBackdrop: true,\n\n\t\t// String - The colour of the label backdrop\n\t\tbackdropColor: 'rgba(255,255,255,0.75)',\n\n\t\t// Number - The backdrop padding above & below the label in pixels\n\t\tbackdropPaddingY: 2,\n\n\t\t// Number - The backdrop padding to the side of the label in pixels\n\t\tbackdropPaddingX: 2,\n\n\t\tcallback: core_ticks.formatters.linear\n\t},\n\n\tpointLabels: {\n\t\t// Boolean - if true, show point labels\n\t\tdisplay: true,\n\n\t\t// Number - Point label font size in pixels\n\t\tfontSize: 10,\n\n\t\t// Function - Used to convert point labels\n\t\tcallback: function(label) {\n\t\t\treturn label;\n\t\t}\n\t}\n};\n\nfunction getValueCount(scale) {\n\tvar opts = scale.options;\n\treturn opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0;\n}\n\nfunction getTickBackdropHeight(opts) {\n\tvar tickOpts = opts.ticks;\n\n\tif (tickOpts.display && opts.display) {\n\t\treturn valueOrDefault$b(tickOpts.fontSize, core_defaults.global.defaultFontSize) + tickOpts.backdropPaddingY * 2;\n\t}\n\treturn 0;\n}\n\nfunction measureLabelSize(ctx, lineHeight, label) {\n\tif (helpers$1.isArray(label)) {\n\t\treturn {\n\t\t\tw: helpers$1.longestText(ctx, ctx.font, label),\n\t\t\th: label.length * lineHeight\n\t\t};\n\t}\n\n\treturn {\n\t\tw: ctx.measureText(label).width,\n\t\th: lineHeight\n\t};\n}\n\nfunction determineLimits(angle, pos, size, min, max) {\n\tif (angle === min || angle === max) {\n\t\treturn {\n\t\t\tstart: pos - (size / 2),\n\t\t\tend: pos + (size / 2)\n\t\t};\n\t} else if (angle < min || angle > max) {\n\t\treturn {\n\t\t\tstart: pos - size,\n\t\t\tend: pos\n\t\t};\n\t}\n\n\treturn {\n\t\tstart: pos,\n\t\tend: pos + size\n\t};\n}\n\n/**\n * Helper function to fit a radial linear scale with point labels\n */\nfunction fitWithPointLabels(scale) {\n\n\t// Right, this is really confusing and there is a lot of maths going on here\n\t// The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n\t//\n\t// Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n\t//\n\t// Solution:\n\t//\n\t// We assume the radius of the polygon is half the size of the canvas at first\n\t// at each index we check if the text overlaps.\n\t//\n\t// Where it does, we store that angle and that index.\n\t//\n\t// After finding the largest index and angle we calculate how much we need to remove\n\t// from the shape radius to move the point inwards by that x.\n\t//\n\t// We average the left and right distances to get the maximum shape radius that can fit in the box\n\t// along with labels.\n\t//\n\t// Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n\t// on each side, removing that from the size, halving it and adding the left x protrusion width.\n\t//\n\t// This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n\t// and position it in the most space efficient manner\n\t//\n\t// https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\n\tvar plFont = helpers$1.options._parseFont(scale.options.pointLabels);\n\n\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n\tvar furthestLimits = {\n\t\tl: 0,\n\t\tr: scale.width,\n\t\tt: 0,\n\t\tb: scale.height - scale.paddingTop\n\t};\n\tvar furthestAngles = {};\n\tvar i, textSize, pointPosition;\n\n\tscale.ctx.font = plFont.string;\n\tscale._pointLabelSizes = [];\n\n\tvar valueCount = getValueCount(scale);\n\tfor (i = 0; i < valueCount; i++) {\n\t\tpointPosition = scale.getPointPosition(i, scale.drawingArea + 5);\n\t\ttextSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale.pointLabels[i] || '');\n\t\tscale._pointLabelSizes[i] = textSize;\n\n\t\t// Add quarter circle to make degree 0 mean top of circle\n\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\tvar angle = helpers$1.toDegrees(angleRadians) % 360;\n\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n\n\t\tif (hLimits.start < furthestLimits.l) {\n\t\t\tfurthestLimits.l = hLimits.start;\n\t\t\tfurthestAngles.l = angleRadians;\n\t\t}\n\n\t\tif (hLimits.end > furthestLimits.r) {\n\t\t\tfurthestLimits.r = hLimits.end;\n\t\t\tfurthestAngles.r = angleRadians;\n\t\t}\n\n\t\tif (vLimits.start < furthestLimits.t) {\n\t\t\tfurthestLimits.t = vLimits.start;\n\t\t\tfurthestAngles.t = angleRadians;\n\t\t}\n\n\t\tif (vLimits.end > furthestLimits.b) {\n\t\t\tfurthestLimits.b = vLimits.end;\n\t\t\tfurthestAngles.b = angleRadians;\n\t\t}\n\t}\n\n\tscale.setReductions(scale.drawingArea, furthestLimits, furthestAngles);\n}\n\nfunction getTextAlignForAngle(angle) {\n\tif (angle === 0 || angle === 180) {\n\t\treturn 'center';\n\t} else if (angle < 180) {\n\t\treturn 'left';\n\t}\n\n\treturn 'right';\n}\n\nfunction fillText(ctx, text, position, lineHeight) {\n\tvar y = position.y + lineHeight / 2;\n\tvar i, ilen;\n\n\tif (helpers$1.isArray(text)) {\n\t\tfor (i = 0, ilen = text.length; i < ilen; ++i) {\n\t\t\tctx.fillText(text[i], position.x, y);\n\t\t\ty += lineHeight;\n\t\t}\n\t} else {\n\t\tctx.fillText(text, position.x, y);\n\t}\n}\n\nfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\n\tif (angle === 90 || angle === 270) {\n\t\tposition.y -= (textSize.h / 2);\n\t} else if (angle > 270 || angle < 90) {\n\t\tposition.y -= textSize.h;\n\t}\n}\n\nfunction drawPointLabels(scale) {\n\tvar ctx = scale.ctx;\n\tvar opts = scale.options;\n\tvar angleLineOpts = opts.angleLines;\n\tvar gridLineOpts = opts.gridLines;\n\tvar pointLabelOpts = opts.pointLabels;\n\tvar lineWidth = valueOrDefault$b(angleLineOpts.lineWidth, gridLineOpts.lineWidth);\n\tvar lineColor = valueOrDefault$b(angleLineOpts.color, gridLineOpts.color);\n\tvar tickBackdropHeight = getTickBackdropHeight(opts);\n\n\tctx.save();\n\tctx.lineWidth = lineWidth;\n\tctx.strokeStyle = lineColor;\n\tif (ctx.setLineDash) {\n\t\tctx.setLineDash(resolve$7([angleLineOpts.borderDash, gridLineOpts.borderDash, []]));\n\t\tctx.lineDashOffset = resolve$7([angleLineOpts.borderDashOffset, gridLineOpts.borderDashOffset, 0.0]);\n\t}\n\n\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\n\n\t// Point Label Font\n\tvar plFont = helpers$1.options._parseFont(pointLabelOpts);\n\n\tctx.font = plFont.string;\n\tctx.textBaseline = 'middle';\n\n\tfor (var i = getValueCount(scale) - 1; i >= 0; i--) {\n\t\tif (angleLineOpts.display && lineWidth && lineColor) {\n\t\t\tvar outerPosition = scale.getPointPosition(i, outerDistance);\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(scale.xCenter, scale.yCenter);\n\t\t\tctx.lineTo(outerPosition.x, outerPosition.y);\n\t\t\tctx.stroke();\n\t\t}\n\n\t\tif (pointLabelOpts.display) {\n\t\t\t// Extra pixels out for some label spacing\n\t\t\tvar extra = (i === 0 ? tickBackdropHeight / 2 : 0);\n\t\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + 5);\n\n\t\t\t// Keep this in loop since we may support array properties here\n\t\t\tvar pointLabelFontColor = valueAtIndexOrDefault$1(pointLabelOpts.fontColor, i, core_defaults.global.defaultFontColor);\n\t\t\tctx.fillStyle = pointLabelFontColor;\n\n\t\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\t\tvar angle = helpers$1.toDegrees(angleRadians);\n\t\t\tctx.textAlign = getTextAlignForAngle(angle);\n\t\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\n\t\t\tfillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.lineHeight);\n\t\t}\n\t}\n\tctx.restore();\n}\n\nfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\n\tvar ctx = scale.ctx;\n\tvar circular = gridLineOpts.circular;\n\tvar valueCount = getValueCount(scale);\n\tvar lineColor = valueAtIndexOrDefault$1(gridLineOpts.color, index - 1);\n\tvar lineWidth = valueAtIndexOrDefault$1(gridLineOpts.lineWidth, index - 1);\n\tvar pointPosition;\n\n\tif ((!circular && !valueCount) || !lineColor || !lineWidth) {\n\t\treturn;\n\t}\n\n\tctx.save();\n\tctx.strokeStyle = lineColor;\n\tctx.lineWidth = lineWidth;\n\tif (ctx.setLineDash) {\n\t\tctx.setLineDash(gridLineOpts.borderDash || []);\n\t\tctx.lineDashOffset = gridLineOpts.borderDashOffset || 0.0;\n\t}\n\n\tctx.beginPath();\n\tif (circular) {\n\t\t// Draw circular arcs between the points\n\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\n\t} else {\n\t\t// Draw straight lines connecting each index\n\t\tpointPosition = scale.getPointPosition(0, radius);\n\t\tctx.moveTo(pointPosition.x, pointPosition.y);\n\n\t\tfor (var i = 1; i < valueCount; i++) {\n\t\t\tpointPosition = scale.getPointPosition(i, radius);\n\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\n\t\t}\n\t}\n\tctx.closePath();\n\tctx.stroke();\n\tctx.restore();\n}\n\nfunction numberOrZero(param) {\n\treturn helpers$1.isNumber(param) ? param : 0;\n}\n\nvar scale_radialLinear = scale_linearbase.extend({\n\tsetDimensions: function() {\n\t\tvar me = this;\n\n\t\t// Set the unconstrained dimension before label rotation\n\t\tme.width = me.maxWidth;\n\t\tme.height = me.maxHeight;\n\t\tme.paddingTop = getTickBackdropHeight(me.options) / 2;\n\t\tme.xCenter = Math.floor(me.width / 2);\n\t\tme.yCenter = Math.floor((me.height - me.paddingTop) / 2);\n\t\tme.drawingArea = Math.min(me.height - me.paddingTop, me.width) / 2;\n\t},\n\n\tdetermineDataLimits: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar min = Number.POSITIVE_INFINITY;\n\t\tvar max = Number.NEGATIVE_INFINITY;\n\n\t\thelpers$1.each(chart.data.datasets, function(dataset, datasetIndex) {\n\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\n\t\t\t\thelpers$1.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tmin = Math.min(value, min);\n\t\t\t\t\tmax = Math.max(value, max);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\n\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\n\n\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\tme.handleTickRangeOptions();\n\t},\n\n\t// Returns the maximum number of ticks based on the scale dimension\n\t_computeTickLimit: function() {\n\t\treturn Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n\t},\n\n\tconvertTicksToLabels: function() {\n\t\tvar me = this;\n\n\t\tscale_linearbase.prototype.convertTicksToLabels.call(me);\n\n\t\t// Point labels\n\t\tme.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me);\n\t},\n\n\tgetLabelForIndex: function(index, datasetIndex) {\n\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t},\n\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\n\t\tif (opts.display && opts.pointLabels.display) {\n\t\t\tfitWithPointLabels(me);\n\t\t} else {\n\t\t\tme.setCenterPoint(0, 0, 0, 0);\n\t\t}\n\t},\n\n\t/**\n\t * Set radius reductions and determine new radius and center point\n\t * @private\n\t */\n\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\n\t\tvar me = this;\n\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\n\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\n\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\n\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - (me.height - me.paddingTop), 0) / Math.cos(furthestAngles.b);\n\n\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\n\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\n\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\n\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\n\n\t\tme.drawingArea = Math.min(\n\t\t\tMath.floor(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\n\t\t\tMath.floor(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\n\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\n\t},\n\n\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\n\t\tvar me = this;\n\t\tvar maxRight = me.width - rightMovement - me.drawingArea;\n\t\tvar maxLeft = leftMovement + me.drawingArea;\n\t\tvar maxTop = topMovement + me.drawingArea;\n\t\tvar maxBottom = (me.height - me.paddingTop) - bottomMovement - me.drawingArea;\n\n\t\tme.xCenter = Math.floor(((maxLeft + maxRight) / 2) + me.left);\n\t\tme.yCenter = Math.floor(((maxTop + maxBottom) / 2) + me.top + me.paddingTop);\n\t},\n\n\tgetIndexAngle: function(index) {\n\t\tvar angleMultiplier = (Math.PI * 2) / getValueCount(this);\n\t\tvar startAngle = this.chart.options && this.chart.options.startAngle ?\n\t\t\tthis.chart.options.startAngle :\n\t\t\t0;\n\n\t\tvar startAngleRadians = startAngle * Math.PI * 2 / 360;\n\n\t\t// Start from the top instead of right, so remove a quarter of the circle\n\t\treturn index * angleMultiplier + startAngleRadians;\n\t},\n\n\tgetDistanceFromCenterForValue: function(value) {\n\t\tvar me = this;\n\n\t\tif (value === null) {\n\t\t\treturn 0; // null always in center\n\t\t}\n\n\t\t// Take into account half font size + the yPadding of the top value\n\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\n\t\tif (me.options.ticks.reverse) {\n\t\t\treturn (me.max - value) * scalingFactor;\n\t\t}\n\t\treturn (value - me.min) * scalingFactor;\n\t},\n\n\tgetPointPosition: function(index, distanceFromCenter) {\n\t\tvar me = this;\n\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\n\t\treturn {\n\t\t\tx: Math.cos(thisAngle) * distanceFromCenter + me.xCenter,\n\t\t\ty: Math.sin(thisAngle) * distanceFromCenter + me.yCenter\n\t\t};\n\t},\n\n\tgetPointPositionForValue: function(index, value) {\n\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n\t},\n\n\tgetBasePosition: function() {\n\t\tvar me = this;\n\t\tvar min = me.min;\n\t\tvar max = me.max;\n\n\t\treturn me.getPointPositionForValue(0,\n\t\t\tme.beginAtZero ? 0 :\n\t\t\tmin < 0 && max < 0 ? max :\n\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t0);\n\t},\n\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar gridLineOpts = opts.gridLines;\n\t\tvar tickOpts = opts.ticks;\n\n\t\tif (opts.display) {\n\t\t\tvar ctx = me.ctx;\n\t\t\tvar startAngle = this.getIndexAngle(0);\n\t\t\tvar tickFont = helpers$1.options._parseFont(tickOpts);\n\n\t\t\tif (opts.angleLines.display || opts.pointLabels.display) {\n\t\t\t\tdrawPointLabels(me);\n\t\t\t}\n\n\t\t\thelpers$1.each(me.ticks, function(label, index) {\n\t\t\t\t// Don't draw a centre value (if it is minimum)\n\t\t\t\tif (index > 0 || tickOpts.reverse) {\n\t\t\t\t\tvar yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n\n\t\t\t\t\t// Draw circular lines around the scale\n\t\t\t\t\tif (gridLineOpts.display && index !== 0) {\n\t\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, yCenterOffset, index);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (tickOpts.display) {\n\t\t\t\t\t\tvar tickFontColor = valueOrDefault$b(tickOpts.fontColor, core_defaults.global.defaultFontColor);\n\t\t\t\t\t\tctx.font = tickFont.string;\n\n\t\t\t\t\t\tctx.save();\n\t\t\t\t\t\tctx.translate(me.xCenter, me.yCenter);\n\t\t\t\t\t\tctx.rotate(startAngle);\n\n\t\t\t\t\t\tif (tickOpts.showLabelBackdrop) {\n\t\t\t\t\t\t\tvar labelWidth = ctx.measureText(label).width;\n\t\t\t\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\n\t\t\t\t\t\t\tctx.fillRect(\n\t\t\t\t\t\t\t\t-labelWidth / 2 - tickOpts.backdropPaddingX,\n\t\t\t\t\t\t\t\t-yCenterOffset - tickFont.size / 2 - tickOpts.backdropPaddingY,\n\t\t\t\t\t\t\t\tlabelWidth + tickOpts.backdropPaddingX * 2,\n\t\t\t\t\t\t\t\ttickFont.size + tickOpts.backdropPaddingY * 2\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tctx.textAlign = 'center';\n\t\t\t\t\t\tctx.textBaseline = 'middle';\n\t\t\t\t\t\tctx.fillStyle = tickFontColor;\n\t\t\t\t\t\tctx.fillText(label, 0, -yCenterOffset);\n\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n});\n\n// INTERNAL: static default options, registered in src/index.js\nvar _defaults$3 = defaultConfig$3;\nscale_radialLinear._defaults = _defaults$3;\n\nvar valueOrDefault$c = helpers$1.valueOrDefault;\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, 15, 30]\n\t},\n\tminute: {\n\t\tcommon: true,\n\t\tsize: 60000,\n\t\tsteps: [1, 2, 5, 10, 15, 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 https://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$1(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\nfunction toTimestamp(scale, input) {\n\tvar adapter = scale._adapter;\n\tvar options = scale.options.time;\n\tvar parser = options.parser;\n\tvar format = parser || options.format;\n\tvar value = input;\n\n\tif (typeof parser === 'function') {\n\t\tvalue = parser(value);\n\t}\n\n\t// Only parse if its not a timestamp already\n\tif (!helpers$1.isFinite(value)) {\n\t\tvalue = typeof format === 'string'\n\t\t\t? adapter.parse(value, format)\n\t\t\t: adapter.parse(value);\n\t}\n\n\tif (value !== null) {\n\t\treturn +value;\n\t}\n\n\t// Labels are in an incompatible format and no `parser` has been provided.\n\t// The user might still use the deprecated `format` option for parsing.\n\tif (!parser && typeof format === 'function') {\n\t\tvalue = format(input);\n\n\t\t// `format` could return something else than a timestamp, if so, parse it\n\t\tif (!helpers$1.isFinite(value)) {\n\t\t\tvalue = adapter.parse(value);\n\t\t}\n\t}\n\n\treturn value;\n}\n\nfunction parse(scale, input) {\n\tif (helpers$1.isNullOrUndef(input)) {\n\t\treturn null;\n\t}\n\n\tvar options = scale.options.time;\n\tvar value = toTimestamp(scale, scale.getRightValue(input));\n\tif (value === null) {\n\t\treturn value;\n\t}\n\n\tif (options.round) {\n\t\tvalue = +scale._adapter.startOf(value, options.round);\n\t}\n\n\treturn value;\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 * 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(scale, ticks, minUnit, min, max) {\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 && scale._adapter.diff(max, min, 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(scale, min, max, capacity) {\n\tvar adapter = scale._adapter;\n\tvar options = scale.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 = valueOrDefault$c(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 = min;\n\tvar last = 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 = +adapter.startOf(first, 'isoWeek', weekday);\n\t\tlast = +adapter.startOf(last, 'isoWeek', weekday);\n\t}\n\n\t// Align first/last ticks on unit\n\tfirst = +adapter.startOf(first, weekday ? 'day' : minor);\n\tlast = +adapter.startOf(last, weekday ? 'day' : minor);\n\n\t// Make sure that the last tick include max\n\tif (last < max) {\n\t\tlast = +adapter.add(last, 1, minor);\n\t}\n\n\ttime = 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 = +adapter.startOf(time, major);\n\t\ttime = +adapter.add(time, ~~((first - time) / (interval.size * stepSize)) * stepSize, minor);\n\t}\n\n\tfor (; time < last; time = +adapter.add(time, stepSize, minor)) {\n\t\tticks.push(+time);\n\t}\n\n\tticks.push(+time);\n\n\treturn ticks;\n}\n\n/**\n * Returns the start and end offsets from edges in the form of {start, end}\n * where each value is a relative width to the scale and ranges between 0 and 1.\n * They add extra margins on the both sides by scaling down the original scale.\n * Offsets are added when the `offset` option is true.\n */\nfunction computeOffsets(table, ticks, min, max, options) {\n\tvar start = 0;\n\tvar end = 0;\n\tvar first, last;\n\n\tif (options.offset && ticks.length) {\n\t\tif (!options.time.min) {\n\t\t\tfirst = interpolate$1(table, 'time', ticks[0], 'pos');\n\t\t\tif (ticks.length === 1) {\n\t\t\t\tstart = 1 - first;\n\t\t\t} else {\n\t\t\t\tstart = (interpolate$1(table, 'time', ticks[1], 'pos') - first) / 2;\n\t\t\t}\n\t\t}\n\t\tif (!options.time.max) {\n\t\t\tlast = interpolate$1(table, 'time', ticks[ticks.length - 1], 'pos');\n\t\t\tif (ticks.length === 1) {\n\t\t\t\tend = last;\n\t\t\t} else {\n\t\t\t\tend = (last - interpolate$1(table, 'time', ticks[ticks.length - 2], 'pos')) / 2;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {start: start, end: end};\n}\n\nfunction ticksFromTimestamps(scale, 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 === +scale._adapter.startOf(value, 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\nvar defaultConfig$4 = {\n\tposition: 'bottom',\n\n\t/**\n\t * Data distribution along the scale:\n\t * - 'linear': data are spread according to their time (distances can vary),\n\t * - 'series': data are spread at the same distance from each other.\n\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t * @since 2.7.0\n\t */\n\tdistribution: 'linear',\n\n\t/**\n\t * Scale boundary strategy (bypassed by min/max time options)\n\t * - `data`: make sure data are fully visible, ticks outside are removed\n\t * - `ticks`: make sure ticks are fully visible, data outside are truncated\n\t * @see https://github.com/chartjs/Chart.js/pull/4556\n\t * @since 2.7.0\n\t */\n\tbounds: 'data',\n\n\tadapters: {},\n\ttime: {\n\t\tparser: false, // false == a pattern string from https://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\n\t\tformat: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from https://momentjs.com/docs/#/parsing/string-format/\n\t\tunit: false, // false == automatic or override with week, month, year, etc.\n\t\tround: false, // none, or override with week, month, year, etc.\n\t\tdisplayFormat: false, // DEPRECATED\n\t\tisoWeekday: false, // override week start day - see https://momentjs.com/docs/#/get-set/iso-weekday/\n\t\tminUnit: 'millisecond',\n\t\tdisplayFormats: {}\n\t},\n\tticks: {\n\t\tautoSkip: false,\n\n\t\t/**\n\t\t * Ticks generation input values:\n\t\t * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n\t\t * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n\t\t * - 'labels': generates ticks from user given `data.labels` values ONLY.\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t\t * @since 2.7.0\n\t\t */\n\t\tsource: 'auto',\n\n\t\tmajor: {\n\t\t\tenabled: false\n\t\t}\n\t}\n};\n\nvar scale_time = core_scale.extend({\n\tinitialize: function() {\n\t\tthis.mergeTicksOptions();\n\t\tcore_scale.prototype.initialize.call(this);\n\t},\n\n\tupdate: function() {\n\t\tvar me = this;\n\t\tvar options = me.options;\n\t\tvar time = options.time || (options.time = {});\n\t\tvar adapter = me._adapter = new core_adapters._date(options.adapters.date);\n\n\t\t// DEPRECATIONS: output a message only one time per update\n\t\tif (time.format) {\n\t\t\tconsole.warn('options.time.format is deprecated and replaced by options.time.parser.');\n\t\t}\n\n\t\t// Backward compatibility: before introducing adapter, `displayFormats` was\n\t\t// supposed to contain *all* unit/string pairs but this can't be resolved\n\t\t// when loading the scale (adapters are loaded afterward), so let's populate\n\t\t// missing formats on update\n\t\thelpers$1.mergeIf(time.displayFormats, adapter.formats());\n\n\t\treturn core_scale.prototype.update.apply(me, arguments);\n\t},\n\n\t/**\n\t * Allows data to be referenced via 't' attribute\n\t */\n\tgetRightValue: function(rawValue) {\n\t\tif (rawValue && rawValue.t !== undefined) {\n\t\t\trawValue = rawValue.t;\n\t\t}\n\t\treturn core_scale.prototype.getRightValue.call(this, rawValue);\n\t},\n\n\tdetermineDataLimits: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar adapter = me._adapter;\n\t\tvar timeOpts = me.options.time;\n\t\tvar unit = timeOpts.unit || 'day';\n\t\tvar min = MAX_INTEGER;\n\t\tvar max = MIN_INTEGER;\n\t\tvar timestamps = [];\n\t\tvar datasets = [];\n\t\tvar labels = [];\n\t\tvar i, j, ilen, jlen, data, timestamp;\n\t\tvar dataLabels = chart.data.labels || [];\n\n\t\t// Convert labels to timestamps\n\t\tfor (i = 0, ilen = dataLabels.length; i < ilen; ++i) {\n\t\t\tlabels.push(parse(me, dataLabels[i]));\n\t\t}\n\n\t\t// Convert data to timestamps\n\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\tif (chart.isDatasetVisible(i)) {\n\t\t\t\tdata = chart.data.datasets[i].data;\n\n\t\t\t\t// Let's consider that all data have the same format.\n\t\t\t\tif (helpers$1.isObject(data[0])) {\n\t\t\t\t\tdatasets[i] = [];\n\n\t\t\t\t\tfor (j = 0, jlen = data.length; j < jlen; ++j) {\n\t\t\t\t\t\ttimestamp = parse(me, data[j]);\n\t\t\t\t\t\ttimestamps.push(timestamp);\n\t\t\t\t\t\tdatasets[i][j] = timestamp;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor (j = 0, jlen = labels.length; j < jlen; ++j) {\n\t\t\t\t\t\ttimestamps.push(labels[j]);\n\t\t\t\t\t}\n\t\t\t\t\tdatasets[i] = labels.slice(0);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdatasets[i] = [];\n\t\t\t}\n\t\t}\n\n\t\tif (labels.length) {\n\t\t\t// Sort labels **after** data have been converted\n\t\t\tlabels = arrayUnique(labels).sort(sorter);\n\t\t\tmin = Math.min(min, labels[0]);\n\t\t\tmax = Math.max(max, labels[labels.length - 1]);\n\t\t}\n\n\t\tif (timestamps.length) {\n\t\t\ttimestamps = arrayUnique(timestamps).sort(sorter);\n\t\t\tmin = Math.min(min, timestamps[0]);\n\t\t\tmax = Math.max(max, timestamps[timestamps.length - 1]);\n\t\t}\n\n\t\tmin = parse(me, timeOpts.min) || min;\n\t\tmax = parse(me, timeOpts.max) || max;\n\n\t\t// In case there is no valid min/max, set limits based on unit time option\n\t\tmin = min === MAX_INTEGER ? +adapter.startOf(Date.now(), unit) : min;\n\t\tmax = max === MIN_INTEGER ? +adapter.endOf(Date.now(), unit) + 1 : max;\n\n\t\t// Make sure that max is strictly higher than min (required by the lookup table)\n\t\tme.min = Math.min(min, max);\n\t\tme.max = Math.max(min + 1, max);\n\n\t\t// PRIVATE\n\t\tme._horizontal = me.isHorizontal();\n\t\tme._table = [];\n\t\tme._timestamps = {\n\t\t\tdata: timestamps,\n\t\t\tdatasets: datasets,\n\t\t\tlabels: labels\n\t\t};\n\t},\n\n\tbuildTicks: function() {\n\t\tvar me = this;\n\t\tvar min = me.min;\n\t\tvar max = me.max;\n\t\tvar options = me.options;\n\t\tvar timeOpts = options.time;\n\t\tvar timestamps = [];\n\t\tvar ticks = [];\n\t\tvar i, ilen, timestamp;\n\n\t\tswitch (options.ticks.source) {\n\t\tcase 'data':\n\t\t\ttimestamps = me._timestamps.data;\n\t\t\tbreak;\n\t\tcase 'labels':\n\t\t\ttimestamps = me._timestamps.labels;\n\t\t\tbreak;\n\t\tcase 'auto':\n\t\tdefault:\n\t\t\ttimestamps = generate(me, min, max, me.getLabelCapacity(min), options);\n\t\t}\n\n\t\tif (options.bounds === 'ticks' && timestamps.length) {\n\t\t\tmin = timestamps[0];\n\t\t\tmax = timestamps[timestamps.length - 1];\n\t\t}\n\n\t\t// Enforce limits with user min/max options\n\t\tmin = parse(me, timeOpts.min) || min;\n\t\tmax = parse(me, timeOpts.max) || max;\n\n\t\t// Remove ticks outside the min/max range\n\t\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\t\ttimestamp = timestamps[i];\n\t\t\tif (timestamp >= min && timestamp <= max) {\n\t\t\t\tticks.push(timestamp);\n\t\t\t}\n\t\t}\n\n\t\tme.min = min;\n\t\tme.max = max;\n\n\t\t// PRIVATE\n\t\tme._unit = timeOpts.unit || determineUnitForFormatting(me, ticks, timeOpts.minUnit, me.min, me.max);\n\t\tme._majorUnit = determineMajorUnit(me._unit);\n\t\tme._table = buildLookupTable(me._timestamps.data, min, max, options.distribution);\n\t\tme._offsets = computeOffsets(me._table, ticks, min, max, options);\n\n\t\tif (options.ticks.reverse) {\n\t\t\tticks.reverse();\n\t\t}\n\n\t\treturn ticksFromTimestamps(me, ticks, me._majorUnit);\n\t},\n\n\tgetLabelForIndex: function(index, datasetIndex) {\n\t\tvar me = this;\n\t\tvar adapter = me._adapter;\n\t\tvar data = me.chart.data;\n\t\tvar timeOpts = me.options.time;\n\t\tvar label = data.labels && index < data.labels.length ? data.labels[index] : '';\n\t\tvar value = data.datasets[datasetIndex].data[index];\n\n\t\tif (helpers$1.isObject(value)) {\n\t\t\tlabel = me.getRightValue(value);\n\t\t}\n\t\tif (timeOpts.tooltipFormat) {\n\t\t\treturn adapter.format(toTimestamp(me, label), timeOpts.tooltipFormat);\n\t\t}\n\t\tif (typeof label === 'string') {\n\t\t\treturn label;\n\t\t}\n\t\treturn adapter.format(toTimestamp(me, label), timeOpts.displayFormats.datetime);\n\t},\n\n\t/**\n\t * Function to format an individual tick mark\n\t * @private\n\t */\n\ttickFormatFunction: function(time, index, ticks, format) {\n\t\tvar me = this;\n\t\tvar adapter = me._adapter;\n\t\tvar options = me.options;\n\t\tvar formats = options.time.displayFormats;\n\t\tvar minorFormat = formats[me._unit];\n\t\tvar majorUnit = me._majorUnit;\n\t\tvar majorFormat = formats[majorUnit];\n\t\tvar majorTime = +adapter.startOf(time, majorUnit);\n\t\tvar majorTickOpts = options.ticks.major;\n\t\tvar major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime;\n\t\tvar label = adapter.format(time, format ? format : major ? majorFormat : minorFormat);\n\t\tvar tickOpts = major ? majorTickOpts : options.ticks.minor;\n\t\tvar formatter = valueOrDefault$c(tickOpts.callback, tickOpts.userCallback);\n\n\t\treturn formatter ? formatter(label, index, ticks) : label;\n\t},\n\n\tconvertTicksToLabels: function(ticks) {\n\t\tvar labels = [];\n\t\tvar i, ilen;\n\n\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\t\tlabels.push(this.tickFormatFunction(ticks[i].value, i, ticks));\n\t\t}\n\n\t\treturn labels;\n\t},\n\n\t/**\n\t * @private\n\t */\n\tgetPixelForOffset: function(time) {\n\t\tvar me = this;\n\t\tvar isReverse = me.options.ticks.reverse;\n\t\tvar size = me._horizontal ? me.width : me.height;\n\t\tvar start = me._horizontal ? isReverse ? me.right : me.left : isReverse ? me.bottom : me.top;\n\t\tvar pos = interpolate$1(me._table, 'time', time, 'pos');\n\t\tvar offset = size * (me._offsets.start + pos) / (me._offsets.start + 1 + me._offsets.end);\n\n\t\treturn isReverse ? start - offset : start + offset;\n\t},\n\n\tgetPixelForValue: function(value, index, datasetIndex) {\n\t\tvar me = this;\n\t\tvar time = null;\n\n\t\tif (index !== undefined && datasetIndex !== undefined) {\n\t\t\ttime = me._timestamps.datasets[datasetIndex][index];\n\t\t}\n\n\t\tif (time === null) {\n\t\t\ttime = parse(me, value);\n\t\t}\n\n\t\tif (time !== null) {\n\t\t\treturn me.getPixelForOffset(time);\n\t\t}\n\t},\n\n\tgetPixelForTick: function(index) {\n\t\tvar ticks = this.getTicks();\n\t\treturn index >= 0 && index < ticks.length ?\n\t\t\tthis.getPixelForOffset(ticks[index].value) :\n\t\t\tnull;\n\t},\n\n\tgetValueForPixel: function(pixel) {\n\t\tvar me = this;\n\t\tvar size = me._horizontal ? me.width : me.height;\n\t\tvar start = me._horizontal ? me.left : me.top;\n\t\tvar pos = (size ? (pixel - start) / size : 0) * (me._offsets.start + 1 + me._offsets.start) - me._offsets.end;\n\t\tvar time = interpolate$1(me._table, 'pos', pos, 'time');\n\n\t\t// DEPRECATION, we should return time directly\n\t\treturn me._adapter._create(time);\n\t},\n\n\t/**\n\t * Crude approximation of what the label width might be\n\t * @private\n\t */\n\tgetLabelWidth: function(label) {\n\t\tvar me = this;\n\t\tvar ticksOpts = me.options.ticks;\n\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\n\t\tvar angle = helpers$1.toRadians(ticksOpts.maxRotation);\n\t\tvar cosRotation = Math.cos(angle);\n\t\tvar sinRotation = Math.sin(angle);\n\t\tvar tickFontSize = valueOrDefault$c(ticksOpts.fontSize, core_defaults.global.defaultFontSize);\n\n\t\treturn (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tgetLabelCapacity: function(exampleTime) {\n\t\tvar me = this;\n\n\t\t// pick the longest format (milliseconds) for guestimation\n\t\tvar format = me.options.time.displayFormats.millisecond;\n\t\tvar exampleLabel = me.tickFormatFunction(exampleTime, 0, [], format);\n\t\tvar tickLabelWidth = me.getLabelWidth(exampleLabel);\n\t\tvar innerWidth = me.isHorizontal() ? me.width : me.height;\n\t\tvar capacity = Math.floor(innerWidth / tickLabelWidth);\n\n\t\treturn capacity > 0 ? capacity : 1;\n\t}\n});\n\n// INTERNAL: static default options, registered in src/index.js\nvar _defaults$4 = defaultConfig$4;\nscale_time._defaults = _defaults$4;\n\nvar scales = {\n\tcategory: scale_category,\n\tlinear: scale_linear,\n\tlogarithmic: scale_logarithmic,\n\tradialLinear: scale_radialLinear,\n\ttime: scale_time\n};\n\nvar FORMATS = {\n\tdatetime: 'MMM D, YYYY, h:mm:ss a',\n\tmillisecond: 'h:mm:ss.SSS a',\n\tsecond: 'h:mm:ss a',\n\tminute: 'h:mm a',\n\thour: 'hA',\n\tday: 'MMM D',\n\tweek: 'll',\n\tmonth: 'MMM YYYY',\n\tquarter: '[Q]Q - YYYY',\n\tyear: 'YYYY'\n};\n\ncore_adapters._date.override(typeof moment === 'function' ? {\n\t_id: 'moment', // DEBUG ONLY\n\n\tformats: function() {\n\t\treturn FORMATS;\n\t},\n\n\tparse: function(value, format) {\n\t\tif (typeof value === 'string' && typeof format === 'string') {\n\t\t\tvalue = moment(value, format);\n\t\t} else if (!(value instanceof moment)) {\n\t\t\tvalue = moment(value);\n\t\t}\n\t\treturn value.isValid() ? value.valueOf() : null;\n\t},\n\n\tformat: function(time, format) {\n\t\treturn moment(time).format(format);\n\t},\n\n\tadd: function(time, amount, unit) {\n\t\treturn moment(time).add(amount, unit).valueOf();\n\t},\n\n\tdiff: function(max, min, unit) {\n\t\treturn moment.duration(moment(max).diff(moment(min))).as(unit);\n\t},\n\n\tstartOf: function(time, unit, weekday) {\n\t\ttime = moment(time);\n\t\tif (unit === 'isoWeek') {\n\t\t\treturn time.isoWeekday(weekday).valueOf();\n\t\t}\n\t\treturn time.startOf(unit).valueOf();\n\t},\n\n\tendOf: function(time, unit) {\n\t\treturn moment(time).endOf(unit).valueOf();\n\t},\n\n\t// DEPRECATIONS\n\n\t/**\n\t * Provided for backward compatibility with scale.getValueForPixel().\n\t * @deprecated since version 2.8.0\n\t * @todo remove at version 3\n\t * @private\n\t */\n\t_create: function(time) {\n\t\treturn moment(time);\n\t},\n} : {});\n\ncore_defaults._set('global', {\n\tplugins: {\n\t\tfiller: {\n\t\t\tpropagate: true\n\t\t}\n\t}\n});\n\nvar mappers = {\n\tdataset: function(source) {\n\t\tvar index = source.fill;\n\t\tvar chart = source.chart;\n\t\tvar meta = chart.getDatasetMeta(index);\n\t\tvar visible = meta && chart.isDatasetVisible(index);\n\t\tvar points = (visible && meta.dataset._children) || [];\n\t\tvar length = points.length || 0;\n\n\t\treturn !length ? null : function(point, i) {\n\t\t\treturn (i < length && points[i]._view) || null;\n\t\t};\n\t},\n\n\tboundary: function(source) {\n\t\tvar boundary = source.boundary;\n\t\tvar x = boundary ? boundary.x : null;\n\t\tvar y = boundary ? boundary.y : null;\n\n\t\treturn function(point) {\n\t\t\treturn {\n\t\t\t\tx: x === null ? point.x : x,\n\t\t\t\ty: y === null ? point.y : y,\n\t\t\t};\n\t\t};\n\t}\n};\n\n// @todo if (fill[0] === '#')\nfunction decodeFill(el, index, count) {\n\tvar model = el._model || {};\n\tvar fill = model.fill;\n\tvar target;\n\n\tif (fill === undefined) {\n\t\tfill = !!model.backgroundColor;\n\t}\n\n\tif (fill === false || fill === null) {\n\t\treturn false;\n\t}\n\n\tif (fill === true) {\n\t\treturn 'origin';\n\t}\n\n\ttarget = parseFloat(fill, 10);\n\tif (isFinite(target) && Math.floor(target) === target) {\n\t\tif (fill[0] === '-' || fill[0] === '+') {\n\t\t\ttarget = index + target;\n\t\t}\n\n\t\tif (target === index || target < 0 || target >= count) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn target;\n\t}\n\n\tswitch (fill) {\n\t// compatibility\n\tcase 'bottom':\n\t\treturn 'start';\n\tcase 'top':\n\t\treturn 'end';\n\tcase 'zero':\n\t\treturn 'origin';\n\t// supported boundaries\n\tcase 'origin':\n\tcase 'start':\n\tcase 'end':\n\t\treturn fill;\n\t// invalid fill values\n\tdefault:\n\t\treturn false;\n\t}\n}\n\nfunction computeBoundary(source) {\n\tvar model = source.el._model || {};\n\tvar scale = source.el._scale || {};\n\tvar fill = source.fill;\n\tvar target = null;\n\tvar horizontal;\n\n\tif (isFinite(fill)) {\n\t\treturn null;\n\t}\n\n\t// Backward compatibility: until v3, we still need to support boundary values set on\n\t// the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\n\t// controllers might still use it (e.g. the Smith chart).\n\n\tif (fill === 'start') {\n\t\ttarget = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\n\t} else if (fill === 'end') {\n\t\ttarget = model.scaleTop === undefined ? scale.top : model.scaleTop;\n\t} else if (model.scaleZero !== undefined) {\n\t\ttarget = model.scaleZero;\n\t} else if (scale.getBasePosition) {\n\t\ttarget = scale.getBasePosition();\n\t} else if (scale.getBasePixel) {\n\t\ttarget = scale.getBasePixel();\n\t}\n\n\tif (target !== undefined && target !== null) {\n\t\tif (target.x !== undefined && target.y !== undefined) {\n\t\t\treturn target;\n\t\t}\n\n\t\tif (helpers$1.isFinite(target)) {\n\t\t\thorizontal = scale.isHorizontal();\n\t\t\treturn {\n\t\t\t\tx: horizontal ? target : null,\n\t\t\t\ty: horizontal ? null : target\n\t\t\t};\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction resolveTarget(sources, index, propagate) {\n\tvar source = sources[index];\n\tvar fill = source.fill;\n\tvar visited = [index];\n\tvar target;\n\n\tif (!propagate) {\n\t\treturn fill;\n\t}\n\n\twhile (fill !== false && visited.indexOf(fill) === -1) {\n\t\tif (!isFinite(fill)) {\n\t\t\treturn fill;\n\t\t}\n\n\t\ttarget = sources[fill];\n\t\tif (!target) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (target.visible) {\n\t\t\treturn fill;\n\t\t}\n\n\t\tvisited.push(fill);\n\t\tfill = target.fill;\n\t}\n\n\treturn false;\n}\n\nfunction createMapper(source) {\n\tvar fill = source.fill;\n\tvar type = 'dataset';\n\n\tif (fill === false) {\n\t\treturn null;\n\t}\n\n\tif (!isFinite(fill)) {\n\t\ttype = 'boundary';\n\t}\n\n\treturn mappers[type](source);\n}\n\nfunction isDrawable(point) {\n\treturn point && !point.skip;\n}\n\nfunction drawArea(ctx, curve0, curve1, len0, len1) {\n\tvar i;\n\n\tif (!len0 || !len1) {\n\t\treturn;\n\t}\n\n\t// building first area curve (normal)\n\tctx.moveTo(curve0[0].x, curve0[0].y);\n\tfor (i = 1; i < len0; ++i) {\n\t\thelpers$1.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\n\t}\n\n\t// joining the two area curves\n\tctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\n\n\t// building opposite area curve (reverse)\n\tfor (i = len1 - 1; i > 0; --i) {\n\t\thelpers$1.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\n\t}\n}\n\nfunction doFill(ctx, points, mapper, view, color, loop) {\n\tvar count = points.length;\n\tvar span = view.spanGaps;\n\tvar curve0 = [];\n\tvar curve1 = [];\n\tvar len0 = 0;\n\tvar len1 = 0;\n\tvar i, ilen, index, p0, p1, d0, d1;\n\n\tctx.beginPath();\n\n\tfor (i = 0, ilen = (count + !!loop); i < ilen; ++i) {\n\t\tindex = i % count;\n\t\tp0 = points[index]._view;\n\t\tp1 = mapper(p0, index, view);\n\t\td0 = isDrawable(p0);\n\t\td1 = isDrawable(p1);\n\n\t\tif (d0 && d1) {\n\t\t\tlen0 = curve0.push(p0);\n\t\t\tlen1 = curve1.push(p1);\n\t\t} else if (len0 && len1) {\n\t\t\tif (!span) {\n\t\t\t\tdrawArea(ctx, curve0, curve1, len0, len1);\n\t\t\t\tlen0 = len1 = 0;\n\t\t\t\tcurve0 = [];\n\t\t\t\tcurve1 = [];\n\t\t\t} else {\n\t\t\t\tif (d0) {\n\t\t\t\t\tcurve0.push(p0);\n\t\t\t\t}\n\t\t\t\tif (d1) {\n\t\t\t\t\tcurve1.push(p1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tdrawArea(ctx, curve0, curve1, len0, len1);\n\n\tctx.closePath();\n\tctx.fillStyle = color;\n\tctx.fill();\n}\n\nvar plugin_filler = {\n\tid: 'filler',\n\n\tafterDatasetsUpdate: function(chart, options) {\n\t\tvar count = (chart.data.datasets || []).length;\n\t\tvar propagate = options.propagate;\n\t\tvar sources = [];\n\t\tvar meta, i, el, source;\n\n\t\tfor (i = 0; i < count; ++i) {\n\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\tel = meta.dataset;\n\t\t\tsource = null;\n\n\t\t\tif (el && el._model && el instanceof elements.Line) {\n\t\t\t\tsource = {\n\t\t\t\t\tvisible: chart.isDatasetVisible(i),\n\t\t\t\t\tfill: decodeFill(el, i, count),\n\t\t\t\t\tchart: chart,\n\t\t\t\t\tel: el\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tmeta.$filler = source;\n\t\t\tsources.push(source);\n\t\t}\n\n\t\tfor (i = 0; i < count; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!source) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tsource.fill = resolveTarget(sources, i, propagate);\n\t\t\tsource.boundary = computeBoundary(source);\n\t\t\tsource.mapper = createMapper(source);\n\t\t}\n\t},\n\n\tbeforeDatasetDraw: function(chart, args) {\n\t\tvar meta = args.meta.$filler;\n\t\tif (!meta) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar ctx = chart.ctx;\n\t\tvar el = meta.el;\n\t\tvar view = el._view;\n\t\tvar points = el._children || [];\n\t\tvar mapper = meta.mapper;\n\t\tvar color = view.backgroundColor || core_defaults.global.defaultColor;\n\n\t\tif (mapper && color && points.length) {\n\t\t\thelpers$1.canvas.clipArea(ctx, chart.chartArea);\n\t\t\tdoFill(ctx, points, mapper, view, color, el._loop);\n\t\t\thelpers$1.canvas.unclipArea(ctx);\n\t\t}\n\t}\n};\n\nvar noop$1 = helpers$1.noop;\nvar valueOrDefault$d = helpers$1.valueOrDefault;\n\ncore_defaults._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\t\tonLeave: 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$1.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$1.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\n/**\n * Helper function to get the box width based on the usePointStyle option\n * @param {object} labelopts - the label options on the legend\n * @param {number} fontSize - the label font size\n * @return {number} width of the color box area\n */\nfunction getBoxWidth(labelOpts, fontSize) {\n\treturn labelOpts.usePointStyle && labelOpts.boxWidth > fontSize ?\n\t\tfontSize :\n\t\tlabelOpts.boxWidth;\n}\n\n/**\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n */\nvar Legend = core_element.extend({\n\n\tinitialize: function(config) {\n\t\thelpers$1.extend(this, config);\n\n\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\tthis.legendHitBoxes = [];\n\n\t\t/**\n \t\t * @private\n \t\t */\n\t\tthis._hoveredItem = null;\n\n\t\t// Are we in doughnut mode which has a different data type\n\t\tthis.doughnutMode = false;\n\t},\n\n\t// These methods are ordered by lifecycle. Utilities then follow.\n\t// Any function defined here is inherited by all legend types.\n\t// Any function can be extended by the legend type\n\n\tbeforeUpdate: noop$1,\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = margins;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\t\t// Labels\n\t\tme.beforeBuildLabels();\n\t\tme.buildLabels();\n\t\tme.afterBuildLabels();\n\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\t},\n\tafterUpdate: noop$1,\n\n\t//\n\n\tbeforeSetDimensions: noop$1,\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\n\t\t// Reset minSize\n\t\tme.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t},\n\tafterSetDimensions: noop$1,\n\n\t//\n\n\tbeforeBuildLabels: noop$1,\n\tbuildLabels: function() {\n\t\tvar me = this;\n\t\tvar labelOpts = me.options.labels || {};\n\t\tvar legendItems = helpers$1.callback(labelOpts.generateLabels, [me.chart], me) || [];\n\n\t\tif (labelOpts.filter) {\n\t\t\tlegendItems = legendItems.filter(function(item) {\n\t\t\t\treturn labelOpts.filter(item, me.chart.data);\n\t\t\t});\n\t\t}\n\n\t\tif (me.options.reverse) {\n\t\t\tlegendItems.reverse();\n\t\t}\n\n\t\tme.legendItems = legendItems;\n\t},\n\tafterBuildLabels: noop$1,\n\n\t//\n\n\tbeforeFit: noop$1,\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar labelOpts = opts.labels;\n\t\tvar display = opts.display;\n\n\t\tvar ctx = me.ctx;\n\n\t\tvar labelFont = helpers$1.options._parseFont(labelOpts);\n\t\tvar fontSize = labelFont.size;\n\n\t\t// Reset hit boxes\n\t\tvar hitboxes = me.legendHitBoxes = [];\n\n\t\tvar minSize = me.minSize;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tif (isHorizontal) {\n\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\tminSize.height = display ? 10 : 0;\n\t\t} else {\n\t\t\tminSize.width = display ? 10 : 0;\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\t// Increase sizes here\n\t\tif (display) {\n\t\t\tctx.font = labelFont.string;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\t// Labels\n\n\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\tvar lineWidths = me.lineWidths = [0];\n\t\t\t\tvar totalHeight = 0;\n\n\t\t\t\tctx.textAlign = 'left';\n\t\t\t\tctx.textBaseline = 'top';\n\n\t\t\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\tif (i === 0 || lineWidths[lineWidths.length - 1] + width + labelOpts.padding > minSize.width) {\n\t\t\t\t\t\ttotalHeight += fontSize + labelOpts.padding;\n\t\t\t\t\t\tlineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = labelOpts.padding;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t};\n\n\t\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\n\t\t\t\t});\n\n\t\t\t\tminSize.height += totalHeight;\n\n\t\t\t} else {\n\t\t\t\tvar vPadding = labelOpts.padding;\n\t\t\t\tvar columnWidths = me.columnWidths = [];\n\t\t\t\tvar totalWidth = labelOpts.padding;\n\t\t\t\tvar currentColWidth = 0;\n\t\t\t\tvar currentColHeight = 0;\n\t\t\t\tvar itemHeight = fontSize + vPadding;\n\n\t\t\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\t// If too tall, go to new column\n\t\t\t\t\tif (i > 0 && currentColHeight + itemHeight > minSize.height - vPadding) {\n\t\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\n\t\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\n\n\t\t\t\t\t\tcurrentColWidth = 0;\n\t\t\t\t\t\tcurrentColHeight = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Get max width\n\t\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\n\t\t\t\t\tcurrentColHeight += itemHeight;\n\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\twidth: itemWidth,\n\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\ttotalWidth += currentColWidth;\n\t\t\t\tcolumnWidths.push(currentColWidth);\n\t\t\t\tminSize.width += totalWidth;\n\t\t\t}\n\t\t}\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\t},\n\tafterFit: noop$1,\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t},\n\n\t// Actually draw the legend on the canvas\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar labelOpts = opts.labels;\n\t\tvar globalDefaults = core_defaults.global;\n\t\tvar defaultColor = globalDefaults.defaultColor;\n\t\tvar lineDefault = globalDefaults.elements.line;\n\t\tvar legendWidth = me.width;\n\t\tvar lineWidths = me.lineWidths;\n\n\t\tif (opts.display) {\n\t\t\tvar ctx = me.ctx;\n\t\t\tvar fontColor = valueOrDefault$d(labelOpts.fontColor, globalDefaults.defaultFontColor);\n\t\t\tvar labelFont = helpers$1.options._parseFont(labelOpts);\n\t\t\tvar fontSize = labelFont.size;\n\t\t\tvar cursor;\n\n\t\t\t// Canvas setup\n\t\t\tctx.textAlign = 'left';\n\t\t\tctx.textBaseline = 'middle';\n\t\t\tctx.lineWidth = 0.5;\n\t\t\tctx.strokeStyle = fontColor; // for strikethrough effect\n\t\t\tctx.fillStyle = fontColor; // render in correct colour\n\t\t\tctx.font = labelFont.string;\n\n\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\tvar hitboxes = me.legendHitBoxes;\n\n\t\t\t// current position\n\t\t\tvar drawLegendBox = function(x, y, legendItem) {\n\t\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Set the ctx for the box\n\t\t\t\tctx.save();\n\n\t\t\t\tvar lineWidth = valueOrDefault$d(legendItem.lineWidth, lineDefault.borderWidth);\n\t\t\t\tctx.fillStyle = valueOrDefault$d(legendItem.fillStyle, defaultColor);\n\t\t\t\tctx.lineCap = valueOrDefault$d(legendItem.lineCap, lineDefault.borderCapStyle);\n\t\t\t\tctx.lineDashOffset = valueOrDefault$d(legendItem.lineDashOffset, lineDefault.borderDashOffset);\n\t\t\t\tctx.lineJoin = valueOrDefault$d(legendItem.lineJoin, lineDefault.borderJoinStyle);\n\t\t\t\tctx.lineWidth = lineWidth;\n\t\t\t\tctx.strokeStyle = valueOrDefault$d(legendItem.strokeStyle, defaultColor);\n\n\t\t\t\tif (ctx.setLineDash) {\n\t\t\t\t\t// IE 9 and 10 do not support line dash\n\t\t\t\t\tctx.setLineDash(valueOrDefault$d(legendItem.lineDash, lineDefault.borderDash));\n\t\t\t\t}\n\n\t\t\t\tif (opts.labels && opts.labels.usePointStyle) {\n\t\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\n\t\t\t\t\t// x and y to be center of figure (instead of top left)\n\t\t\t\t\tvar radius = boxWidth * Math.SQRT2 / 2;\n\t\t\t\t\tvar centerX = x + boxWidth / 2;\n\t\t\t\t\tvar centerY = y + fontSize / 2;\n\n\t\t\t\t\t// Draw pointStyle as legend symbol\n\t\t\t\t\thelpers$1.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY);\n\t\t\t\t} else {\n\t\t\t\t\t// Draw box as legend symbol\n\t\t\t\t\tif (lineWidth !== 0) {\n\t\t\t\t\t\tctx.strokeRect(x, y, boxWidth, fontSize);\n\t\t\t\t\t}\n\t\t\t\t\tctx.fillRect(x, y, boxWidth, fontSize);\n\t\t\t\t}\n\n\t\t\t\tctx.restore();\n\t\t\t};\n\t\t\tvar fillText = function(x, y, legendItem, textWidth) {\n\t\t\t\tvar halfFontSize = fontSize / 2;\n\t\t\t\tvar xLeft = boxWidth + halfFontSize + x;\n\t\t\t\tvar yMiddle = y + halfFontSize;\n\n\t\t\t\tctx.fillText(legendItem.text, xLeft, yMiddle);\n\n\t\t\t\tif (legendItem.hidden) {\n\t\t\t\t\t// Strikethrough the text if hidden\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.lineWidth = 2;\n\t\t\t\t\tctx.moveTo(xLeft, yMiddle);\n\t\t\t\t\tctx.lineTo(xLeft + textWidth, yMiddle);\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Horizontal\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tif (isHorizontal) {\n\t\t\t\tcursor = {\n\t\t\t\t\tx: me.left + ((legendWidth - lineWidths[0]) / 2) + labelOpts.padding,\n\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\tline: 0\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tcursor = {\n\t\t\t\t\tx: me.left + labelOpts.padding,\n\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\tline: 0\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar itemHeight = fontSize + labelOpts.padding;\n\t\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\n\t\t\t\tvar textWidth = ctx.measureText(legendItem.text).width;\n\t\t\t\tvar width = boxWidth + (fontSize / 2) + textWidth;\n\t\t\t\tvar x = cursor.x;\n\t\t\t\tvar y = cursor.y;\n\n\t\t\t\t// Use (me.left + me.minSize.width) and (me.top + me.minSize.height)\n\t\t\t\t// instead of me.right and me.bottom because me.width and me.height\n\t\t\t\t// may have been changed since me.minSize was calculated\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tif (i > 0 && x + width + labelOpts.padding > me.left + me.minSize.width) {\n\t\t\t\t\t\ty = cursor.y += itemHeight;\n\t\t\t\t\t\tcursor.line++;\n\t\t\t\t\t\tx = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2) + labelOpts.padding;\n\t\t\t\t\t}\n\t\t\t\t} else if (i > 0 && y + itemHeight > me.top + me.minSize.height) {\n\t\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\n\t\t\t\t\ty = cursor.y = me.top + labelOpts.padding;\n\t\t\t\t\tcursor.line++;\n\t\t\t\t}\n\n\t\t\t\tdrawLegendBox(x, y, legendItem);\n\n\t\t\t\thitboxes[i].left = x;\n\t\t\t\thitboxes[i].top = y;\n\n\t\t\t\t// Fill the actual label\n\t\t\t\tfillText(x, y, legendItem, textWidth);\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tcursor.x += width + labelOpts.padding;\n\t\t\t\t} else {\n\t\t\t\t\tcursor.y += itemHeight;\n\t\t\t\t}\n\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getLegendItemAt: function(x, y) {\n\t\tvar me = this;\n\t\tvar i, hitBox, lh;\n\n\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\n\t\t\t// See if we are touching one of the dataset boxes\n\t\t\tlh = me.legendHitBoxes;\n\t\t\tfor (i = 0; i < lh.length; ++i) {\n\t\t\t\thitBox = lh[i];\n\n\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// Touching an element\n\t\t\t\t\treturn me.legendItems[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event - The event to handle\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar type = e.type === 'mouseup' ? 'click' : e.type;\n\t\tvar hoveredItem;\n\n\t\tif (type === 'mousemove') {\n\t\t\tif (!opts.onHover && !opts.onLeave) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (type === 'click') {\n\t\t\tif (!opts.onClick) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\t// Chart event already has relative position in it\n\t\thoveredItem = me._getLegendItemAt(e.x, e.y);\n\n\t\tif (type === 'click') {\n\t\t\tif (hoveredItem && opts.onClick) {\n\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\topts.onClick.call(me, e.native, hoveredItem);\n\t\t\t}\n\t\t} else {\n\t\t\tif (opts.onLeave && hoveredItem !== me._hoveredItem) {\n\t\t\t\tif (me._hoveredItem) {\n\t\t\t\t\topts.onLeave.call(me, e.native, me._hoveredItem);\n\t\t\t\t}\n\t\t\t\tme._hoveredItem = hoveredItem;\n\t\t\t}\n\n\t\t\tif (opts.onHover && hoveredItem) {\n\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\topts.onHover.call(me, e.native, hoveredItem);\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction createNewLegendAndAttach(chart, legendOpts) {\n\tvar legend = new Legend({\n\t\tctx: chart.ctx,\n\t\toptions: legendOpts,\n\t\tchart: chart\n\t});\n\n\tcore_layouts.configure(chart, legend, legendOpts);\n\tcore_layouts.addBox(chart, legend);\n\tchart.legend = legend;\n}\n\nvar plugin_legend = {\n\tid: 'legend',\n\n\t/**\n\t * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\n\t * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\n\t * the plugin, which one will be re-exposed in the chart.js file.\n\t * https://github.com/chartjs/Chart.js/pull/2640\n\t * @private\n\t */\n\t_element: Legend,\n\n\tbeforeInit: function(chart) {\n\t\tvar legendOpts = chart.options.legend;\n\n\t\tif (legendOpts) {\n\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t}\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar legendOpts = chart.options.legend;\n\t\tvar legend = chart.legend;\n\n\t\tif (legendOpts) {\n\t\t\thelpers$1.mergeIf(legendOpts, core_defaults.global.legend);\n\n\t\t\tif (legend) {\n\t\t\t\tcore_layouts.configure(chart, legend, legendOpts);\n\t\t\t\tlegend.options = legendOpts;\n\t\t\t} else {\n\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t\t}\n\t\t} else if (legend) {\n\t\t\tcore_layouts.removeBox(chart, legend);\n\t\t\tdelete chart.legend;\n\t\t}\n\t},\n\n\tafterEvent: function(chart, e) {\n\t\tvar legend = chart.legend;\n\t\tif (legend) {\n\t\t\tlegend.handleEvent(e);\n\t\t}\n\t}\n};\n\nvar noop$2 = helpers$1.noop;\n\ncore_defaults._set('global', {\n\ttitle: {\n\t\tdisplay: false,\n\t\tfontStyle: 'bold',\n\t\tfullWidth: true,\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\n/**\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n */\nvar Title = core_element.extend({\n\tinitialize: function(config) {\n\t\tvar me = this;\n\t\thelpers$1.extend(me, config);\n\n\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\tme.legendHitBoxes = [];\n\t},\n\n\t// These methods are ordered by lifecycle. Utilities then follow.\n\n\tbeforeUpdate: noop$2,\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = margins;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\t\t// Labels\n\t\tme.beforeBuildLabels();\n\t\tme.buildLabels();\n\t\tme.afterBuildLabels();\n\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\n\t},\n\tafterUpdate: noop$2,\n\n\t//\n\n\tbeforeSetDimensions: noop$2,\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\n\t\t// Reset minSize\n\t\tme.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t},\n\tafterSetDimensions: noop$2,\n\n\t//\n\n\tbeforeBuildLabels: noop$2,\n\tbuildLabels: noop$2,\n\tafterBuildLabels: noop$2,\n\n\t//\n\n\tbeforeFit: noop$2,\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar display = opts.display;\n\t\tvar minSize = me.minSize;\n\t\tvar lineCount = helpers$1.isArray(opts.text) ? opts.text.length : 1;\n\t\tvar fontOpts = helpers$1.options._parseFont(opts);\n\t\tvar textSize = display ? (lineCount * fontOpts.lineHeight) + (opts.padding * 2) : 0;\n\n\t\tif (me.isHorizontal()) {\n\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\tminSize.height = textSize;\n\t\t} else {\n\t\t\tminSize.width = textSize;\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\n\t},\n\tafterFit: noop$2,\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\tvar pos = this.options.position;\n\t\treturn pos === 'top' || pos === 'bottom';\n\t},\n\n\t// Actually draw the title block on the canvas\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar ctx = me.ctx;\n\t\tvar opts = me.options;\n\n\t\tif (opts.display) {\n\t\t\tvar fontOpts = helpers$1.options._parseFont(opts);\n\t\t\tvar lineHeight = fontOpts.lineHeight;\n\t\t\tvar offset = lineHeight / 2 + opts.padding;\n\t\t\tvar rotation = 0;\n\t\t\tvar top = me.top;\n\t\t\tvar left = me.left;\n\t\t\tvar bottom = me.bottom;\n\t\t\tvar right = me.right;\n\t\t\tvar maxWidth, titleX, titleY;\n\n\t\t\tctx.fillStyle = helpers$1.valueOrDefault(opts.fontColor, core_defaults.global.defaultFontColor); // render in correct colour\n\t\t\tctx.font = fontOpts.string;\n\n\t\t\t// Horizontal\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\n\t\t\t\ttitleY = top + offset;\n\t\t\t\tmaxWidth = right - left;\n\t\t\t} else {\n\t\t\t\ttitleX = opts.position === 'left' ? left + offset : right - offset;\n\t\t\t\ttitleY = top + ((bottom - top) / 2);\n\t\t\t\tmaxWidth = bottom - top;\n\t\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\n\t\t\t}\n\n\t\t\tctx.save();\n\t\t\tctx.translate(titleX, titleY);\n\t\t\tctx.rotate(rotation);\n\t\t\tctx.textAlign = 'center';\n\t\t\tctx.textBaseline = 'middle';\n\n\t\t\tvar text = opts.text;\n\t\t\tif (helpers$1.isArray(text)) {\n\t\t\t\tvar y = 0;\n\t\t\t\tfor (var i = 0; i < text.length; ++i) {\n\t\t\t\t\tctx.fillText(text[i], 0, y, maxWidth);\n\t\t\t\t\ty += lineHeight;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tctx.fillText(text, 0, 0, maxWidth);\n\t\t\t}\n\n\t\t\tctx.restore();\n\t\t}\n\t}\n});\n\nfunction createNewTitleBlockAndAttach(chart, titleOpts) {\n\tvar title = new Title({\n\t\tctx: chart.ctx,\n\t\toptions: titleOpts,\n\t\tchart: chart\n\t});\n\n\tcore_layouts.configure(chart, title, titleOpts);\n\tcore_layouts.addBox(chart, title);\n\tchart.titleBlock = title;\n}\n\nvar plugin_title = {\n\tid: 'title',\n\n\t/**\n\t * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\n\t * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\n\t * the plugin, which one will be re-exposed in the chart.js file.\n\t * https://github.com/chartjs/Chart.js/pull/2640\n\t * @private\n\t */\n\t_element: Title,\n\n\tbeforeInit: function(chart) {\n\t\tvar titleOpts = chart.options.title;\n\n\t\tif (titleOpts) {\n\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t}\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar titleOpts = chart.options.title;\n\t\tvar titleBlock = chart.titleBlock;\n\n\t\tif (titleOpts) {\n\t\t\thelpers$1.mergeIf(titleOpts, core_defaults.global.title);\n\n\t\t\tif (titleBlock) {\n\t\t\t\tcore_layouts.configure(chart, titleBlock, titleOpts);\n\t\t\t\ttitleBlock.options = titleOpts;\n\t\t\t} else {\n\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t\t}\n\t\t} else if (titleBlock) {\n\t\t\tcore_layouts.removeBox(chart, titleBlock);\n\t\t\tdelete chart.titleBlock;\n\t\t}\n\t}\n};\n\nvar plugins = {};\nvar filler = plugin_filler;\nvar legend = plugin_legend;\nvar title = plugin_title;\nplugins.filler = filler;\nplugins.legend = legend;\nplugins.title = title;\n\n/**\n * @namespace Chart\n */\n\n\ncore_controller.helpers = helpers$1;\n\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\ncore_helpers(core_controller);\n\ncore_controller._adapters = core_adapters;\ncore_controller.Animation = core_animation;\ncore_controller.animationService = core_animations;\ncore_controller.controllers = controllers;\ncore_controller.DatasetController = core_datasetController;\ncore_controller.defaults = core_defaults;\ncore_controller.Element = core_element;\ncore_controller.elements = elements;\ncore_controller.Interaction = core_interaction;\ncore_controller.layouts = core_layouts;\ncore_controller.platform = platform;\ncore_controller.plugins = core_plugins;\ncore_controller.Scale = core_scale;\ncore_controller.scaleService = core_scaleService;\ncore_controller.Ticks = core_ticks;\ncore_controller.Tooltip = core_tooltip;\n\n// Register built-in scales\n\ncore_controller.helpers.each(scales, function(scale, type) {\n\tcore_controller.scaleService.registerScaleType(type, scale, scale._defaults);\n});\n\n// Load to register built-in adapters (as side effects)\n\n\n// Loading built-in plugins\n\nfor (var k in plugins) {\n\tif (plugins.hasOwnProperty(k)) {\n\t\tcore_controller.plugins.register(plugins[k]);\n\t}\n}\n\ncore_controller.platform.initialize();\n\nvar src = core_controller;\nif (typeof window !== 'undefined') {\n\twindow.Chart = core_controller;\n}\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Chart\n * @deprecated since version 2.8.0\n * @todo remove at version 3\n * @private\n */\ncore_controller.Chart = core_controller;\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Legend\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\ncore_controller.Legend = plugins.legend._element;\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Title\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\ncore_controller.Title = plugins.title._element;\n\n/**\n * Provided for backward compatibility, use Chart.plugins instead\n * @namespace Chart.pluginService\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\ncore_controller.pluginService = core_controller.plugins;\n\n/**\n * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\n * effect, instead simply create/register plugins via plain JavaScript objects.\n * @interface Chart.PluginBase\n * @deprecated since version 2.5.0\n * @todo remove at version 3\n * @private\n */\ncore_controller.PluginBase = core_controller.Element.extend({});\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 */\ncore_controller.canvasHelpers = core_controller.helpers.canvas;\n\n/**\n * Provided for backward compatibility, use Chart.layouts instead.\n * @namespace Chart.layoutService\n * @deprecated since version 2.7.3\n * @todo remove at version 3\n * @private\n */\ncore_controller.layoutService = core_controller.layouts;\n\n/**\n * Provided for backward compatibility, not available anymore.\n * @namespace Chart.LinearScaleBase\n * @deprecated since version 2.8\n * @todo remove at version 3\n * @private\n */\ncore_controller.LinearScaleBase = scale_linearbase;\n\n/**\n * Provided for backward compatibility, instead we should create a new Chart\n * by setting the type in the config (`new Chart(id, {type: '{chart-type}'}`).\n * @deprecated since version 2.8.0\n * @todo remove at version 3\n */\ncore_controller.helpers.each(\n\t[\n\t\t'Bar',\n\t\t'Bubble',\n\t\t'Doughnut',\n\t\t'Line',\n\t\t'PolarArea',\n\t\t'Radar',\n\t\t'Scatter'\n\t],\n\tfunction(klass) {\n\t\tcore_controller[klass] = function(ctx, cfg) {\n\t\t\treturn new core_controller(ctx, core_controller.helpers.merge(cfg || {}, {\n\t\t\t\ttype: klass.charAt(0).toLowerCase() + klass.slice(1)\n\t\t\t}));\n\t\t};\n\t}\n);\n\nreturn src;\n\n})));\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Layout',[_c('div',{staticClass:\"page-content\"},[_c('div',{staticClass:\"container\"},[_c('b-row',[_c('b-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"3\"}},[_c('b-card',{staticClass:\"md-card\",staticStyle:{\"margin-bottom\":\"30px\"},attrs:{\"no-body\":\"\"}},[_c('b-card-body',{staticClass:\"pb-10\"},[_c('div',{staticClass:\"hpanel\"},[_c('div',{staticClass:\"panel-body text-center h-200\"},[_c('font-awesome-icon',{staticClass:\"icon alt\",attrs:{\"icon\":\"chart-line\",\"size\":\"3x\"}}),_c('h1',{staticClass:\"large-text f-thin tm-10\"},[_vm._v(\"$1 206,90\")]),_c('h3',{staticClass:\"medium-text f-bold no-margins text-success\"},[_vm._v(\"\\n All Income\\n \")]),_c('small',[_vm._v(\"Lorem ipsum dolor sit amet, consectetur adipiscing elit vestibulum.\")])],1)])])],1)],1),_c('b-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"3\"}},[_c('b-card',{staticClass:\"md-card\",staticStyle:{\"margin-bottom\":\"30px\"},attrs:{\"no-body\":\"\"}},[_c('b-card-body',{staticClass:\"pb-10\"},[_c('div',{staticClass:\"hpanel stats\"},[_c('div',{staticClass:\"panel-body h-200\"},[_c('div',{staticClass:\"card-title pull-left\"},[_c('h4',[_vm._v(\"Users Activity\")])]),_c('div',{staticClass:\"stats-icon pull-right\"},[_c('font-awesome-icon',{staticClass:\"icon alt\",attrs:{\"icon\":\"project-diagram\",\"size\":\"2x\"}})],1),_c('div',{staticClass:\"m-t-xl clearfix\"},[_c('h3',{staticClass:\"tm-10\"},[_vm._v(\"210\")]),_c('span',{staticClass:\"font-bold no-margins\"},[_vm._v(\"\\n Social users\\n \")]),_c('div',{staticClass:\"progress m-t-xs full progress-small\"},[_c('div',{staticClass:\" progress-bar progress-bar-success\",staticStyle:{\"width\":\"55%\"},attrs:{\"aria-valuemax\":\"100\",\"aria-valuemin\":\"0\",\"aria-valuenow\":\"55\",\"role\":\"progressbar\"}},[_c('span',{staticClass:\"sr-only\"},[_vm._v(\"35% Complete (success)\")])])]),_c('b-row',{staticClass:\"m-t-xs\"},[_c('b-col',{attrs:{\"xs\":\"6\"}},[_c('small',{staticClass:\"stats-label\"},[_vm._v(\"Pages / Visit\")]),_c('h4',{staticClass:\"tm-5 medium-text\"},[_vm._v(\"7.80\")])]),_c('b-col',{attrs:{\"xs\":\"6\"}},[_c('small',{staticClass:\"stats-label\"},[_vm._v(\"% New Visits\")]),_c('h4',{staticClass:\"tm-5 medium-text\"},[_vm._v(\"76.43%\")])])],1)],1)])])])],1)],1),_c('b-col',{attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"6\"}},[_c('b-card',{staticClass:\"md-card\",staticStyle:{\"margin-bottom\":\"30px\"},attrs:{\"no-body\":\"\"}},[_c('b-card-body',{staticClass:\"pb-10\"},[_c('div',{staticClass:\"hpanel stats\"},[_c('div',{staticClass:\"panel-body h-200\"},[_c('div',{staticClass:\"card-title pull-left\"},[_c('h4',[_vm._v(\"Today income\")])]),_c('div',{staticClass:\"stats-icon pull-right\"},[_c('font-awesome-icon',{staticClass:\"icon alt\",attrs:{\"icon\":\"coins\",\"size\":\"2x\"}})],1),_c('div',{staticClass:\"clearfix\"}),_c('div',{staticClass:\"flot-chart\"},[_c('card-line1-chart-example',{staticClass:\"chart-wrapper px-3\",staticStyle:{\"height\":\"97px\"},attrs:{\"chartId\":\"card-chart-01\",\"height\":97}})],1),_c('div',{staticClass:\"m-t-xs\"},[_c('b-row',[_c('b-col',{attrs:{\"xs\":\"6\"}},[_c('small',{staticClass:\"stat-label\"},[_vm._v(\"Today\")]),_c('h4',{staticClass:\"tm-5 medium-text\"},[_vm._v(\"$230,00 \")])]),_c('b-col',{attrs:{\"xs\":\"6\"}},[_c('small',{staticClass:\"stat-label\"},[_vm._v(\"Last week\")]),_c('h4',{staticClass:\"tm-5 medium-text\"},[_vm._v(\"$7 980,60 \"),_c('i',{staticClass:\"fab fa-level-up text-success\"})])])],1)],1)])])])],1)],1)],1),_c('b-row',[_c('b-col',{attrs:{\"sm\":\"6\",\"lg\":\"3\"}},[_c('b-card',{staticClass:\"md-card\",staticStyle:{\"margin-bottom\":\"30px\"},attrs:{\"no-body\":\"\"}},[_c('b-card-body',{staticClass:\"pb-0\"},[_c('b-dropdown',{staticClass:\"float-right\",attrs:{\"variant\":\"transparent p-0\",\"right\":\"\"}},[_c('template',{slot:\"button-content\"},[_c('i',{staticClass:\"icon-settings\"})]),_c('b-dropdown-item',[_vm._v(\"Action\")]),_c('b-dropdown-item',[_vm._v(\"Another action\")]),_c('b-dropdown-item',[_vm._v(\"Something else here...\")]),_c('b-dropdown-item',{attrs:{\"disabled\":\"\"}},[_vm._v(\"Disabled action\")])],2),_c('h4',{staticClass:\"mb-0\"},[_vm._v(\"9.823\")]),_c('p',[_vm._v(\"Members online\")])],1)],1)],1),_c('b-col',{attrs:{\"sm\":\"6\",\"lg\":\"3\"}},[_c('b-card',{staticClass:\"md-card\",staticStyle:{\"margin-bottom\":\"30px\"},attrs:{\"no-body\":\"\"}},[_c('b-card-body',{staticClass:\"pb-0\"},[_c('b-dropdown',{staticClass:\"float-right\",attrs:{\"variant\":\"transparent p-0\",\"right\":\"\",\"no-caret\":\"\"}},[_c('template',{slot:\"button-content\"},[_c('i',{staticClass:\"icon-location-pin\"})]),_c('b-dropdown-item',[_vm._v(\"Action\")]),_c('b-dropdown-item',[_vm._v(\"Another action\")]),_c('b-dropdown-item',[_vm._v(\"Something else here...\")]),_c('b-dropdown-item',{attrs:{\"disabled\":\"\"}},[_vm._v(\"Disabled action\")])],2),_c('h4',{staticClass:\"mb-0\"},[_vm._v(\"9.823\")]),_c('p',[_vm._v(\"Members online\")])],1)],1)],1),_c('b-col',{attrs:{\"sm\":\"6\",\"lg\":\"3\"}},[_c('b-card',{staticClass:\"md-card\",staticStyle:{\"margin-bottom\":\"30px\"},attrs:{\"no-body\":\"\"}},[_c('b-card-body',{staticClass:\"pb-0\"},[_c('b-dropdown',{staticClass:\"float-right\",attrs:{\"variant\":\"transparent p-0\",\"right\":\"\"}},[_c('template',{slot:\"button-content\"},[_c('i',{staticClass:\"icon-settings\"})]),_c('b-dropdown-item',[_vm._v(\"Action\")]),_c('b-dropdown-item',[_vm._v(\"Another action\")]),_c('b-dropdown-item',[_vm._v(\"Something else here...\")]),_c('b-dropdown-item',{attrs:{\"disabled\":\"\"}},[_vm._v(\"Disabled action\")])],2),_c('h4',{staticClass:\"mb-0\"},[_vm._v(\"9.823\")]),_c('p',[_vm._v(\"Members online\")])],1)],1)],1),_c('b-col',{attrs:{\"sm\":\"6\",\"lg\":\"3\"}},[_c('b-card',{staticClass:\"md-card\",staticStyle:{\"margin-bottom\":\"30px\"},attrs:{\"no-body\":\"\"}},[_c('b-card-body',{staticClass:\"pb-0\"},[_c('b-dropdown',{staticClass:\"float-right\",attrs:{\"variant\":\"transparent p-0\",\"right\":\"\"}},[_c('template',{slot:\"button-content\"},[_c('i',{staticClass:\"icon-settings\"})]),_c('b-dropdown-item',[_vm._v(\"Action\")]),_c('b-dropdown-item',[_vm._v(\"Another action\")]),_c('b-dropdown-item',[_vm._v(\"Something else here...\")]),_c('b-dropdown-item',{attrs:{\"disabled\":\"\"}},[_vm._v(\"Disabled action\")])],2),_c('h4',{staticClass:\"mb-0\"},[_vm._v(\"9.823\")]),_c('p',[_vm._v(\"Members online\")])],1)],1)],1)],1)],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","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 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};","var render, staticRenderFns\nimport script from \"./CardLine1ChartExample.vue?vue&type=script&lang=js&\"\nexport * from \"./CardLine1ChartExample.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CardLine1ChartExample.vue?vue&type=style&index=0&id=d868d9fe&scoped=true&lang=css&\"\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 \"d868d9fe\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardLine1ChartExample.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardLine1ChartExample.vue?vue&type=script&lang=js&\"","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../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=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../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=js&\"","import { render, staticRenderFns } from \"./home.vue?vue&type=template&id=4ffa6021&\"\nimport script from \"./home.vue?vue&type=script&lang=js&\"\nexport * from \"./home.vue?vue&type=script&lang=js&\"\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","import mod from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardLine1ChartExample.vue?vue&type=style&index=0&id=d868d9fe&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardLine1ChartExample.vue?vue&type=style&index=0&id=d868d9fe&scoped=true&lang=css&\""],"sourceRoot":""}