{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/has.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/to-integer.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/redefine.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/set-global.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/object-create.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/function-to-string.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/core-js/internals/iterators.js","webpack:///./node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/sloppy-array-method.js","webpack:///./node_modules/core-js/internals/regexp-exec.js","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/core-js/modules/es.array.iterator.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./node_modules/core-js/internals/a-function.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js/internals/create-property.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/internals/add-to-unscopables.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/modules/es.object.to-string.js","webpack:///./node_modules/core-js/internals/wrapped-well-known-symbol.js","webpack:///./node_modules/core-js/internals/define-well-known-symbol.js","webpack:///./node_modules/core-js/internals/define-iterator.js","webpack:///./node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/core-js/internals/string-multibyte.js","webpack:///./node_modules/core-js/internals/bind-context.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/modules/es.symbol.js","webpack:///./node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/modules/es.symbol.description.js","webpack:///./node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./node_modules/core-js/internals/dom-iterables.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/core-js/modules/es.array.slice.js","webpack:///./node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/modules/es.array.index-of.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/core-js/modules/es.array.filter.js","webpack:///./node_modules/core-js/internals/species-constructor.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/modules/es.date.to-string.js","webpack:///./node_modules/core-js/modules/es.parse-float.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./node_modules/core-js/internals/parse-float.js","webpack:///./node_modules/core-js/modules/es.string.split.js","webpack:///./node_modules/core-js/modules/es.array.for-each.js","webpack:///./node_modules/core-js/internals/array-reduce.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/core-js/internals/inherit-if-required.js","webpack:///./node_modules/core-js/modules/es.string.match.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./node_modules/core-js/internals/string-repeat.js","webpack:///./node_modules/core-js/modules/es.array.reduce.js","webpack:///./node_modules/core-js/modules/es.array.reverse.js","webpack:///./node_modules/core-js/modules/es.array.sort.js","webpack:///./node_modules/core-js/modules/es.parse-int.js","webpack:///./node_modules/core-js/internals/set-species.js","webpack:///./node_modules/core-js/modules/es.function.name.js","webpack:///./node_modules/core-js/internals/array-fill.js","webpack:///./node_modules/core-js/internals/parse-int.js","webpack:///./node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./node_modules/core-js/internals/array-last-index-of.js","webpack:///./src/js/free/forms-free.js","webpack:///./src/js/free/scrolling-navbar.js","webpack:///./src/js/free/treeview.js","webpack:///./src/js/free/wow.js","webpack:///./node_modules/core-js/modules/es.array.fill.js","webpack:///./node_modules/core-js/modules/es.number.max-safe-integer.js","webpack:///./node_modules/core-js/modules/es.number.min-safe-integer.js","webpack:///./node_modules/core-js/modules/es.object.keys.js","webpack:///./node_modules/core-js/internals/array-buffer.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/core-js/internals/to-index.js","webpack:///./node_modules/core-js/internals/to-offset.js","webpack:///./src/js/index-free.js","webpack:///./src/js/vendor/free/bs-custom-file-input.js","webpack:///./src/js/vendor/free/chart.js","webpack:///./node_modules/core-js/modules/es.array.find-index.js","webpack:///./node_modules/core-js/modules/es.math.log10.js","webpack:///./node_modules/core-js/modules/es.math.sign.js","webpack:///./node_modules/core-js/internals/math-sign.js","webpack:///./node_modules/core-js/modules/es.number.epsilon.js","webpack:///./src/js/vendor/free/chartjs-datalabels.js","webpack:///./node_modules/core-js/modules/es.string.anchor.js","webpack:///./node_modules/core-js/internals/create-html.js","webpack:///./node_modules/core-js/internals/forced-string-html-method.js","webpack:///external \"chart\"","webpack:///./src/js/vendor/free/enhanced-modals.js","webpack:///./src/js/vendor/free/jquery.easing.js","webpack:///./src/js/vendor/free/velocity.js","webpack:///./node_modules/core-js/modules/es.array-buffer.slice.js","webpack:///./node_modules/core-js/internals/redefine-all.js","webpack:///./node_modules/core-js/modules/es.typed-array.float32-array.js","webpack:///./node_modules/core-js/internals/typed-array-constructor.js","webpack:///./node_modules/core-js/internals/typed-arrays-constructors-requires-wrappers.js","webpack:///./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./node_modules/core-js/internals/to-positive-integer.js","webpack:///./node_modules/core-js/internals/typed-array-from.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./node_modules/core-js/modules/es.typed-array.copy-within.js","webpack:///./node_modules/core-js/internals/array-copy-within.js","webpack:///./node_modules/core-js/modules/es.typed-array.every.js","webpack:///./node_modules/core-js/modules/es.typed-array.fill.js","webpack:///./node_modules/core-js/modules/es.typed-array.filter.js","webpack:///./node_modules/core-js/modules/es.typed-array.find.js","webpack:///./node_modules/core-js/modules/es.typed-array.find-index.js","webpack:///./node_modules/core-js/modules/es.typed-array.for-each.js","webpack:///./node_modules/core-js/modules/es.typed-array.includes.js","webpack:///./node_modules/core-js/modules/es.typed-array.index-of.js","webpack:///./node_modules/core-js/modules/es.typed-array.iterator.js","webpack:///./node_modules/core-js/modules/es.typed-array.join.js","webpack:///./node_modules/core-js/modules/es.typed-array.last-index-of.js","webpack:///./node_modules/core-js/modules/es.typed-array.map.js","webpack:///./node_modules/core-js/modules/es.typed-array.reduce.js","webpack:///./node_modules/core-js/modules/es.typed-array.reduce-right.js","webpack:///./node_modules/core-js/modules/es.typed-array.reverse.js","webpack:///./node_modules/core-js/modules/es.typed-array.set.js","webpack:///./node_modules/core-js/modules/es.typed-array.slice.js","webpack:///./node_modules/core-js/modules/es.typed-array.some.js","webpack:///./node_modules/core-js/modules/es.typed-array.sort.js","webpack:///./node_modules/core-js/modules/es.typed-array.subarray.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-string.js","webpack:///./src/js/vendor/free/waves.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","it","Math","check","globalThis","window","self","global","Function","exec","error","shared","uid","NATIVE_SYMBOL","store","getOwnPropertyDescriptor","f","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","options","source","target","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","undefined","sham","DESCRIPTORS","definePropertyModule","createPropertyDescriptor","isObject","TypeError","String","fails","a","IE8_DOM_DEFINE","anObject","toPrimitive","nativeDefineProperty","O","P","Attributes","IndexedObject","requireObjectCoercible","toInteger","min","argument","ceil","floor","isNaN","has","nativeFunctionToString","InternalStateModule","getInternalState","enforceInternalState","enforce","TEMPLATE","split","unsafe","simple","join","this","IS_PURE","push","version","copyright","bitmap","configurable","writable","toString","slice","input","PREFERRED_STRING","fn","val","valueOf","set","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","WeakMap","wmget","wmhas","wmset","metadata","STATE","getterFor","TYPE","state","type","keys","propertyIsEnumerableModule","toIndexedObject","nativeGetOwnPropertyDescriptor","toObject","toLength","arraySpeciesCreate","createMethod","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","that","specificCreate","result","boundFunction","length","index","forEach","map","filter","some","every","find","findIndex","internalObjectKeys","concat","getOwnPropertyNames","id","postfix","random","classof","Array","isArray","arg","max","integer","propertyIsEnumerable","defineProperties","enumBugKeys","html","documentCreateElement","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","appendChild","src","contentWindow","document","open","write","lt","close","F","Properties","SPECIES","wellKnownSymbol","METHOD_NAME","array","constructor","foo","Boolean","createElement","path","aFunction","variable","namespace","method","arguments","EXISTS","indexOf","names","NAME","getPrototypeOf","setPrototypeOf","DataView","DataViewPrototype","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","isPrototypeOf","TO_STRING_TAG","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER","ArrayBuffer","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","isTypedArray","aTypedArray","aTypedArrayConstructor","C","ARRAY","TypedArrayConstructor","exportProto","KEY","exportStatic","isView","klass","toAbsoluteIndex","IS_INCLUDES","el","fromIndex","includes","nativePropertyIsEnumerable","NASHORN_BUG","1","V","ownKeys","getOwnPropertyDescriptorModule","getOwnPropertySymbols","originalArray","TAG","replacement","feature","detection","data","normalize","POLYFILL","NATIVE","string","replace","toLowerCase","re1","re2","regexpFlags","nativeExec","RegExp","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","lastIndex","NPCG_INCLUDED","str","reCopy","match","re","addToUnscopables","Iterators","defineIterator","setInternalState","iterated","kind","done","Arguments","__webpack_amd_options__","g","e","propertyKey","test","getBuiltIn","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","UNSCOPABLES","ArrayPrototype","CORRECT_PROTOTYPE_GETTER","wrappedWellKnownSymbolModule","$","createIteratorConstructor","setToStringTag","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","ITERATOR","returnThis","Iterable","IteratorConstructor","next","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","values","proto","PrototypeOfArrayIteratorPrototype","arrayIterator","aPossiblePrototype","setter","CORRECT_SETTER","__proto__","ignoreCase","multiline","dotAll","unicode","sticky","CONVERT_TO_STRING","pos","first","second","S","position","size","charCodeAt","charAt","codeAt","b","apply","classofRaw","CORRECT_ARGUMENTS","tag","tryGet","callee","nativeObjectCreate","objectKeys","getOwnPropertyNamesExternal","defineWellKnownSymbol","$forEach","HIDDEN","TO_PRIMITIVE","$Symbol","JSON","nativeJSONStringify","stringify","nativeGetOwnPropertyNames","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","WellKnownSymbolsStore","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","wrap","description","symbol","isSymbol","iterator","$defineProperty","$defineProperties","properties","$getOwnPropertySymbols","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","keyFor","sym","useSetter","useSimple","replacer","$replacer","args","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","regexp","desc","point","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","arg2","forceStringMethod","stringMethod","regexMethod","R","DOMIterables","ArrayIteratorMethods","ArrayValues","COLLECTION_NAME","Collection","CollectionPrototype","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","originalModule","webpackPolyfill","children","createProperty","arrayMethodHasSpeciesSupport","nativeSlice","start","end","Constructor","k","fin","whitespace","ltrim","rtrim","trim","$indexOf","sloppyArrayMethod","nativeIndexOf","NEGATIVE_ZERO","SLOPPY_METHOD","searchElement","windowNames","getWindowNames","$map","splice","deleteCount","insertCount","actualDeleteCount","A","from","to","len","actualStart","argumentsLength","fixRegExpWellKnownSymbolLogic","advanceStringIndex","regExpExec","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","maybeCallNative","searchValue","replaceValue","res","rx","functionalReplace","fullUnicode","results","accumulatedResult","nextSourcePosition","matched","captures","j","namedCaptures","replacerArgs","getSubstitution","tailPos","symbols","ch","capture","nativeJoin","ES3_STRINGS","separator","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","E","$filter","defaultConstructor","DatePrototype","Date","nativeDateToString","getTime","NaN","parseFloatImplementation","parseFloat","flags","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","$find","SKIPS_HOLES","whitespaces","nativeParseFloat","Infinity","trimmedString","isRegExp","speciesConstructor","callRegExpExec","arrayPush","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","output","lastLastIndex","separatorCopy","splitter","unicodeMatching","q","z","IS_RIGHT","memo","left","right","inheritIfRequired","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","third","radix","maxCode","digits","code","parseInt","NumberWrapper","dummy","Wrapper","NewTarget","NewTargetPrototype","MATCH","nativeMatch","matcher","matchStr","thisNumberValue","repeat","nativeToFixed","toFixed","pow","x","acc","fractionDigits","number","fractDigits","sign","multiply","c2","divide","dataToString","RangeError","x2","log","count","$reduce","reduce","nativeReverse","reverse","nativeSort","sort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","comparefn","parseIntImplementation","CONSTRUCTOR_NAME","FunctionPrototype","FunctionPrototypeToString","nameRE","endPos","nativeParseInt","hex","getFlags","setSpecies","NativeRegExp","CORRECT_NEW","RegExpWrapper","pattern","thisIsRegExp","patternIsRegExp","flagsAreUndefined","proxy","nativeLastIndexOf","lastIndexOf","jQuery","inputSelector","selector","textAreaSelector","$text","$body","$document","observe","toggleActiveClass","attachEvent","element","event","handler","addEventListener","each","resize","height","scrollHeight","delayedResize","setTimeout","isNotValid","validity","badInput","updateTextFields","addOnFocusEvent","addOnBlurEvent","addOnChangeEvent","addOnResetEvent","appendHiddenDiv","ChangeDateInputType","textAreaAutoResize","on","action","siblings","noValue","isValid","noPlaceholder","attr","validateField","$formReset","is","removeClass","noDefaultValue","select","$select","$visibleInput","defaultValue","$hiddenDiv","append","$input","hasValue","hasPlaceholder","addOrRemove","hasClass","valid","Number","addClass","$dateInputs","$item","$textarea","fontFamily","css","fontSize","text","content","width","init","$navbar","offset","top","mdbTreeview","off","toggleClass","treeviewToggle","$elements","$closed","hide","$target","$pointer","slideUp","slideDown","treeviewAnimated","$header","$pointerPlus","$pointerMinus","treeviewColorful","WOW","wow","MDBWow","$wowElement","customization","animated","assignElementCustomization","scroll","mdbWow","appear","animationName","iteration","fallback","or","duration","delay","shouldElementBeVisible","countRemoveTime","visibility","thisElementOffset","getOffset","thisElementHeight","documentHeight","windowHeight","innerHeight","scrollY","isElementTopVisible","isElementBottomVisible","isScrolledToTop","isScrolledToBottom","isDocumentHeightEqual","isOffsetHigherThanDocument","isElementBottomHidden","isScrolledOverTop","isNotScrolledToTop","isScrolledOverElement","defaultAnimationTime","removeTime","checkOptionsStringFormat","valueToReturn","console","box","getBoundingClientRect","body","docEl","documentElement","scrollTop","pageYOffset","clientTop","round","_value","fill","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","nativeKeys","redefineAll","anInstance","toIndex","arrayFill","NativeArrayBuffer","$ArrayBuffer","$DataView","abs","LN2","packIEEE754","mantissaLength","bytes","exponent","mantissa","buffer","exponentLength","eMax","eBias","rt","unpackIEEE754","nBits","unpackInt32","packInt8","packInt16","packInt32","packFloat32","packFloat64","addGetter","view","isLittleEndian","intIndex","byteLength","byteOffset","pack","conversion","ArrayBufferPrototype","testView","nativeSetInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","toPositiveInteger","BYTES","factory","Selector","CUSTOMFILE","CUSTOMFILELABEL","FORM","INPUT","getDefaultText","defaultText","label","parentNode","querySelector","innerHTML","findFirstChildNode","childNodes","node","nodeType","restoreDefaultText","bsCustomFileInput","fileApi","File","getSelectedFiles","hasAttribute","files","file","splittedValue","handleInputChange","inputValue","handleFormReset","customFileList","querySelectorAll","Event","formSelector","customFileInputList","formList","_i","_len","destroy","form","removeEventListener","_i2","_len2","define","Chart","require","u","Error","2","colorNames","getRgba","rgb","scale","getHsla","alpha","getHwb","rgbaString","rgba","percentaString","hslaString","hsla","num","hexDouble","toUpperCase","getRgb","getHsl","getAlpha","vals","hexString","rgbString","percentString","hslString","hwbString","hwb","keyword","reverseNames","3","convert","Color","obj","hsl","hsv","cmyk","setValues","red","lightness","v","w","whiteness","cyan","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","green","blue","hue","saturation","saturationv","blackness","magenta","yellow","black","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","dark","light","negate","lighten","ratio","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","rotate","degrees","mix","mixinColor","weight","w1","w2","toJSON","clone","prop","spaces","maxes","getValues","space","capped","chans","sname","svalues","4","rgb2hsl","h","delta","rgb2hsv","rgb2hwb","rgb2cmyk","rgb2keyword","reverseKeywords","rgb2xyz","rgb2lab","xyz","y","hsl2rgb","t1","t2","t3","hsv2rgb","hi","hwb2rgb","wh","bl","cmyk2rgb","xyz2rgb","xyz2lab","lab2xyz","lab","y2","lab2lch","atan2","PI","sqrt","lab2rgb","lch2lab","lch","hr","cos","sin","keyword2rgb","cssKeywords","rgb2lch","hsl2hsv","hsl2hwb","hsl2cmyk","hsl2keyword","hsv2hsl","sl","hsv2hwb","hsv2cmyk","hsv2keyword","hwb2hsl","hwb2hsv","hwb2cmyk","hwb2keyword","cmyk2hsl","cmyk2hsv","cmyk2hwb","cmyk2keyword","keyword2hsl","keyword2hsv","keyword2hwb","keyword2cmyk","keyword2lab","keyword2xyz","xyz2lch","lch2xyz","lch2rgb","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","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","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","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","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","yellowgreen","5","conversions","Converter","func","pair","convs","routeSpace","fspace","6","7","helpers","Animation","animationService","defaults","Element","elements","Interaction","layouts","platform","plugins","Scale","scaleService","Ticks","Tooltip","register","initialize","Legend","legend","_element","Title","title","pluginService","PluginBase","extend","canvasHelpers","canvas","layoutService","8","Bar","context","config","9","Bubble","10","Doughnut","11","Line","12","PolarArea","13","Radar","14","Scatter","15","_set","hover","scales","xAxes","categoryPercentage","barPercentage","gridLines","offsetGridLines","yAxes","axis","rectangle","borderSkipped","tooltips","callbacks","item","yLabel","labels","datasets","datasetIndex","xLabel","controllers","bar","DatasetController","dataElementType","Rectangle","meta","me","getMeta","stack","getDataset","update","reset","ilen","rects","_ruler","getRuler","updateElement","chart","dataset","custom","rectangleOptions","_xScale","getScaleForId","xAxisID","_yScale","yAxisID","_datasetIndex","_index","_model","datasetLabel","backgroundColor","valueAtIndexOrDefault","borderColor","borderWidth","updateElementGeometry","pivot","model","vscale","getValueScale","base","getBasePixel","horizontal","isHorizontal","ruler","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","center","getValueScaleId","getIndexScaleId","getIndexScale","_getStacks","last","stacked","stacks","getDatasetMeta","isDatasetVisible","getStackCount","getStackIndex","stackCount","pixels","getPixelForValue","isNullOrUndef","barThickness","prev","curr","ticks","getTicks","getPixelForTick","computeMinSampleSize","imeta","ivalue","getRightValue","controller","range","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","valueOrDefault","maxBarThickness","draw","clipArea","ctx","chartArea","unclipArea","horizontalBar","16","dataPoint","bubble","Point","points","xScale","yScale","_resolveElementOptions","dsIndex","getPixelForDecimal","_options","hitRadius","pointStyle","rotation","radius","skip","setHoverStyle","$previousStyle","hoverBackgroundColor","getHoverColor","hoverBorderColor","hoverBorderWidth","hoverRadius","resolve","dataIndex","17","animation","animateRotate","animateScale","legendCallback","generateLabels","ds","arc","arcOpts","fillStyle","strokeStyle","lineWidth","hidden","onClick","legendItem","cutoutPercentage","circumference","tooltipItem","dataLabel","doughnut","pie","Arc","linkScales","noop","getRingIndex","ringIndex","opts","availableWidth","availableHeight","bottom","minSize","startAngle","endAngle","contains0","contains90","contains180","contains270","cutout","getMaxBorderWidth","outerRadius","innerRadius","radiusLength","getVisibleDatasetCount","offsetX","offsetY","total","calculateTotal","animationOpts","centerX","centerY","calculateCircumference","elementOpts","arcs","hoverWidth","_chart","18","showLines","spanGaps","lineEnabled","showLine","line","datasetElementType","lineElementOptions","tension","lineTension","_scale","_children","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","steppedLine","stepped","cubicInterpolationMode","updateBezierControlPoints","getPointBackgroundColor","pointBackgroundColor","getPointBorderColor","pointBorderColor","getPointBorderWidth","pointBorderWidth","getPointRotation","pointRotation","pointOptions","pointRadius","pointHitRadius","calculatePointY","dsMeta","sumPos","sumNeg","stackedRightValue","rightValue","controlPoints","area","capControlPoint","pt","splineCurveMonotone","splineCurve","previousItem","nextItem","controlPointPreviousX","previous","controlPointPreviousY","controlPointNextX","controlPointNextY","capBezierPoints","halfBorderWidth","pointHoverBackgroundColor","pointHoverBorderColor","pointHoverBorderWidth","pointHoverRadius","19","angleLines","circular","pointLabels","beginAtZero","polarArea","angle","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","xCenter","yCenter","datasetStartAngle","distance","getDistanceFromCenterForValue","resetRadius","20","radar","_loop","pointElementOptions","pointPosition","getPointPositionForValue","21","scatter","22","currentStep","numSteps","easing","render","onAnimationProgress","onAnimationComplete","23","onProgress","onComplete","frameDuration","animations","dropFrames","request","addAnimation","lazy","animating","requestAnimationFrame","cancelAnimation","requestAnimFrame","startDigest","startTime","now","framesToDrop","advance","endTime","callback","24","updateConfig","newOptions","removeBox","configMerge","ensureScalesHaveIDs","buildOrUpdateScales","tooltip","positionIsHorizontal","types","instances","construct","initConfig","acquireContext","aspectRatio","_bufferedRender","notify","retinaScale","devicePixelRatio","bindEvents","responsive","initToolTip","clear","stop","silent","maintainAspectRatio","newWidth","getMaximumWidth","newHeight","getMaximumHeight","newSize","onResize","responsiveAnimationDuration","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","items","updated","dtype","dposition","isDefault","scaleType","scaleClass","getScaleConstructor","mergeTicksOptions","hasUpdated","addScalesToLayout","buildOrUpdateControllers","newControllers","destroyDatasetMeta","updateIndex","ControllerClass","resetElements","_invalidate","_data","buildOrUpdateElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","updateDataset","animationOptions","animationObject","easingFunction","effects","stepDecimal","easingValue","transition","boxes","drawDatasets","_drawTooltip","drawDataset","getElementAtEvent","modes","single","getElementsAtEvent","intersect","getElementsAtXAxis","getElementsAtEventForMode","getDatasetAtEvent","_meta","generateLegend","unbindEvents","releaseContext","toBase64Image","toDataURL","_chartInstance","listeners","_listeners","listener","eventHandler","events","updateHoverStyle","enabled","changed","handleEvent","_start","bufferedRequest","animationDuration","hoverOptions","active","onHover","arrayEquals","Controller","25","arrayEvents","unlistenArrayEvents","stub","_chartjs","addElements","scaleID","createMetaDataset","createMetaData","metaData","addElementAndReset","resyncElements","removeHoverStyle","merge","numMeta","numData","insertElements","onDataPush","onDataPop","pop","onDataShift","shift","onDataSplice","onDataUnshift","inherits","26","scope","27","color","configuration","_view","ease","actual","origin","c0","c1","isFinite","interpolate","tooltipPosition","isNumber","28","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","defaultView","_getParentNode","constrainedNode","getComputedStyle","constrainedContainer","hasCNode","hasCContainer","infinity","POSITIVE_INFINITY","merger","tval","sval","scaleMerge","getScaleDefaults","_merger","slen","where","collection","filterCallback","filtered","findNextWhere","arrayToSearch","startIndex","currentItem","findPreviousWhere","almostEquals","epsilon","almostWhole","rounded","NEGATIVE_INFINITY","log10","LOG10E","powerOf10","toRadians","toDegrees","radians","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","distanceBetweenPoints","pt1","pt2","aliasPixel","pixelWidth","firstPoint","middlePoint","afterPoint","current","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","deltaX","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","loop","niceNum","fraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","getRelativePosition","evt","mouseX","mouseY","originalEvent","srcElement","boundingRect","touches","clientX","clientY","paddingLeft","getStyle","paddingTop","paddingRight","paddingBottom","currentDevicePixelRatio","getConstraintWidth","getConstraintHeight","_calculatePadding","container","padding","parentDimension","parent","host","clientWidth","cw","clientHeight","currentStyle","getPropertyValue","forceRatio","pixelRatio","fontString","pixelSize","fontStyle","longestText","font","arrayOfThings","cache","gc","garbageCollect","longest","thing","measureText","nestedThing","gcLen","textWidth","numberOfLabelLines","numberOfLines","CanvasGradient","defaultColor","colorValue","CanvasPattern","29","parseVisibleItems","jlen","getIntersectItems","inRange","getNearestItems","distanceMetric","minDistance","nearestItems","getCenterPoint","getDistanceMetricForAxis","useX","useY","deltaY","indexMode","nearest","ret","getArea","intersectsItem","inXRange","inYRange","30","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","layout","31","filterByPosition","sortByWeight","_tmpIndex_","v0","v1","addBox","fullWidth","layoutItem","configure","props","layoutOptions","toPadding","leftPadding","rightPadding","topPadding","bottomPadding","leftBoxes","rightBoxes","topBoxes","bottomBoxes","chartAreaBoxes","chartWidth","chartHeight","chartAreaHeight","verticalBoxWidth","horizontalBoxHeight","maxChartAreaWidth","maxChartAreaHeight","minBoxSizes","maxHorizontalLeftPadding","maxHorizontalRightPadding","maxVerticalTopPadding","maxVerticalBottomPadding","horizontalBox","getPadding","boxPadding","verticalBox","totalLeftBoxesWidth","totalRightBoxesWidth","totalTopBoxesHeight","totalBottomBoxesHeight","fitBox","minBoxSize","scaleMargin","leftPaddingAddition","topPaddingAddition","newMaxChartAreaHeight","newMaxChartAreaWidth","placeBox","minBox","32","_plugins","_cacheId","plugin","unregister","idx","getAll","hook","params","descriptors","$plugins","33","labelsFromTicks","getLineValue","lineValue","computeTextSize","tick","parseFontOptions","globalDefaults","family","parseLineHeight","toLineHeight","lineHeight","drawBorder","drawOnChartArea","drawTicks","tickMarkLength","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","formatters","minor","major","_ticks","beforeUpdate","maxWidth","maxHeight","margins","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","originalLabelWidth","labelWidth","tickWidth","angleRadians","scaleLabelOpts","gridLineOpts","isFullWidth","deltaHeight","largestTextWidth","tallestLabelHeightInLines","lineSpace","tickPadding","longestLabelWidth","labelHeight","firstLabelWidth","lastLabelWidth","handleMargins","rawValue","getLabelForIndex","getValueForPixel","pixel","finalVal","decimal","valueOffset","getBaseValue","_autoSkip","skipRatio","maxTicks","optionTicks","tickCount","labelRotationRadians","longestRotatedLabel","maxTicksLimit","optionMajorTicks","isRotated","tickFontColor","fontColor","majorTickFontColor","majorTickFont","tl","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","itemsToDraw","axisWidth","xTickStart","xTickEnd","yTickStart","yTickEnd","lineColor","tx1","ty1","tx2","ty2","x1","y1","labelX","labelY","zeroLineIndex","textAlign","textBaseline","labelYOffset","xLineValue","labelXOffset","isLeft","yLineValue","glWidth","glColor","glBorderDash","glBorderDashOffset","itemToDraw","save","setLineDash","lineDashOffset","beginPath","moveTo","lineTo","stroke","restore","translate","lineCount","fillText","scaleLabelX","scaleLabelY","halfLineHeight","34","constructors","registerScaleType","scaleConstructor","scaleDefaults","updateScaleDefaults","additions","35","linear","tickValue","logDelta","tickString","logTick","toExponential","numDecimal","logarithmic","remain","36","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","cornerRadius","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","eventPosition","nearestElement","tp","mergeOpacity","colorString","opacity","pushOrConcat","toPush","splitNewlines","getBaseModel","tooltipOpts","xAlign","yAlign","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","getBeforeAfterBodyLines","_lastActive","getTitle","lines","getBeforeBody","getBody","bodyItems","bodyItem","before","after","getAfterBody","getFooter","existingModel","_active","alignment","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","dataPoints","combinedBodyLength","titleLineCount","footerLineCount","widthPadding","maxLineWidth","getTooltipSize","vm","paddingAndSize","radiusAndPadding","getBackgroundPoint","lf","olf","orf","yf","midX","midY","determineAlignment","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","drawBody","xLinePadding","fillLineOfText","drawColorBoxes","textColor","fillRect","strokeRect","drawFooter","drawBackground","quadraticCurveTo","closePath","hasTooltipContent","37","inLabelRange","chartX","chartY","pointRelativePosition","betweenAngles","withinRadius","halfAngle","halfRadius","centreAngle","rangeFromCentre","sA","eA","lineJoin","38","currentVM","globalOptionLineElements","lastDrawnIndex","lineCap","39","xRange","drawPoint","40","isVertical","getBarBounds","halfWidth","halfHeight","signX","signY","barSize","halfStroke","borderLeft","borderRight","borderTop","borderBottom","corners","startCorner","cornerAt","corner","bounds","41","42","clearRect","roundedRect","arcTo","rect","edgeLength","xOffset","yOffset","SQRT2","leftX","topY","sideSize","drawImage","clip","flip","bezierCurveTo","drawRoundedRectangle","43","thisArg","loopable","a0","a1","klen","_mergerIf","mergeIf","sources","setFn","extensions","ChartElement","Surrogate","__super__","callCallback","getValueOrDefault","getValueAtIndexOrDefault","44","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easingEffects","45","matches","inputs","46","47","getContext","48","EXPANDO_KEY","CSS_PREFIX","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","eventListenerOptions","supports","passive","createEvent","nativeEvent","addResizeListener","ticking","expando","resizer","cls","cssText","className","expand","shrink","_reset","scrollLeft","onScroll","createResizer","renderProxy","reflow","offsetParent","classList","add","watchForRender","insertBefore","firstChild","removeResizeListener","remove","unwatchForRender","removeChild","_enabled","keyframes","_style","setAttribute","getElementsByTagName","createTextNode","getElementById","renderHeight","getAttribute","renderWidth","initial","displayWidth","displayHeight","initCanvas","removeAttribute","proxies","fromNativeEvent","addEvent","removeEvent","49","basic","dom","implementation","50","filler","51","propagate","mappers","boundary","decodeFill","computeBoundary","scaleBottom","scaleTop","scaleZero","getBasePosition","resolveTarget","visited","visible","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","afterDatasetsUpdate","$filler","mapper","beforeDatasetDraw","p0","p1","d0","d1","span","doFill","52","getBoxWidth","labelOpts","usePointStyle","boxWidth","ci","lineDash","legendHitBoxes","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","globalDefault","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","totalWidth","currentColWidth","currentColHeight","itemHeight","itemWidth","lineDefault","legendWidth","cursor","isLineWidthZero","offSet","drawLegendBox","halfFontSize","xLeft","yMiddle","lh","hitBox","createNewLegendAndAttach","legendOpts","beforeInit","afterEvent","53","textSize","titleX","titleY","titleFont","createNewTitleBlockAndAttach","titleOpts","titleBlock","54","DatasetScale","getLabels","xLabels","yLabels","minIndex","maxIndex","valueCategory","offsetAmt","valueWidth","widthOffset","valueHeight","heightOffset","horz","valueDimension","55","defaultConfig","LinearScale","LinearScaleBase","IDMatches","hasStacks","valuesPerStack","positiveValues","negativeValues","relativePoints","valuesForType","minVal","maxVal","handleTickRangeOptions","getTickLimit","tickFontSize","handleDirectionalChanges","innerDimension","ticksAsNumbers","56","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","numericGeneratorOptions","precision","stepSize","fixedStepSize","generationOptions","dataRange","factor","spacing","niceRange","niceMin","niceMax","numSpaces","generateTicks","57","LogarithmicScale","minNotZero","exp","significand","tickVal","endExp","endSignificand","lastTick","tickValues","_getFirstTickValue","firstTickValue","58","animate","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getValueCount","getPointLabelFontOptions","pointLabelOptions","determineLimits","getTextAlignForAngle","adjustPointPositionForLabelHeight","numberOrZero","param","LinearRadialScale","drawingArea","largestPossibleRadius","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","getIndexAngle","hLimits","vLimits","setReductions","fitWithPointLabels","setCenterPoint","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","scalingFactor","distanceFromCenter","thisAngle","tickFontStyle","tickFontFamily","tickLabelFont","yCenterOffset","drawRadiusLine","angleLineOpts","pointLabelOpts","outerDistance","outerPosition","pointLabelPosition","pointLabelFontColor","drawPointLabels","59","moment","MIN_INTEGER","MAX_INTEGER","INTERVALS","millisecond","common","steps","minute","hour","day","week","month","quarter","year","UNITS","sorter","arrayUnique","hash","out","table","skey","tkey","mid","i0","i1","lo","lookup","momentify","parser","format","parse","time","startOf","determineMajorUnit","unit","generate","capacity","timeOpts","minUnit","interval","determineUnitForAutoTicks","unitStepSize","weekday","isoWeekday","majorTicksEnabled","milliseconds","determineStepSize","TimeScale","warn","timestamp","timestamps","endOf","_horizontal","_table","_timestamps","getLabelCapacity","_unit","diff","as","determineUnitForFormatting","_majorUnit","distribution","buildLookupTable","_offsets","upper","lower","computeOffsets","_labelFormat","momentDate","hasTime","determineLabelFormat","majorUnit","ticksFromTimestamps","tooltipFormat","tickFormatFunction","formatOverride","formats","displayFormats","minorFormat","majorFormat","majorTime","majorTickOpts","formatter","getPixelForOffset","getLabelWidth","ticksOpts","tickLabelWidth","sinRotation","exampleTime","exampleLabel","innerWidth","displayFormat","$findIndex","screen","deviceXDPI","logicalXDPI","utils","toTextLines","unshift","toFontString","parseFont","bound","arrayDiff","updates","rasterize","orient","x0","y0","dx","dy","ln","R_INSIDE","R_LEFT","R_RIGHT","R_BOTTOM","R_TOP","region","compute","anchor","segment","clamp","r0","r1","clipped","vx","vy","align","aligned","ry","sx","sy","helpers$1","getScaleOrigin","drawTextLine","cfg","shadow","shadowBlur","stroked","strokeText","filled","Label","_config","_rects","_ctx","_el","_modelize","borderRadius","positioner","textShadowBlur","textShadowColor","textStrokeColor","textStrokeWidth","th","tw","tx","ty","frame","boundingRects","geometry","globalAlpha","bgColor","drawFrame","strokeColor","strokeWidth","textGeometry","shadowColor","drawText","helpers$2","rotated","cx","cy","projected","dp","toAxis","HitBox","_rotation","_rect","coordinates","vs","contains","margin","intersects","other","pr0","pr1","_points","axes","prepare","$layout","_box","_hidable","_visible","_idx","sa","sb","dirty","collider","s0","s1","collide","h0","h1","compute$1","helpers$3","helpers$4","DEFAULT_KEY","dispatchEvent","$context","$groups","_key","_dirty","handleMoveEvents","enter","leave","_labels","_hovered","dispatchMoveEvents","datalabels","_actives","_listened","_datasets","afterDatasetUpdate","override","configs","afterDatasetsDraw","beforeEvent","handlers","click","handleClickEvents","actives","invalidate","ChartDataLabels","createHTML","forcedStringHTMLMethod","quot","attribute","$modal_dialog","def","swing","Velocity","isWindow","isPlainObject","uuid","removeData","queue","dequeue","pageXOffset","clientLeft","nodeName","marginTop","marginLeft","borderTopWidth","borderLeftWidth","Utilities","isWrapped","isNode","getControlPoints","T","isString","Easings","State","calls","setPropertyValue","endValue","startValue","currentValue","Hooks","registered","H","getRoot","N","rootPropertyValueCache","rootPropertyValue","L","unitType","scrollData","Normalizations","mobileHA","transformCache","translate3d","flushTransformCache","progress","isTicking","isAnimating","Lists","transforms3D","Values","complete","tweensContainer","documentMode","isFunction","isNodeList","jquery","Zepto","zepto","isZ","isSVG","SVGElement","isEmptyObject","isMobile","navigator","userAgent","isAndroid","isGingerbread","isChrome","chrome","isFirefox","prefixElement","prefixMatches","scrollAnchor","scrollPropertyLeft","scrollPropertyTop","CSS","Redirects","Promise","begin","_cacheValues","computedStyle","mock","patch","debug","friction","dv","spring","RegEx","isHex","valueUnwrap","wrappedValueAlreadyExtracted","valueSplit","colors","transformsBase","templates","textShadow","boxShadow","backgroundPosition","transformOrigin","perspectiveOrigin","cleanRootPropertyValue","isCSSNullValue","extractValue","injectValue","blur","zoom","substr","hexToRgb","Names","camelCase","SVGAttribute","prefixCheck","getUnitType","getDisplayType","tagName","offsetHeight","offsetWidth","getBBox","direction","scrollTo","alternateValue","skewX","skewY","promise","myParent","lastPosition","lastParent","lastFontSize","emToPx","lastEmToPx","percentToPxWidth","lastPercentToPxWidth","percentToPxHeight","lastPercentToPxHeight","createElementNS","remToPx","vwToPx","vhToPx","M","I","B","W","G","Y","D","Q","resolver","velocityQueueEntryFlag","delayTimer","rejecter","clearTimeout","backwards","stagger","drag","velocity","marginBottom","overflow","ArrayBufferModule","nativeArrayBufferSlice","viewSource","viewTarget","typedArrayConstructor","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","toOffset","typedArrayFrom","fromList","list","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","wrapper","CLAMPED","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","typedArrayOffset","$length","$len","checkCorrectnessOfIteration","iterable","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","getIteratorMethod","isArrayIteratorMethod","step","mapfn","mapping","iteratorMethod","$copyWithin","copyWithin","inc","$every","$fill","predicate","$includes","ArrayIterators","arrayValues","arrayKeys","arrayEntries","nativeTypedArrayIterator","CORRECT_ITER_NAME","typedArrayValues","$join","$lastIndexOf","$reduceRight","middle","arrayLike","$slice","$some","$sort","beginIndex","BYTES_PER_ELEMENT","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","Uint8ArrayPrototype","arrayToString","arrayJoin","Waves","$$","isTouchAvailable","getWavesElements","nodes","stringRepr","elem","docElem","win","doc","ownerDocument","getWindow","convertStyle","styleObj","Effect","show","button","ripple","relativeY","relativeX","pageY","pageX","rippleStyle","transform","ripples","getElementsByClassName","removeRipple","TagWrapper","replaceChild","img","TouchHandler","allowEvent","allow","registerEvent","eType","showEffect","parentElement","getWavesEffectElement","disabled","timer","hideEffect","hideEvent","removeListeners","touchMove","moveEvent","attach","classes","elementsLen","wait","centre","mousedown","hideRipple","mouseup","calm","displayEffect","ready"],"mappings":"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","file":"js/mdb.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 146);\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nvar Symbol = global.Symbol;\nvar store = shared('wks');\n\nmodule.exports = function (name) {\n return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]\n || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar nativeFunctionToString = require('../internals/function-to-string');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(nativeFunctionToString).split('toString');\n\nshared('inspectSource', function (it) {\n return nativeFunctionToString.call(it);\n});\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);\n});\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.3.2',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = {};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var bind = require('../internals/bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","module.exports = false;\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar PROTOTYPE = 'prototype';\nvar Empty = function () { /* empty */ };\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var length = enumBugKeys.length;\n var lt = '<';\n var script = 'script';\n var gt = '>';\n var js = 'java' + script + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = String(js);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];\n return createDict();\n};\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\nhiddenKeys[IE_PROTO] = true;\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n return !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var shared = require('../internals/shared');\n\nmodule.exports = shared('native-function-to-string', Function.toString);\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar DataView = global.DataView;\nvar DataViewPrototype = DataView && DataView.prototype;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar NATIVE_ARRAY_BUFFER = !!(global.ArrayBuffer && DataView);\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar isView = function isView(it) {\n var klass = classof(it);\n return klass === 'DataView' || has(TypedArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n return isObject(it) && has(TypedArrayConstructorsList, classof(it));\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf) {\n if (isPrototypeOf.call(TypedArray, C)) return C;\n } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n return C;\n }\n } throw TypeError('Target is not a typed array constructor');\n};\n\nvar exportProto = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n delete TypedArrayConstructor.prototype[KEY];\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportStatic = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n delete TypedArrayConstructor[KEY];\n }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\n// WebKit bug - the same parent prototype for typed arrays and data view\nif (NATIVE_ARRAY_BUFFER && setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf(DataViewPrototype, ObjectPrototype);\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER: NATIVE_ARRAY_BUFFER,\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportProto: exportProto,\n exportStatic: exportStatic,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","module.exports = require('../internals/global');\n","exports.f = Object.getOwnPropertySymbols;\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","module.exports = {};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !method || !fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var global = require('../internals/global');\nvar nativeFunctionToString = require('../internals/function-to-string');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n createNonEnumerableProperty(ArrayPrototype, UNSCOPABLES, create(null));\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\nvar ObjectPrototype = Object.prototype;\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (toString !== ObjectPrototype.toString) {\n redefine(ObjectPrototype, 'toString', toString, { unsafe: true });\n}\n","exports.f = require('../internals/well-known-symbol');\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/wrapped-well-known-symbol');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/wrapped-well-known-symbol');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar JSON = global.JSON;\nvar nativeJSONStringify = JSON && JSON.stringify;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = NATIVE_SYMBOL && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nJSON && $({ target: 'JSON', stat: true, forced: !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return nativeJSONStringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || nativeJSONStringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || nativeJSONStringify(Object(symbol)) != '{}';\n}) }, {\n stringify: function stringify(it) {\n var args = [it];\n var index = 1;\n var replacer, $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return nativeJSONStringify.apply(JSON, args);\n }\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n }\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('slice') }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar classof = require('../internals/classof');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = String(test) !== '[object z]' ? function toString() {\n return '[object ' + classof(this) + ']';\n} : test.toString;\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar SLOPPY_METHOD = sloppyArrayMethod('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || SLOPPY_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('map') }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('splice') }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar SLOPPY_METHOD = sloppyArrayMethod('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || SLOPPY_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\nvar IS_CONCAT_SPREADABLE_SUPPORT = !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('filter') }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = sloppyArrayMethod('forEach') ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","var redefine = require('../internals/redefine');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar nativeDateToString = DatePrototype[TO_STRING];\nvar getTime = DatePrototype.getTime;\n\n// `Date.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-date.prototype.tostring\nif (new Date(NaN) + '' != INVALID_DATE) {\n redefine(DatePrototype, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? nativeDateToString.call(this) : INVALID_DATE;\n });\n}\n","var $ = require('../internals/export');\nvar parseFloatImplementation = require('../internals/parse-float');\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != parseFloatImplementation }, {\n parseFloat: parseFloatImplementation\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar nativeParseFloat = global.parseFloat;\nvar FORCED = 1 / nativeParseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(String(string));\n var result = nativeParseFloat(trimmedString);\n return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : nativeParseFloat;\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n // eslint-disable-next-line max-statements\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n var multiply = function (n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n };\n\n var divide = function (n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n };\n\n var dataToString = function () {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n };\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n result = dataToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n result = dataToString() + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: sloppyArrayMethod('reduce') }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = [].reverse;\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n if (isArray(this)) this.length = this.length;\n return nativeReverse.call(this);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeSort = [].sort;\nvar test = [1, 2, 3];\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar SLOPPY_METHOD = sloppyArrayMethod('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? nativeSort.call(toObject(this))\n : nativeSort.call(toObject(this), aFunction(comparefn));\n }\n});\n","var $ = require('../internals/export');\nvar parseIntImplementation = require('../internals/parse-int');\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n parseInt: parseIntImplementation\n});\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar nativeParseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = nativeParseInt(whitespaces + '08') !== 8 || nativeParseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(String(string));\n return nativeParseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : nativeParseInt;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.github.io/ecma262/#sec-regexp-constructor\nif (FORCED) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = this instanceof RegExpWrapper;\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n return !thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined ? pattern\n : inheritIfRequired(CORRECT_NEW\n ? new NativeRegExp(patternIsRegExp && !flagsAreUndefined ? pattern.source : pattern, flags)\n : NativeRegExp((patternIsRegExp = pattern instanceof RegExpWrapper)\n ? pattern.source\n : pattern, patternIsRegExp && flagsAreUndefined ? getFlags.call(pattern) : flags)\n , thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n };\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n var keys = getOwnPropertyNames(NativeRegExp);\n var index = 0;\n while (keys.length > index) proxy(keys[index++]);\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar min = Math.min;\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar SLOPPY_METHOD = sloppyArrayMethod('lastIndexOf');\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = (NEGATIVE_ZERO || SLOPPY_METHOD) ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : nativeLastIndexOf;\n","jQuery(($) => {\r\n\r\n class Forms {\r\n\r\n constructor() {\r\n this.inputSelector = `${['text', 'password', 'email', 'url', 'tel', 'number', 'search', 'search-md']\r\n .map((selector) => `input[type=${selector}]`)\r\n .join(', ')}, textarea`;\r\n this.textAreaSelector = '.materialize-textarea';\r\n this.$text = $('.md-textarea-auto');\r\n this.$body = $('body');\r\n this.$document = $(document);\r\n }\r\n\r\n init() {\r\n this.toggleActiveClass($('input[autofocus]'), 'add');\r\n\r\n if (this.$text.length) {\r\n let observe;\r\n \r\n if (window.attachEvent) {\r\n observe = function (element, event, handler) {\r\n element.attachEvent(`on${event}`, handler);\r\n };\r\n } else {\r\n observe = function (element, event, handler) {\r\n element.addEventListener(event, handler, false);\r\n };\r\n }\r\n \r\n this.$text.each(function () {\r\n const self = this;\r\n \r\n function resize() {\r\n self.style.height = 'auto';\r\n self.style.height = `${self.scrollHeight}px`;\r\n }\r\n \r\n function delayedResize() {\r\n window.setTimeout(resize, 0);\r\n }\r\n \r\n observe(self, 'change', resize);\r\n observe(self, 'cut', delayedResize);\r\n observe(self, 'paste', delayedResize);\r\n observe(self, 'drop', delayedResize);\r\n observe(self, 'keydown', delayedResize);\r\n \r\n resize();\r\n });\r\n }\r\n\r\n $(this.inputSelector).each((index, input) => {\r\n const $this = $(input);\r\n const isNotValid = input.validity.badInput;\r\n this.updateTextFields($this);\r\n\r\n if (isNotValid) {\r\n this.toggleActiveClass($this, 'add');\r\n }\r\n });\r\n \r\n this.addOnFocusEvent();\r\n this.addOnBlurEvent();\r\n this.addOnChangeEvent();\r\n this.addOnResetEvent();\r\n this.appendHiddenDiv();\r\n this.ChangeDateInputType();\r\n\r\n $(this.textAreaSelector).each(this.textAreaAutoResize);\r\n this.$body.on('keyup keydown', this.textAreaSelector, this.textAreaAutoResize);\r\n }\r\n\r\n toggleActiveClass($this, action) {\r\n action = `${action}Class`;\r\n $this.siblings('label, i')[action]('active');\r\n }\r\n\r\n addOnFocusEvent() {\r\n this.$document.on('focus', this.inputSelector, (e) => {\r\n this.toggleActiveClass($(e.target), 'add');\r\n });\r\n }\r\n\r\n addOnBlurEvent() {\r\n this.$document.on('blur', this.inputSelector, (e) => {\r\n const $this = $(e.target);\r\n const noValue = !$this.val();\r\n const isValid = !e.target.validity.badInput;\r\n const noPlaceholder = $this.attr('placeholder') === undefined;\r\n \r\n if (noValue && isValid && noPlaceholder) {\r\n this.toggleActiveClass($this, 'remove');\r\n }\r\n\r\n this.validateField($this);\r\n });\r\n }\r\n\r\n addOnChangeEvent() {\r\n this.$document.on('change', this.inputSelector, (e) => {\r\n const $this = $(e.target);\r\n \r\n this.updateTextFields($this);\r\n this.validateField($this);\r\n });\r\n }\r\n\r\n addOnResetEvent() {\r\n this.$document.on('reset', (e) => {\r\n const $formReset = $(e.target);\r\n \r\n if ($formReset.is('form')) {\r\n const $formInputs = $formReset.find(this.inputSelector);\r\n \r\n $formInputs\r\n .removeClass('valid invalid')\r\n .each((index, input) => {\r\n const $this = $(input);\r\n const noDefaultValue = !$this.val();\r\n const noPlaceholder = !$this.attr('placeholder');\r\n \r\n if (noDefaultValue && noPlaceholder) {\r\n this.toggleActiveClass($this, 'remove');\r\n }\r\n });\r\n \r\n $formReset.find('select.initialized').each((index, select) => {\r\n const $select = $(select);\r\n const $visibleInput = $select.siblings('input.select-dropdown');\r\n const defaultValue = $select.children('[selected]').val();\r\n \r\n $select.val(defaultValue);\r\n $visibleInput.val(defaultValue);\r\n });\r\n }\r\n });\r\n }\r\n\r\n appendHiddenDiv() {\r\n if (!$('.hiddendiv').first().length) {\r\n const $hiddenDiv = $('
');\r\n this.$body.append($hiddenDiv);\r\n }\r\n }\r\n\r\n updateTextFields($input) {\r\n\r\n const hasValue = Boolean($input.val().length);\r\n const hasPlaceholder = Boolean($input.attr('placeholder'));\r\n const addOrRemove = hasValue || hasPlaceholder ? 'add' : 'remove';\r\n \r\n this.toggleActiveClass($input, addOrRemove);\r\n }\r\n\r\n validateField($input) {\r\n if ($input.hasClass('validate')) {\r\n const value = $input.val();\r\n const noValue = !value.length;\r\n const isValid = !$input[0].validity.badInput;\r\n \r\n if (noValue && isValid) {\r\n $input.removeClass('valid').removeClass('invalid');\r\n } else {\r\n const valid = $input[0].validity.valid;\r\n const length = Number($input.attr('length')) || 0;\r\n \r\n if (valid && (!length || length > value.length)) {\r\n $input.removeClass('invalid').addClass('valid');\r\n } else {\r\n $input.removeClass('valid').addClass('invalid');\r\n }\r\n }\r\n }\r\n }\r\n\r\n ChangeDateInputType() {\r\n const $dateInputs = $('input[type=\"date\"]');\r\n \r\n $dateInputs.each((index, $item) => {\r\n $item.type = 'text';\r\n });\r\n \r\n $dateInputs.on('focus', $item => {\r\n $item.target.type = 'date';\r\n });\r\n \r\n $dateInputs.on('blur', $item => {\r\n $item.target.type = 'text';\r\n if($item.target.value.length === 0) {\r\n $(`label[for=${$item.target.id}]`).removeClass('active');\r\n }\r\n }); \r\n }\r\n \r\n textAreaAutoResize() {\r\n const $textarea = $(this);\r\n \r\n if ($textarea.val().length) {\r\n const $hiddenDiv = $('.hiddendiv');\r\n const fontFamily = $textarea.css('font-family');\r\n const fontSize = $textarea.css('font-size');\r\n \r\n if (fontSize) {\r\n $hiddenDiv.css('font-size', fontSize);\r\n }\r\n \r\n if (fontFamily) {\r\n $hiddenDiv.css('font-family', fontFamily);\r\n }\r\n \r\n if ($textarea.attr('wrap') === 'off') {\r\n $hiddenDiv.css('overflow-wrap', 'normal').css('white-space', 'pre');\r\n }\r\n \r\n $hiddenDiv.text(`${$textarea.val()}\\n`);\r\n const content = $hiddenDiv.html().replace(/\\n/g, '
');\r\n $hiddenDiv.html(content);\r\n \r\n // When textarea is hidden, width goes crazy.\r\n // Approximate with half of window size\r\n $hiddenDiv.css('width', $textarea.is(':visible') ? $textarea.width() : $(window).width() / 2);\r\n $textarea.css('height', $hiddenDiv.height());\r\n }\r\n } \r\n }\r\n\r\n //auto init Forms\r\n const forms = new Forms();\r\n forms.init();\r\n\r\n});\r\n","jQuery(function ($) {\r\n\r\n const SCROLLING_NAVBAR_OFFSET_TOP = 50;\r\n\r\n $(window).on('scroll', () => {\r\n\r\n const $navbar = $('.navbar');\r\n \r\n if (!$navbar.length) return;\r\n\r\n $('.scrolling-navbar')[$navbar.offset().top > SCROLLING_NAVBAR_OFFSET_TOP ? 'addClass' : 'removeClass']('top-nav-collapse');\r\n });\r\n});\r\n","jQuery(($) => {\r\n $.fn.mdbTreeview = function () {\r\n\r\n const $this = $(this);\r\n\r\n if ($this.hasClass('treeview')) {\r\n treeviewToggle($this);\r\n }\r\n\r\n if ($this.hasClass('treeview-animated')) {\r\n treeviewAnimated($this);\r\n }\r\n\r\n if ($this.hasClass('treeview-colorful')) {\r\n treeviewColorful($this);\r\n }\r\n };\r\n\r\n function treeviewToggle($this) {\r\n const $toggler = $this.find('.rotate');\r\n\r\n $toggler.each(function () {\r\n const $this = $(this);\r\n\r\n $this.off('click');\r\n $this.on('click', function () {\r\n const $this = $(this);\r\n\r\n $this.siblings('.nested').toggleClass('active');\r\n $this.toggleClass('down');\r\n });\r\n });\r\n }\r\n\r\n function treeviewAnimated($this) {\r\n const $elements = $this.find('.treeview-animated-element');\r\n const $closed = $this.find('.closed');\r\n\r\n $this.find('.nested').hide();\r\n\r\n $closed.off('click');\r\n $closed.on('click', function () {\r\n const $this = $(this);\r\n const $target = $this.siblings('.nested');\r\n const $pointer = $this.children('.fa-angle-right');\r\n\r\n $this.toggleClass('open');\r\n $pointer.toggleClass('down');\r\n\r\n if (!$target.hasClass('active')) {\r\n $target.addClass('active').slideDown();\r\n } else {\r\n $target.removeClass('active').slideUp();\r\n }\r\n });\r\n\r\n $elements.off('click');\r\n $elements.on('click', function () {\r\n const $this = $(this);\r\n\r\n if ($this.hasClass('opened')) {\r\n $this.removeClass('opened');\r\n } else {\r\n $elements.removeClass('opened');\r\n $this.addClass('opened');\r\n }\r\n });\r\n }\r\n\r\n function treeviewColorful($this) {\r\n const $elements = $this.find('.treeview-colorful-element');\r\n const $header = $this.find('.treeview-colorful-items-header');\r\n\r\n $this.find('.nested').hide();\r\n\r\n $header.off('click');\r\n $header.on('click', function () {\r\n const $this = $(this);\r\n const $target = $this.siblings('.nested');\r\n const $pointerPlus = $this.children('.fa-plus-circle');\r\n const $pointerMinus = $this.children('.fa-minus-circle');\r\n\r\n $this.toggleClass('open');\r\n $pointerPlus.removeClass('fa-plus-circle');\r\n $pointerPlus.addClass('fa-minus-circle');\r\n $pointerMinus.removeClass('fa-minus-circle');\r\n $pointerMinus.addClass('fa-plus-circle');\r\n\r\n if (!$target.hasClass('active')) {\r\n $target.addClass('active').slideDown();\r\n } else {\r\n $target.removeClass('active').slideUp();\r\n }\r\n });\r\n\r\n $elements.off('click');\r\n $elements.on('click', function () {\r\n const $this = $(this);\r\n\r\n if ($this.hasClass('opened')) {\r\n $elements.removeClass('opened');\r\n } else {\r\n $elements.removeClass('opened');\r\n $this.addClass('opened');\r\n }\r\n });\r\n }\r\n});\r\n","jQuery($ => {\r\n\r\n class WOW {\r\n init() {\r\n $('.wow').wow();\r\n }\r\n }\r\n\r\n class MDBWow {\r\n constructor($wowElement, customization) {\r\n this.$wowElement = $wowElement;\r\n this.customization = customization;\r\n this.animated = true;\r\n this.options = this.assignElementCustomization();\r\n }\r\n\r\n init() {\r\n $(window).scroll(() => {\r\n if (this.animated) {\r\n this.hide();\r\n } else {\r\n this.mdbWow();\r\n }\r\n });\r\n\r\n this.appear();\r\n }\r\n\r\n assignElementCustomization() {\r\n return {\r\n animationName: this.$wowElement.css('animation-name'),\r\n offset: 100,\r\n iteration: this.fallback()\r\n .or(this.$wowElement.data('wow-iteration'))\r\n .or(1)\r\n .value(),\r\n duration: this.fallback()\r\n .or(this.$wowElement.data('wow-duration'))\r\n .or(1000)\r\n .value(),\r\n delay: this.fallback()\r\n .or(this.$wowElement.data('wow-delay'))\r\n .or(0)\r\n .value()\r\n };\r\n }\r\n\r\n mdbWow() {\r\n if (this.$wowElement.css('visibility') === 'visible') {\r\n return;\r\n }\r\n\r\n if (this.shouldElementBeVisible(true)) {\r\n setTimeout(() => this.$wowElement.removeClass('animated'), this.countRemoveTime());\r\n this.appear();\r\n }\r\n }\r\n\r\n appear() {\r\n this.$wowElement.addClass('animated');\r\n this.$wowElement.css({\r\n visibility: 'visible',\r\n 'animation-name': this.options.animationName,\r\n 'animation-iteration-count': this.options.iteration,\r\n 'animation-duration': this.options.duration,\r\n 'animation-delay': this.options.delay\r\n });\r\n }\r\n\r\n hide() {\r\n if (this.shouldElementBeVisible(false)) {\r\n this.$wowElement.removeClass('animated');\r\n this.$wowElement.css({\r\n 'animation-name': 'none',\r\n visibility: 'hidden'\r\n });\r\n } else {\r\n setTimeout(() => {\r\n this.$wowElement.removeClass('animated');\r\n }, this.countRemoveTime());\r\n }\r\n this.mdbWow();\r\n this.animated = !this.animated;\r\n }\r\n\r\n shouldElementBeVisible(state) {\r\n const thisElementOffset = this.getOffset(this.$wowElement[0]);\r\n const thisElementHeight = this.$wowElement.height();\r\n const documentHeight = $(document).height();\r\n const windowHeight = window.innerHeight;\r\n const scroll = window.scrollY;\r\n\r\n const isElementTopVisible = windowHeight + scroll - this.options.offset > thisElementOffset;\r\n const isElementBottomVisible = windowHeight + scroll - this.options.offset > thisElementOffset + thisElementHeight;\r\n const isScrolledToTop = scroll < thisElementOffset;\r\n const isScrolledToBottom = scroll < thisElementOffset + thisElementHeight;\r\n const isDocumentHeightEqual = windowHeight + scroll === documentHeight;\r\n const isOffsetHigherThanDocument = thisElementOffset + this.options.offset > documentHeight;\r\n const isElementBottomHidden = windowHeight + scroll - this.options.offset < thisElementOffset;\r\n const isScrolledOverTop = scroll > thisElementOffset + this.options.offset;\r\n const isNotScrolledToTop = scroll < thisElementOffset + this.options.offset;\r\n const isScrolledOverElement = thisElementOffset + thisElementHeight > documentHeight - this.options.offset;\r\n\r\n let returnLogic = false;\r\n\r\n if (state) {\r\n returnLogic = isElementTopVisible && isScrolledToTop ||\r\n isElementBottomVisible && isScrolledToBottom ||\r\n isDocumentHeightEqual && isOffsetHigherThanDocument;\r\n } else {\r\n returnLogic = isElementTopVisible && isScrolledOverTop ||\r\n isElementBottomHidden && isNotScrolledToTop ||\r\n isScrolledOverElement;\r\n }\r\n return returnLogic;\r\n }\r\n\r\n countRemoveTime() {\r\n const defaultAnimationTime = this.$wowElement.css('animation-duration').slice(0, -1) * 1000;\r\n let removeTime = 0;\r\n\r\n if (this.options.duration) {\r\n removeTime = defaultAnimationTime + this.checkOptionsStringFormat(this.options.duration);\r\n }\r\n if (this.options.delay) {\r\n removeTime += this.checkOptionsStringFormat(this.options.delay);\r\n }\r\n return removeTime;\r\n }\r\n\r\n checkOptionsStringFormat(element) {\r\n let valueToReturn;\r\n\r\n if (element.toString().slice(-1) === 's') {\r\n valueToReturn = element.toString().slice(0, -1);\r\n } else if (!isNaN(element.toString().slice(-1))) {\r\n valueToReturn = element;\r\n } else {\r\n return console.log('Not supported animation customization format.');\r\n }\r\n\r\n return valueToReturn;\r\n }\r\n\r\n getOffset(element) {\r\n const box = element.getBoundingClientRect();\r\n const body = document.body;\r\n const docEl = document.documentElement;\r\n const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\r\n const clientTop = docEl.clientTop || body.clientTop || 0;\r\n const top = box.top + scrollTop - clientTop;\r\n\r\n return Math.round(top);\r\n }\r\n\r\n fallback() {\r\n return {\r\n _value: undefined,\r\n or(value) {\r\n if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\r\n this._value = value;\r\n }\r\n return this;\r\n },\r\n value() {\r\n return this._value;\r\n }\r\n };\r\n }\r\n }\r\n\r\n $.fn.wow = function (options) {\r\n this.each(function () {\r\n const mdbWow = new MDBWow($(this), options);\r\n mdbWow.init();\r\n });\r\n };\r\n\r\n window.WOW = WOW;\r\n\r\n});\r\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","var $ = require('../internals/export');\n\n// `Number.MAX_SAFE_INTEGER` constant\n// https://tc39.github.io/ecma262/#sec-number.max_safe_integer\n$({ target: 'Number', stat: true }, {\n MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF\n});\n","var $ = require('../internals/export');\n\n// `Number.MIN_SAFE_INTEGER` constant\n// https://tc39.github.io/ecma262/#sec-number.min_safe_integer\n$({ target: 'Number', stat: true }, {\n MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = 1 / 0;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar packIEEE754 = function (number, mantissaLength, bytes) {\n var buffer = new Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpackIEEE754 = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = bytes.slice(start, start + count);\n return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: arrayFill.call(new Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new NativeArrayBuffer(); // eslint-disable-line no-new\n new NativeArrayBuffer(1.5); // eslint-disable-line no-new\n new NativeArrayBuffer(NaN); // eslint-disable-line no-new\n return NativeArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new NativeArrayBuffer(toIndex(length));\n };\n var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var nativeSetInt8 = $DataView[PROTOTYPE].setInt8;\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\n\n// `ToIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n","// JS VENDOR FREE\r\nimport './vendor/free/bs-custom-file-input'\r\nimport './vendor/free/chart'\r\nimport './vendor/free/chartjs-datalabels'\r\nimport './vendor/free/enhanced-modals'\r\nimport './vendor/free/jquery.easing'\r\nimport './vendor/free/velocity'\r\nimport './vendor/free/waves'\r\n\r\n// JS FREE\r\nimport './free/forms-free'\r\nimport './free/scrolling-navbar'\r\nimport './free/treeview'\r\nimport './free/wow'\r\n","/*!\r\n * bsCustomFileInput v1.3.2 (https://github.com/Johann-S/bs-custom-file-input)\r\n * Copyright 2018 - 2019 Johann-S \r\n * Licensed under MIT (https://github.com/Johann-S/bs-custom-file-input/blob/master/LICENSE)\r\n */\r\n(function (global, factory) {\r\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\n typeof define === 'function' && define.amd ? define(factory) :\r\n (global = global || self, global.bsCustomFileInput = factory());\r\n}(this, function () {\r\n 'use strict';\r\n\r\n var Selector = {\r\n CUSTOMFILE: '.custom-file input[type=\"file\"]',\r\n CUSTOMFILELABEL: '.custom-file-label',\r\n FORM: 'form',\r\n INPUT: 'input'\r\n };\r\n\r\n var textNodeType = 3;\r\n\r\n var getDefaultText = function getDefaultText(input) {\r\n var defaultText = '';\r\n var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);\r\n\r\n if (label) {\r\n defaultText = label.innerHTML;\r\n }\r\n\r\n return defaultText;\r\n };\r\n\r\n var findFirstChildNode = function findFirstChildNode(element) {\r\n if (element.childNodes.length > 0) {\r\n var childNodes = [].slice.call(element.childNodes);\r\n\r\n for (var i = 0; i < childNodes.length; i++) {\r\n var node = childNodes[i];\r\n\r\n if (node.nodeType !== textNodeType) {\r\n return node;\r\n }\r\n }\r\n }\r\n\r\n return element;\r\n };\r\n\r\n var restoreDefaultText = function restoreDefaultText(input) {\r\n var defaultText = input.bsCustomFileInput.defaultText;\r\n var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);\r\n\r\n if (label) {\r\n var element = findFirstChildNode(label);\r\n element.innerHTML = defaultText;\r\n }\r\n };\r\n\r\n var fileApi = !!window.File;\r\n var FAKE_PATH = 'fakepath';\r\n var FAKE_PATH_SEPARATOR = '\\\\';\r\n\r\n var getSelectedFiles = function getSelectedFiles(input) {\r\n if (input.hasAttribute('multiple') && fileApi) {\r\n return [].slice.call(input.files).map(function (file) {\r\n return file.name;\r\n }).join(', ');\r\n }\r\n\r\n if (input.value.indexOf(FAKE_PATH) !== -1) {\r\n var splittedValue = input.value.split(FAKE_PATH_SEPARATOR);\r\n return splittedValue[splittedValue.length - 1];\r\n }\r\n\r\n return input.value;\r\n };\r\n\r\n function handleInputChange() {\r\n var label = this.parentNode.querySelector(Selector.CUSTOMFILELABEL);\r\n\r\n if (label) {\r\n var element = findFirstChildNode(label);\r\n var inputValue = getSelectedFiles(this);\r\n\r\n if (inputValue.length) {\r\n element.innerHTML = inputValue;\r\n } else {\r\n restoreDefaultText(this);\r\n }\r\n }\r\n }\r\n\r\n function handleFormReset() {\r\n var customFileList = [].slice.call(this.querySelectorAll(Selector.INPUT)).filter(function (input) {\r\n return !!input.bsCustomFileInput;\r\n });\r\n\r\n for (var i = 0, len = customFileList.length; i < len; i++) {\r\n restoreDefaultText(customFileList[i]);\r\n }\r\n }\r\n\r\n var customProperty = 'bsCustomFileInput';\r\n var Event = {\r\n FORMRESET: 'reset',\r\n INPUTCHANGE: 'change'\r\n };\r\n var bsCustomFileInput = {\r\n init: function init(inputSelector, formSelector) {\r\n if (inputSelector === void 0) {\r\n inputSelector = Selector.CUSTOMFILE;\r\n }\r\n\r\n if (formSelector === void 0) {\r\n formSelector = Selector.FORM;\r\n }\r\n\r\n var customFileInputList = [].slice.call(document.querySelectorAll(inputSelector));\r\n var formList = [].slice.call(document.querySelectorAll(formSelector));\r\n\r\n for (var i = 0, len = customFileInputList.length; i < len; i++) {\r\n var input = customFileInputList[i];\r\n Object.defineProperty(input, customProperty, {\r\n value: {\r\n defaultText: getDefaultText(input)\r\n },\r\n writable: true\r\n });\r\n handleInputChange.call(input);\r\n input.addEventListener(Event.INPUTCHANGE, handleInputChange);\r\n }\r\n\r\n for (var _i = 0, _len = formList.length; _i < _len; _i++) {\r\n formList[_i].addEventListener(Event.FORMRESET, handleFormReset);\r\n\r\n Object.defineProperty(formList[_i], customProperty, {\r\n value: true,\r\n writable: true\r\n });\r\n }\r\n },\r\n destroy: function destroy() {\r\n var formList = [].slice.call(document.querySelectorAll(Selector.FORM)).filter(function (form) {\r\n return !!form.bsCustomFileInput;\r\n });\r\n var customFileInputList = [].slice.call(document.querySelectorAll(Selector.INPUT)).filter(function (input) {\r\n return !!input.bsCustomFileInput;\r\n });\r\n\r\n for (var i = 0, len = customFileInputList.length; i < len; i++) {\r\n var input = customFileInputList[i];\r\n restoreDefaultText(input);\r\n input[customProperty] = undefined;\r\n input.removeEventListener(Event.INPUTCHANGE, handleInputChange);\r\n }\r\n\r\n for (var _i2 = 0, _len2 = formList.length; _i2 < _len2; _i2++) {\r\n formList[_i2].removeEventListener(Event.FORMRESET, handleFormReset);\r\n\r\n formList[_i2][customProperty] = undefined;\r\n }\r\n }\r\n };\r\n\r\n return bsCustomFileInput;\r\n\r\n}));\r\n//# sourceMappingURL=bs-custom-file-input.js.map\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n\r\n bsCustomFileInput.init()\r\n});\r\n","/*!\r\n * Chart.js\r\n * http://chartjs.org/\r\n * Version: 2.7.3\r\n *\r\n * Copyright 2018 Chart.js Contributors\r\n * Released under the MIT license\r\n * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md\r\n */\r\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Chart = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i lum2) {\r\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\r\n\t\t}\r\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\r\n\t},\r\n\r\n\tlevel: function (color2) {\r\n\t\tvar contrastRatio = this.contrast(color2);\r\n\t\tif (contrastRatio >= 7.1) {\r\n\t\t\treturn 'AAA';\r\n\t\t}\r\n\r\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\r\n\t},\r\n\r\n\tdark: function () {\r\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\r\n\t\tvar rgb = this.values.rgb;\r\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\r\n\t\treturn yiq < 128;\r\n\t},\r\n\r\n\tlight: function () {\r\n\t\treturn !this.dark();\r\n\t},\r\n\r\n\tnegate: function () {\r\n\t\tvar rgb = [];\r\n\t\tfor (var i = 0; i < 3; i++) {\r\n\t\t\trgb[i] = 255 - this.values.rgb[i];\r\n\t\t}\r\n\t\tthis.setValues('rgb', rgb);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tlighten: function (ratio) {\r\n\t\tvar hsl = this.values.hsl;\r\n\t\thsl[2] += hsl[2] * ratio;\r\n\t\tthis.setValues('hsl', hsl);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tdarken: function (ratio) {\r\n\t\tvar hsl = this.values.hsl;\r\n\t\thsl[2] -= hsl[2] * ratio;\r\n\t\tthis.setValues('hsl', hsl);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tsaturate: function (ratio) {\r\n\t\tvar hsl = this.values.hsl;\r\n\t\thsl[1] += hsl[1] * ratio;\r\n\t\tthis.setValues('hsl', hsl);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tdesaturate: function (ratio) {\r\n\t\tvar hsl = this.values.hsl;\r\n\t\thsl[1] -= hsl[1] * ratio;\r\n\t\tthis.setValues('hsl', hsl);\r\n\t\treturn this;\r\n\t},\r\n\r\n\twhiten: function (ratio) {\r\n\t\tvar hwb = this.values.hwb;\r\n\t\thwb[1] += hwb[1] * ratio;\r\n\t\tthis.setValues('hwb', hwb);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tblacken: function (ratio) {\r\n\t\tvar hwb = this.values.hwb;\r\n\t\thwb[2] += hwb[2] * ratio;\r\n\t\tthis.setValues('hwb', hwb);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tgreyscale: function () {\r\n\t\tvar rgb = this.values.rgb;\r\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\r\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\r\n\t\tthis.setValues('rgb', [val, val, val]);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tclearer: function (ratio) {\r\n\t\tvar alpha = this.values.alpha;\r\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\r\n\t\treturn this;\r\n\t},\r\n\r\n\topaquer: function (ratio) {\r\n\t\tvar alpha = this.values.alpha;\r\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\r\n\t\treturn this;\r\n\t},\r\n\r\n\trotate: function (degrees) {\r\n\t\tvar hsl = this.values.hsl;\r\n\t\tvar hue = (hsl[0] + degrees) % 360;\r\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\r\n\t\tthis.setValues('hsl', hsl);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t/**\r\n\t * Ported from sass implementation in C\r\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\r\n\t */\r\n\tmix: function (mixinColor, weight) {\r\n\t\tvar color1 = this;\r\n\t\tvar color2 = mixinColor;\r\n\t\tvar p = weight === undefined ? 0.5 : weight;\r\n\r\n\t\tvar w = 2 * p - 1;\r\n\t\tvar a = color1.alpha() - color2.alpha();\r\n\r\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\r\n\t\tvar w2 = 1 - w1;\r\n\r\n\t\treturn this\r\n\t\t\t.rgb(\r\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\r\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\r\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\r\n\t\t\t)\r\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\r\n\t},\r\n\r\n\ttoJSON: function () {\r\n\t\treturn this.rgb();\r\n\t},\r\n\r\n\tclone: function () {\r\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\r\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\r\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\r\n\t\t// except 'alpha' which is a number.\r\n\t\tvar result = new Color();\r\n\t\tvar source = this.values;\r\n\t\tvar target = result.values;\r\n\t\tvar value, type;\r\n\r\n\t\tfor (var prop in source) {\r\n\t\t\tif (source.hasOwnProperty(prop)) {\r\n\t\t\t\tvalue = source[prop];\r\n\t\t\t\ttype = ({}).toString.call(value);\r\n\t\t\t\tif (type === '[object Array]') {\r\n\t\t\t\t\ttarget[prop] = value.slice(0);\r\n\t\t\t\t} else if (type === '[object Number]') {\r\n\t\t\t\t\ttarget[prop] = value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.error('unexpected color value:', value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n};\r\n\r\nColor.prototype.spaces = {\r\n\trgb: ['red', 'green', 'blue'],\r\n\thsl: ['hue', 'saturation', 'lightness'],\r\n\thsv: ['hue', 'saturation', 'value'],\r\n\thwb: ['hue', 'whiteness', 'blackness'],\r\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\r\n};\r\n\r\nColor.prototype.maxes = {\r\n\trgb: [255, 255, 255],\r\n\thsl: [360, 100, 100],\r\n\thsv: [360, 100, 100],\r\n\thwb: [360, 100, 100],\r\n\tcmyk: [100, 100, 100, 100]\r\n};\r\n\r\nColor.prototype.getValues = function (space) {\r\n\tvar values = this.values;\r\n\tvar vals = {};\r\n\r\n\tfor (var i = 0; i < space.length; i++) {\r\n\t\tvals[space.charAt(i)] = values[space][i];\r\n\t}\r\n\r\n\tif (values.alpha !== 1) {\r\n\t\tvals.a = values.alpha;\r\n\t}\r\n\r\n\t// {r: 255, g: 255, b: 255, a: 0.4}\r\n\treturn vals;\r\n};\r\n\r\nColor.prototype.setValues = function (space, vals) {\r\n\tvar values = this.values;\r\n\tvar spaces = this.spaces;\r\n\tvar maxes = this.maxes;\r\n\tvar alpha = 1;\r\n\tvar i;\r\n\r\n\tthis.valid = true;\r\n\r\n\tif (space === 'alpha') {\r\n\t\talpha = vals;\r\n\t} else if (vals.length) {\r\n\t\t// [10, 10, 10]\r\n\t\tvalues[space] = vals.slice(0, space.length);\r\n\t\talpha = vals[space.length];\r\n\t} else if (vals[space.charAt(0)] !== undefined) {\r\n\t\t// {r: 10, g: 10, b: 10}\r\n\t\tfor (i = 0; i < space.length; i++) {\r\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\r\n\t\t}\r\n\r\n\t\talpha = vals.a;\r\n\t} else if (vals[spaces[space][0]] !== undefined) {\r\n\t\t// {red: 10, green: 10, blue: 10}\r\n\t\tvar chans = spaces[space];\r\n\r\n\t\tfor (i = 0; i < space.length; i++) {\r\n\t\t\tvalues[space][i] = vals[chans[i]];\r\n\t\t}\r\n\r\n\t\talpha = vals.alpha;\r\n\t}\r\n\r\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\r\n\r\n\tif (space === 'alpha') {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tvar capped;\r\n\r\n\t// cap values of the space prior converting all values\r\n\tfor (i = 0; i < space.length; i++) {\r\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\r\n\t\tvalues[space][i] = Math.round(capped);\r\n\t}\r\n\r\n\t// convert to all the other color spaces\r\n\tfor (var sname in spaces) {\r\n\t\tif (sname !== space) {\r\n\t\t\tvalues[sname] = convert[space][sname](values[space]);\r\n\t\t}\r\n\t}\r\n\r\n\treturn true;\r\n};\r\n\r\nColor.prototype.setSpace = function (space, args) {\r\n\tvar vals = args[0];\r\n\r\n\tif (vals === undefined) {\r\n\t\t// color.rgb()\r\n\t\treturn this.getValues(space);\r\n\t}\r\n\r\n\t// color.rgb(10, 10, 10)\r\n\tif (typeof vals === 'number') {\r\n\t\tvals = Array.prototype.slice.call(args);\r\n\t}\r\n\r\n\tthis.setValues(space, vals);\r\n\treturn this;\r\n};\r\n\r\nColor.prototype.setChannel = function (space, index, val) {\r\n\tvar svalues = this.values[space];\r\n\tif (val === undefined) {\r\n\t\t// color.red()\r\n\t\treturn svalues[index];\r\n\t} else if (val === svalues[index]) {\r\n\t\t// color.red(color.red())\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// color.red(100)\r\n\tsvalues[index] = val;\r\n\tthis.setValues(space, svalues);\r\n\r\n\treturn this;\r\n};\r\n\r\nif (typeof window !== 'undefined') {\r\n\twindow.Color = Color;\r\n}\r\n\r\nmodule.exports = Color;\r\n\r\n},{\"2\":2,\"5\":5}],4:[function(require,module,exports){\r\n/* MIT license */\r\n\r\nmodule.exports = {\r\n rgb2hsl: rgb2hsl,\r\n rgb2hsv: rgb2hsv,\r\n rgb2hwb: rgb2hwb,\r\n rgb2cmyk: rgb2cmyk,\r\n rgb2keyword: rgb2keyword,\r\n rgb2xyz: rgb2xyz,\r\n rgb2lab: rgb2lab,\r\n rgb2lch: rgb2lch,\r\n\r\n hsl2rgb: hsl2rgb,\r\n hsl2hsv: hsl2hsv,\r\n hsl2hwb: hsl2hwb,\r\n hsl2cmyk: hsl2cmyk,\r\n hsl2keyword: hsl2keyword,\r\n\r\n hsv2rgb: hsv2rgb,\r\n hsv2hsl: hsv2hsl,\r\n hsv2hwb: hsv2hwb,\r\n hsv2cmyk: hsv2cmyk,\r\n hsv2keyword: hsv2keyword,\r\n\r\n hwb2rgb: hwb2rgb,\r\n hwb2hsl: hwb2hsl,\r\n hwb2hsv: hwb2hsv,\r\n hwb2cmyk: hwb2cmyk,\r\n hwb2keyword: hwb2keyword,\r\n\r\n cmyk2rgb: cmyk2rgb,\r\n cmyk2hsl: cmyk2hsl,\r\n cmyk2hsv: cmyk2hsv,\r\n cmyk2hwb: cmyk2hwb,\r\n cmyk2keyword: cmyk2keyword,\r\n\r\n keyword2rgb: keyword2rgb,\r\n keyword2hsl: keyword2hsl,\r\n keyword2hsv: keyword2hsv,\r\n keyword2hwb: keyword2hwb,\r\n keyword2cmyk: keyword2cmyk,\r\n keyword2lab: keyword2lab,\r\n keyword2xyz: keyword2xyz,\r\n\r\n xyz2rgb: xyz2rgb,\r\n xyz2lab: xyz2lab,\r\n xyz2lch: xyz2lch,\r\n\r\n lab2xyz: lab2xyz,\r\n lab2rgb: lab2rgb,\r\n lab2lch: lab2lch,\r\n\r\n lch2lab: lch2lab,\r\n lch2xyz: lch2xyz,\r\n lch2rgb: lch2rgb\r\n}\r\n\r\n\r\nfunction rgb2hsl(rgb) {\r\n var r = rgb[0]/255,\r\n g = rgb[1]/255,\r\n b = rgb[2]/255,\r\n min = Math.min(r, g, b),\r\n max = Math.max(r, g, b),\r\n delta = max - min,\r\n h, s, l;\r\n\r\n if (max == min)\r\n h = 0;\r\n else if (r == max)\r\n h = (g - b) / delta;\r\n else if (g == max)\r\n h = 2 + (b - r) / delta;\r\n else if (b == max)\r\n h = 4 + (r - g)/ delta;\r\n\r\n h = Math.min(h * 60, 360);\r\n\r\n if (h < 0)\r\n h += 360;\r\n\r\n l = (min + max) / 2;\r\n\r\n if (max == min)\r\n s = 0;\r\n else if (l <= 0.5)\r\n s = delta / (max + min);\r\n else\r\n s = delta / (2 - max - min);\r\n\r\n return [h, s * 100, l * 100];\r\n}\r\n\r\nfunction rgb2hsv(rgb) {\r\n var r = rgb[0],\r\n g = rgb[1],\r\n b = rgb[2],\r\n min = Math.min(r, g, b),\r\n max = Math.max(r, g, b),\r\n delta = max - min,\r\n h, s, v;\r\n\r\n if (max == 0)\r\n s = 0;\r\n else\r\n s = (delta/max * 1000)/10;\r\n\r\n if (max == min)\r\n h = 0;\r\n else if (r == max)\r\n h = (g - b) / delta;\r\n else if (g == max)\r\n h = 2 + (b - r) / delta;\r\n else if (b == max)\r\n h = 4 + (r - g) / delta;\r\n\r\n h = Math.min(h * 60, 360);\r\n\r\n if (h < 0)\r\n h += 360;\r\n\r\n v = ((max / 255) * 1000) / 10;\r\n\r\n return [h, s, v];\r\n}\r\n\r\nfunction rgb2hwb(rgb) {\r\n var r = rgb[0],\r\n g = rgb[1],\r\n b = rgb[2],\r\n h = rgb2hsl(rgb)[0],\r\n w = 1/255 * Math.min(r, Math.min(g, b)),\r\n b = 1 - 1/255 * Math.max(r, Math.max(g, b));\r\n\r\n return [h, w * 100, b * 100];\r\n}\r\n\r\nfunction rgb2cmyk(rgb) {\r\n var r = rgb[0] / 255,\r\n g = rgb[1] / 255,\r\n b = rgb[2] / 255,\r\n c, m, y, k;\r\n\r\n k = Math.min(1 - r, 1 - g, 1 - b);\r\n c = (1 - r - k) / (1 - k) || 0;\r\n m = (1 - g - k) / (1 - k) || 0;\r\n y = (1 - b - k) / (1 - k) || 0;\r\n return [c * 100, m * 100, y * 100, k * 100];\r\n}\r\n\r\nfunction rgb2keyword(rgb) {\r\n return reverseKeywords[JSON.stringify(rgb)];\r\n}\r\n\r\nfunction rgb2xyz(rgb) {\r\n var r = rgb[0] / 255,\r\n g = rgb[1] / 255,\r\n b = rgb[2] / 255;\r\n\r\n // assume sRGB\r\n r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\r\n g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\r\n b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\r\n\r\n var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\r\n var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\r\n var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\r\n\r\n return [x * 100, y *100, z * 100];\r\n}\r\n\r\nfunction rgb2lab(rgb) {\r\n var xyz = rgb2xyz(rgb),\r\n x = xyz[0],\r\n y = xyz[1],\r\n z = xyz[2],\r\n l, a, b;\r\n\r\n x /= 95.047;\r\n y /= 100;\r\n z /= 108.883;\r\n\r\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\r\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\r\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\r\n\r\n l = (116 * y) - 16;\r\n a = 500 * (x - y);\r\n b = 200 * (y - z);\r\n\r\n return [l, a, b];\r\n}\r\n\r\nfunction rgb2lch(args) {\r\n return lab2lch(rgb2lab(args));\r\n}\r\n\r\nfunction hsl2rgb(hsl) {\r\n var h = hsl[0] / 360,\r\n s = hsl[1] / 100,\r\n l = hsl[2] / 100,\r\n t1, t2, t3, rgb, val;\r\n\r\n if (s == 0) {\r\n val = l * 255;\r\n return [val, val, val];\r\n }\r\n\r\n if (l < 0.5)\r\n t2 = l * (1 + s);\r\n else\r\n t2 = l + s - l * s;\r\n t1 = 2 * l - t2;\r\n\r\n rgb = [0, 0, 0];\r\n for (var i = 0; i < 3; i++) {\r\n t3 = h + 1 / 3 * - (i - 1);\r\n t3 < 0 && t3++;\r\n t3 > 1 && t3--;\r\n\r\n if (6 * t3 < 1)\r\n val = t1 + (t2 - t1) * 6 * t3;\r\n else if (2 * t3 < 1)\r\n val = t2;\r\n else if (3 * t3 < 2)\r\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\r\n else\r\n val = t1;\r\n\r\n rgb[i] = val * 255;\r\n }\r\n\r\n return rgb;\r\n}\r\n\r\nfunction hsl2hsv(hsl) {\r\n var h = hsl[0],\r\n s = hsl[1] / 100,\r\n l = hsl[2] / 100,\r\n sv, v;\r\n\r\n if(l === 0) {\r\n // no need to do calc on black\r\n // also avoids divide by 0 error\r\n return [0, 0, 0];\r\n }\r\n\r\n l *= 2;\r\n s *= (l <= 1) ? l : 2 - l;\r\n v = (l + s) / 2;\r\n sv = (2 * s) / (l + s);\r\n return [h, sv * 100, v * 100];\r\n}\r\n\r\nfunction hsl2hwb(args) {\r\n return rgb2hwb(hsl2rgb(args));\r\n}\r\n\r\nfunction hsl2cmyk(args) {\r\n return rgb2cmyk(hsl2rgb(args));\r\n}\r\n\r\nfunction hsl2keyword(args) {\r\n return rgb2keyword(hsl2rgb(args));\r\n}\r\n\r\n\r\nfunction hsv2rgb(hsv) {\r\n var h = hsv[0] / 60,\r\n s = hsv[1] / 100,\r\n v = hsv[2] / 100,\r\n hi = Math.floor(h) % 6;\r\n\r\n var f = h - Math.floor(h),\r\n p = 255 * v * (1 - s),\r\n q = 255 * v * (1 - (s * f)),\r\n t = 255 * v * (1 - (s * (1 - f))),\r\n v = 255 * v;\r\n\r\n switch(hi) {\r\n case 0:\r\n return [v, t, p];\r\n case 1:\r\n return [q, v, p];\r\n case 2:\r\n return [p, v, t];\r\n case 3:\r\n return [p, q, v];\r\n case 4:\r\n return [t, p, v];\r\n case 5:\r\n return [v, p, q];\r\n }\r\n}\r\n\r\nfunction hsv2hsl(hsv) {\r\n var h = hsv[0],\r\n s = hsv[1] / 100,\r\n v = hsv[2] / 100,\r\n sl, l;\r\n\r\n l = (2 - s) * v;\r\n sl = s * v;\r\n sl /= (l <= 1) ? l : 2 - l;\r\n sl = sl || 0;\r\n l /= 2;\r\n return [h, sl * 100, l * 100];\r\n}\r\n\r\nfunction hsv2hwb(args) {\r\n return rgb2hwb(hsv2rgb(args))\r\n}\r\n\r\nfunction hsv2cmyk(args) {\r\n return rgb2cmyk(hsv2rgb(args));\r\n}\r\n\r\nfunction hsv2keyword(args) {\r\n return rgb2keyword(hsv2rgb(args));\r\n}\r\n\r\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\r\nfunction hwb2rgb(hwb) {\r\n var h = hwb[0] / 360,\r\n wh = hwb[1] / 100,\r\n bl = hwb[2] / 100,\r\n ratio = wh + bl,\r\n i, v, f, n;\r\n\r\n // wh + bl cant be > 1\r\n if (ratio > 1) {\r\n wh /= ratio;\r\n bl /= ratio;\r\n }\r\n\r\n i = Math.floor(6 * h);\r\n v = 1 - bl;\r\n f = 6 * h - i;\r\n if ((i & 0x01) != 0) {\r\n f = 1 - f;\r\n }\r\n n = wh + f * (v - wh); // linear interpolation\r\n\r\n switch (i) {\r\n default:\r\n case 6:\r\n case 0: r = v; g = n; b = wh; break;\r\n case 1: r = n; g = v; b = wh; break;\r\n case 2: r = wh; g = v; b = n; break;\r\n case 3: r = wh; g = n; b = v; break;\r\n case 4: r = n; g = wh; b = v; break;\r\n case 5: r = v; g = wh; b = n; break;\r\n }\r\n\r\n return [r * 255, g * 255, b * 255];\r\n}\r\n\r\nfunction hwb2hsl(args) {\r\n return rgb2hsl(hwb2rgb(args));\r\n}\r\n\r\nfunction hwb2hsv(args) {\r\n return rgb2hsv(hwb2rgb(args));\r\n}\r\n\r\nfunction hwb2cmyk(args) {\r\n return rgb2cmyk(hwb2rgb(args));\r\n}\r\n\r\nfunction hwb2keyword(args) {\r\n return rgb2keyword(hwb2rgb(args));\r\n}\r\n\r\nfunction cmyk2rgb(cmyk) {\r\n var c = cmyk[0] / 100,\r\n m = cmyk[1] / 100,\r\n y = cmyk[2] / 100,\r\n k = cmyk[3] / 100,\r\n r, g, b;\r\n\r\n r = 1 - Math.min(1, c * (1 - k) + k);\r\n g = 1 - Math.min(1, m * (1 - k) + k);\r\n b = 1 - Math.min(1, y * (1 - k) + k);\r\n return [r * 255, g * 255, b * 255];\r\n}\r\n\r\nfunction cmyk2hsl(args) {\r\n return rgb2hsl(cmyk2rgb(args));\r\n}\r\n\r\nfunction cmyk2hsv(args) {\r\n return rgb2hsv(cmyk2rgb(args));\r\n}\r\n\r\nfunction cmyk2hwb(args) {\r\n return rgb2hwb(cmyk2rgb(args));\r\n}\r\n\r\nfunction cmyk2keyword(args) {\r\n return rgb2keyword(cmyk2rgb(args));\r\n}\r\n\r\n\r\nfunction xyz2rgb(xyz) {\r\n var x = xyz[0] / 100,\r\n y = xyz[1] / 100,\r\n z = xyz[2] / 100,\r\n r, g, b;\r\n\r\n r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\r\n g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\r\n b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\r\n\r\n // assume sRGB\r\n r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\r\n : r = (r * 12.92);\r\n\r\n g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\r\n : g = (g * 12.92);\r\n\r\n b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\r\n : b = (b * 12.92);\r\n\r\n r = Math.min(Math.max(0, r), 1);\r\n g = Math.min(Math.max(0, g), 1);\r\n b = Math.min(Math.max(0, b), 1);\r\n\r\n return [r * 255, g * 255, b * 255];\r\n}\r\n\r\nfunction xyz2lab(xyz) {\r\n var x = xyz[0],\r\n y = xyz[1],\r\n z = xyz[2],\r\n l, a, b;\r\n\r\n x /= 95.047;\r\n y /= 100;\r\n z /= 108.883;\r\n\r\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\r\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\r\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\r\n\r\n l = (116 * y) - 16;\r\n a = 500 * (x - y);\r\n b = 200 * (y - z);\r\n\r\n return [l, a, b];\r\n}\r\n\r\nfunction xyz2lch(args) {\r\n return lab2lch(xyz2lab(args));\r\n}\r\n\r\nfunction lab2xyz(lab) {\r\n var l = lab[0],\r\n a = lab[1],\r\n b = lab[2],\r\n x, y, z, y2;\r\n\r\n if (l <= 8) {\r\n y = (l * 100) / 903.3;\r\n y2 = (7.787 * (y / 100)) + (16 / 116);\r\n } else {\r\n y = 100 * Math.pow((l + 16) / 116, 3);\r\n y2 = Math.pow(y / 100, 1/3);\r\n }\r\n\r\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);\r\n\r\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);\r\n\r\n return [x, y, z];\r\n}\r\n\r\nfunction lab2lch(lab) {\r\n var l = lab[0],\r\n a = lab[1],\r\n b = lab[2],\r\n hr, h, c;\r\n\r\n hr = Math.atan2(b, a);\r\n h = hr * 360 / 2 / Math.PI;\r\n if (h < 0) {\r\n h += 360;\r\n }\r\n c = Math.sqrt(a * a + b * b);\r\n return [l, c, h];\r\n}\r\n\r\nfunction lab2rgb(args) {\r\n return xyz2rgb(lab2xyz(args));\r\n}\r\n\r\nfunction lch2lab(lch) {\r\n var l = lch[0],\r\n c = lch[1],\r\n h = lch[2],\r\n a, b, hr;\r\n\r\n hr = h / 360 * 2 * Math.PI;\r\n a = c * Math.cos(hr);\r\n b = c * Math.sin(hr);\r\n return [l, a, b];\r\n}\r\n\r\nfunction lch2xyz(args) {\r\n return lab2xyz(lch2lab(args));\r\n}\r\n\r\nfunction lch2rgb(args) {\r\n return lab2rgb(lch2lab(args));\r\n}\r\n\r\nfunction keyword2rgb(keyword) {\r\n return cssKeywords[keyword];\r\n}\r\n\r\nfunction keyword2hsl(args) {\r\n return rgb2hsl(keyword2rgb(args));\r\n}\r\n\r\nfunction keyword2hsv(args) {\r\n return rgb2hsv(keyword2rgb(args));\r\n}\r\n\r\nfunction keyword2hwb(args) {\r\n return rgb2hwb(keyword2rgb(args));\r\n}\r\n\r\nfunction keyword2cmyk(args) {\r\n return rgb2cmyk(keyword2rgb(args));\r\n}\r\n\r\nfunction keyword2lab(args) {\r\n return rgb2lab(keyword2rgb(args));\r\n}\r\n\r\nfunction keyword2xyz(args) {\r\n return rgb2xyz(keyword2rgb(args));\r\n}\r\n\r\nvar cssKeywords = {\r\n aliceblue: [240,248,255],\r\n antiquewhite: [250,235,215],\r\n aqua: [0,255,255],\r\n aquamarine: [127,255,212],\r\n azure: [240,255,255],\r\n beige: [245,245,220],\r\n bisque: [255,228,196],\r\n black: [0,0,0],\r\n blanchedalmond: [255,235,205],\r\n blue: [0,0,255],\r\n blueviolet: [138,43,226],\r\n brown: [165,42,42],\r\n burlywood: [222,184,135],\r\n cadetblue: [95,158,160],\r\n chartreuse: [127,255,0],\r\n chocolate: [210,105,30],\r\n coral: [255,127,80],\r\n cornflowerblue: [100,149,237],\r\n cornsilk: [255,248,220],\r\n crimson: [220,20,60],\r\n cyan: [0,255,255],\r\n darkblue: [0,0,139],\r\n darkcyan: [0,139,139],\r\n darkgoldenrod: [184,134,11],\r\n darkgray: [169,169,169],\r\n darkgreen: [0,100,0],\r\n darkgrey: [169,169,169],\r\n darkkhaki: [189,183,107],\r\n darkmagenta: [139,0,139],\r\n darkolivegreen: [85,107,47],\r\n darkorange: [255,140,0],\r\n darkorchid: [153,50,204],\r\n darkred: [139,0,0],\r\n darksalmon: [233,150,122],\r\n darkseagreen: [143,188,143],\r\n darkslateblue: [72,61,139],\r\n darkslategray: [47,79,79],\r\n darkslategrey: [47,79,79],\r\n darkturquoise: [0,206,209],\r\n darkviolet: [148,0,211],\r\n deeppink: [255,20,147],\r\n deepskyblue: [0,191,255],\r\n dimgray: [105,105,105],\r\n dimgrey: [105,105,105],\r\n dodgerblue: [30,144,255],\r\n firebrick: [178,34,34],\r\n floralwhite: [255,250,240],\r\n forestgreen: [34,139,34],\r\n fuchsia: [255,0,255],\r\n gainsboro: [220,220,220],\r\n ghostwhite: [248,248,255],\r\n gold: [255,215,0],\r\n goldenrod: [218,165,32],\r\n gray: [128,128,128],\r\n green: [0,128,0],\r\n greenyellow: [173,255,47],\r\n grey: [128,128,128],\r\n honeydew: [240,255,240],\r\n hotpink: [255,105,180],\r\n indianred: [205,92,92],\r\n indigo: [75,0,130],\r\n ivory: [255,255,240],\r\n khaki: [240,230,140],\r\n lavender: [230,230,250],\r\n lavenderblush: [255,240,245],\r\n lawngreen: [124,252,0],\r\n lemonchiffon: [255,250,205],\r\n lightblue: [173,216,230],\r\n lightcoral: [240,128,128],\r\n lightcyan: [224,255,255],\r\n lightgoldenrodyellow: [250,250,210],\r\n lightgray: [211,211,211],\r\n lightgreen: [144,238,144],\r\n lightgrey: [211,211,211],\r\n lightpink: [255,182,193],\r\n lightsalmon: [255,160,122],\r\n lightseagreen: [32,178,170],\r\n lightskyblue: [135,206,250],\r\n lightslategray: [119,136,153],\r\n lightslategrey: [119,136,153],\r\n lightsteelblue: [176,196,222],\r\n lightyellow: [255,255,224],\r\n lime: [0,255,0],\r\n limegreen: [50,205,50],\r\n linen: [250,240,230],\r\n magenta: [255,0,255],\r\n maroon: [128,0,0],\r\n mediumaquamarine: [102,205,170],\r\n mediumblue: [0,0,205],\r\n mediumorchid: [186,85,211],\r\n mediumpurple: [147,112,219],\r\n mediumseagreen: [60,179,113],\r\n mediumslateblue: [123,104,238],\r\n mediumspringgreen: [0,250,154],\r\n mediumturquoise: [72,209,204],\r\n mediumvioletred: [199,21,133],\r\n midnightblue: [25,25,112],\r\n mintcream: [245,255,250],\r\n mistyrose: [255,228,225],\r\n moccasin: [255,228,181],\r\n navajowhite: [255,222,173],\r\n navy: [0,0,128],\r\n oldlace: [253,245,230],\r\n olive: [128,128,0],\r\n olivedrab: [107,142,35],\r\n orange: [255,165,0],\r\n orangered: [255,69,0],\r\n orchid: [218,112,214],\r\n palegoldenrod: [238,232,170],\r\n palegreen: [152,251,152],\r\n paleturquoise: [175,238,238],\r\n palevioletred: [219,112,147],\r\n papayawhip: [255,239,213],\r\n peachpuff: [255,218,185],\r\n peru: [205,133,63],\r\n pink: [255,192,203],\r\n plum: [221,160,221],\r\n powderblue: [176,224,230],\r\n purple: [128,0,128],\r\n rebeccapurple: [102, 51, 153],\r\n red: [255,0,0],\r\n rosybrown: [188,143,143],\r\n royalblue: [65,105,225],\r\n saddlebrown: [139,69,19],\r\n salmon: [250,128,114],\r\n sandybrown: [244,164,96],\r\n seagreen: [46,139,87],\r\n seashell: [255,245,238],\r\n sienna: [160,82,45],\r\n silver: [192,192,192],\r\n skyblue: [135,206,235],\r\n slateblue: [106,90,205],\r\n slategray: [112,128,144],\r\n slategrey: [112,128,144],\r\n snow: [255,250,250],\r\n springgreen: [0,255,127],\r\n steelblue: [70,130,180],\r\n tan: [210,180,140],\r\n teal: [0,128,128],\r\n thistle: [216,191,216],\r\n tomato: [255,99,71],\r\n turquoise: [64,224,208],\r\n violet: [238,130,238],\r\n wheat: [245,222,179],\r\n white: [255,255,255],\r\n whitesmoke: [245,245,245],\r\n yellow: [255,255,0],\r\n yellowgreen: [154,205,50]\r\n};\r\n\r\nvar reverseKeywords = {};\r\nfor (var key in cssKeywords) {\r\n reverseKeywords[JSON.stringify(cssKeywords[key])] = key;\r\n}\r\n\r\n},{}],5:[function(require,module,exports){\r\nvar conversions = require(4);\r\n\r\nvar convert = function() {\r\n return new Converter();\r\n}\r\n\r\nfor (var func in conversions) {\r\n // export Raw versions\r\n convert[func + \"Raw\"] = (function(func) {\r\n // accept array or plain args\r\n return function(arg) {\r\n if (typeof arg == \"number\")\r\n arg = Array.prototype.slice.call(arguments);\r\n return conversions[func](arg);\r\n }\r\n })(func);\r\n\r\n var pair = /(\\w+)2(\\w+)/.exec(func),\r\n from = pair[1],\r\n to = pair[2];\r\n\r\n // export rgb2hsl and [\"rgb\"][\"hsl\"]\r\n convert[from] = convert[from] || {};\r\n\r\n convert[from][to] = convert[func] = (function(func) {\r\n return function(arg) {\r\n if (typeof arg == \"number\")\r\n arg = Array.prototype.slice.call(arguments);\r\n\r\n var val = conversions[func](arg);\r\n if (typeof val == \"string\" || val === undefined)\r\n return val; // keyword\r\n\r\n for (var i = 0; i < val.length; i++)\r\n val[i] = Math.round(val[i]);\r\n return val;\r\n }\r\n })(func);\r\n}\r\n\r\n\r\n/* Converter does lazy conversion and caching */\r\nvar Converter = function() {\r\n this.convs = {};\r\n};\r\n\r\n/* Either get the values for a space or\r\n set the values for a space, depending on args */\r\nConverter.prototype.routeSpace = function(space, args) {\r\n var values = args[0];\r\n if (values === undefined) {\r\n // color.rgb()\r\n return this.getValues(space);\r\n }\r\n // color.rgb(10, 10, 10)\r\n if (typeof values == \"number\") {\r\n values = Array.prototype.slice.call(args);\r\n }\r\n\r\n return this.setValues(space, values);\r\n};\r\n\r\n/* Set the values for a space, invalidating cache */\r\nConverter.prototype.setValues = function(space, values) {\r\n this.space = space;\r\n this.convs = {};\r\n this.convs[space] = values;\r\n return this;\r\n};\r\n\r\n/* Get the values for a space. If there's already\r\n a conversion for the space, fetch it, otherwise\r\n compute it */\r\nConverter.prototype.getValues = function(space) {\r\n var vals = this.convs[space];\r\n if (!vals) {\r\n var fspace = this.space,\r\n from = this.convs[fspace];\r\n vals = convert[fspace][space](from);\r\n\r\n this.convs[space] = vals;\r\n }\r\n return vals;\r\n};\r\n\r\n[\"rgb\", \"hsl\", \"hsv\", \"cmyk\", \"keyword\"].forEach(function(space) {\r\n Converter.prototype[space] = function(vals) {\r\n return this.routeSpace(space, arguments);\r\n }\r\n});\r\n\r\nmodule.exports = convert;\r\n},{\"4\":4}],6:[function(require,module,exports){\r\n'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n\r\n},{}],7:[function(require,module,exports){\r\n/**\r\n * @namespace Chart\r\n */\r\nvar Chart = require(30)();\r\n\r\nChart.helpers = require(46);\r\n\r\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\r\nrequire(28)(Chart);\r\n\r\nChart.Animation = require(22);\r\nChart.animationService = require(23);\r\nChart.defaults = require(26);\r\nChart.Element = require(27);\r\nChart.elements = require(41);\r\nChart.Interaction = require(29);\r\nChart.layouts = require(31);\r\nChart.platform = require(49);\r\nChart.plugins = require(32);\r\nChart.Scale = require(33);\r\nChart.scaleService = require(34);\r\nChart.Ticks = require(35);\r\nChart.Tooltip = require(36);\r\n\r\nrequire(24)(Chart);\r\nrequire(25)(Chart);\r\n\r\nrequire(56)(Chart);\r\nrequire(54)(Chart);\r\nrequire(55)(Chart);\r\nrequire(57)(Chart);\r\nrequire(58)(Chart);\r\nrequire(59)(Chart);\r\n\r\n// Controllers must be loaded after elements\r\n// See Chart.core.datasetController.dataElementType\r\nrequire(15)(Chart);\r\nrequire(16)(Chart);\r\nrequire(17)(Chart);\r\nrequire(18)(Chart);\r\nrequire(19)(Chart);\r\nrequire(20)(Chart);\r\nrequire(21)(Chart);\r\n\r\nrequire(8)(Chart);\r\nrequire(9)(Chart);\r\nrequire(10)(Chart);\r\nrequire(11)(Chart);\r\nrequire(12)(Chart);\r\nrequire(13)(Chart);\r\nrequire(14)(Chart);\r\n\r\n// Loading built-in plugins\r\nvar plugins = require(50);\r\nfor (var k in plugins) {\r\n\tif (plugins.hasOwnProperty(k)) {\r\n\t\tChart.plugins.register(plugins[k]);\r\n\t}\r\n}\r\n\r\nChart.platform.initialize();\r\n\r\nmodule.exports = Chart;\r\nif (typeof window !== 'undefined') {\r\n\twindow.Chart = Chart;\r\n}\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Legend\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.Legend = plugins.legend._element;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Title\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.Title = plugins.title._element;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.plugins instead\r\n * @namespace Chart.pluginService\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.pluginService = Chart.plugins;\r\n\r\n/**\r\n * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\r\n * effect, instead simply create/register plugins via plain JavaScript objects.\r\n * @interface Chart.PluginBase\r\n * @deprecated since version 2.5.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.PluginBase = Chart.Element.extend({});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas instead.\r\n * @namespace Chart.canvasHelpers\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.canvasHelpers = Chart.helpers.canvas;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.layouts instead.\r\n * @namespace Chart.layoutService\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.layoutService = Chart.layouts;\r\n\r\n},{\"10\":10,\"11\":11,\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"17\":17,\"18\":18,\"19\":19,\"20\":20,\"21\":21,\"22\":22,\"23\":23,\"24\":24,\"25\":25,\"26\":26,\"27\":27,\"28\":28,\"29\":29,\"30\":30,\"31\":31,\"32\":32,\"33\":33,\"34\":34,\"35\":35,\"36\":36,\"41\":41,\"46\":46,\"49\":49,\"50\":50,\"54\":54,\"55\":55,\"56\":56,\"57\":57,\"58\":58,\"59\":59,\"8\":8,\"9\":9}],8:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.Bar = function(context, config) {\r\n\t\tconfig.type = 'bar';\r\n\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],9:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.Bubble = function(context, config) {\r\n\t\tconfig.type = 'bubble';\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],10:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.Doughnut = function(context, config) {\r\n\t\tconfig.type = 'doughnut';\r\n\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],11:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.Line = function(context, config) {\r\n\t\tconfig.type = 'line';\r\n\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],12:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.PolarArea = function(context, config) {\r\n\t\tconfig.type = 'polarArea';\r\n\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],13:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.Radar = function(context, config) {\r\n\t\tconfig.type = 'radar';\r\n\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],14:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\tChart.Scatter = function(context, config) {\r\n\t\tconfig.type = 'scatter';\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n};\r\n\r\n},{}],15:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('bar', {\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\r\n\t\t\t// Specific to Bar Controller\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9,\r\n\r\n\t\t\t// offset settings\r\n\t\t\toffset: true,\r\n\r\n\t\t\t// grid line settings\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\ndefaults._set('horizontalBar', {\r\n\thover: {\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\tposition: 'left',\r\n\t\t\ttype: 'category',\r\n\r\n\t\t\t// Specific to Horizontal Bar Controller\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9,\r\n\r\n\t\t\t// offset settings\r\n\t\t\toffset: true,\r\n\r\n\t\t\t// grid line settings\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}]\r\n\t},\r\n\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tborderSkipped: 'left'\r\n\t\t}\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function(item, data) {\r\n\t\t\t\t// Pick first xLabel for now\r\n\t\t\t\tvar title = '';\r\n\r\n\t\t\t\tif (item.length > 0) {\r\n\t\t\t\t\tif (item[0].yLabel) {\r\n\t\t\t\t\t\ttitle = item[0].yLabel;\r\n\t\t\t\t\t} else if (data.labels.length > 0 && item[0].index < data.labels.length) {\r\n\t\t\t\t\t\ttitle = data.labels[item[0].index];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn title;\r\n\t\t\t},\r\n\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\r\n\t\t\t\treturn datasetLabel + ': ' + item.xLabel;\r\n\t\t\t}\r\n\t\t},\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t}\r\n});\r\n\r\n/**\r\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\r\n * @private\r\n */\r\nfunction computeMinSampleSize(scale, pixels) {\r\n\tvar min = scale.isHorizontal() ? scale.width : scale.height;\r\n\tvar ticks = scale.getTicks();\r\n\tvar prev, curr, i, ilen;\r\n\r\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\r\n\t\tmin = Math.min(min, pixels[i] - pixels[i - 1]);\r\n\t}\r\n\r\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\tcurr = scale.getPixelForTick(i);\r\n\t\tmin = i > 0 ? Math.min(min, curr - prev) : min;\r\n\t\tprev = curr;\r\n\t}\r\n\r\n\treturn min;\r\n}\r\n\r\n/**\r\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\r\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\r\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\r\n * @private\r\n */\r\nfunction computeFitCategoryTraits(index, ruler, options) {\r\n\tvar thickness = options.barThickness;\r\n\tvar count = ruler.stackCount;\r\n\tvar curr = ruler.pixels[index];\r\n\tvar size, ratio;\r\n\r\n\tif (helpers.isNullOrUndef(thickness)) {\r\n\t\tsize = ruler.min * options.categoryPercentage;\r\n\t\tratio = options.barPercentage;\r\n\t} else {\r\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\r\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\r\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\r\n\t\tsize = thickness * count;\r\n\t\tratio = 1;\r\n\t}\r\n\r\n\treturn {\r\n\t\tchunk: size / count,\r\n\t\tratio: ratio,\r\n\t\tstart: curr - (size / 2)\r\n\t};\r\n}\r\n\r\n/**\r\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\r\n * percentage options are 1), based on the previous and following categories. This mode\r\n * generates bars with different widths when data are not evenly spaced.\r\n * @private\r\n */\r\nfunction computeFlexCategoryTraits(index, ruler, options) {\r\n\tvar pixels = ruler.pixels;\r\n\tvar curr = pixels[index];\r\n\tvar prev = index > 0 ? pixels[index - 1] : null;\r\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\r\n\tvar percent = options.categoryPercentage;\r\n\tvar start, size;\r\n\r\n\tif (prev === null) {\r\n\t\t// first data: its size is double based on the next point or,\r\n\t\t// if it's also the last data, we use the scale end extremity.\r\n\t\tprev = curr - (next === null ? ruler.end - curr : next - curr);\r\n\t}\r\n\r\n\tif (next === null) {\r\n\t\t// last data: its size is also double based on the previous point.\r\n\t\tnext = curr + curr - prev;\r\n\t}\r\n\r\n\tstart = curr - ((curr - prev) / 2) * percent;\r\n\tsize = ((next - prev) / 2) * percent;\r\n\r\n\treturn {\r\n\t\tchunk: size / ruler.stackCount,\r\n\t\tratio: options.barPercentage,\r\n\t\tstart: start\r\n\t};\r\n}\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.controllers.bar = Chart.DatasetController.extend({\r\n\r\n\t\tdataElementType: elements.Rectangle,\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta;\r\n\r\n\t\t\tChart.DatasetController.prototype.initialize.apply(me, arguments);\r\n\r\n\t\t\tmeta = me.getMeta();\r\n\t\t\tmeta.stack = me.getDataset().stack;\r\n\t\t\tmeta.bar = true;\r\n\t\t},\r\n\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar rects = me.getMeta().data;\r\n\t\t\tvar i, ilen;\r\n\r\n\t\t\tme._ruler = me.getRuler();\r\n\r\n\t\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\r\n\t\t\t\tme.updateElement(rects[i], i, reset);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tupdateElement: function(rectangle, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar custom = rectangle.custom || {};\r\n\t\t\tvar rectangleOptions = chart.options.elements.rectangle;\r\n\r\n\t\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\r\n\t\t\trectangle._datasetIndex = me.index;\r\n\t\t\trectangle._index = index;\r\n\r\n\t\t\trectangle._model = {\r\n\t\t\t\tdatasetLabel: dataset.label,\r\n\t\t\t\tlabel: chart.data.labels[index],\r\n\t\t\t\tborderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped,\r\n\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor),\r\n\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor),\r\n\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth)\r\n\t\t\t};\r\n\r\n\t\t\tme.updateElementGeometry(rectangle, index, reset);\r\n\r\n\t\t\trectangle.pivot();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tupdateElementGeometry: function(rectangle, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar model = rectangle._model;\r\n\t\t\tvar vscale = me.getValueScale();\r\n\t\t\tvar base = vscale.getBasePixel();\r\n\t\t\tvar horizontal = vscale.isHorizontal();\r\n\t\t\tvar ruler = me._ruler || me.getRuler();\r\n\t\t\tvar vpixels = me.calculateBarValuePixels(me.index, index);\r\n\t\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler);\r\n\r\n\t\t\tmodel.horizontal = horizontal;\r\n\t\t\tmodel.base = reset ? base : vpixels.base;\r\n\t\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\r\n\t\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\r\n\t\t\tmodel.height = horizontal ? ipixels.size : undefined;\r\n\t\t\tmodel.width = horizontal ? undefined : ipixels.size;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetValueScaleId: function() {\r\n\t\t\treturn this.getMeta().yAxisID;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetIndexScaleId: function() {\r\n\t\t\treturn this.getMeta().xAxisID;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetValueScale: function() {\r\n\t\t\treturn this.getScaleForId(this.getValueScaleId());\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetIndexScale: function() {\r\n\t\t\treturn this.getScaleForId(this.getIndexScaleId());\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Returns the stacks based on groups and bar visibility.\r\n\t\t * @param {Number} [last] - The dataset index\r\n\t\t * @returns {Array} The stack list\r\n\t\t * @private\r\n\t\t */\r\n\t\t_getStacks: function(last) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar scale = me.getIndexScale();\r\n\t\t\tvar stacked = scale.options.stacked;\r\n\t\t\tvar ilen = last === undefined ? chart.data.datasets.length : last + 1;\r\n\t\t\tvar stacks = [];\r\n\t\t\tvar i, meta;\r\n\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tif (meta.bar && chart.isDatasetVisible(i) &&\r\n\t\t\t\t\t(stacked === false ||\r\n\t\t\t\t\t(stacked === true && stacks.indexOf(meta.stack) === -1) ||\r\n\t\t\t\t\t(stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) {\r\n\t\t\t\t\tstacks.push(meta.stack);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn stacks;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Returns the effective number of stacks based on groups and bar visibility.\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetStackCount: function() {\r\n\t\t\treturn this._getStacks().length;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Returns the stack index for the given dataset based on groups and bar visibility.\r\n\t\t * @param {Number} [datasetIndex] - The dataset index\r\n\t\t * @param {String} [name] - The stack name to find\r\n\t\t * @returns {Number} The stack index\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetStackIndex: function(datasetIndex, name) {\r\n\t\t\tvar stacks = this._getStacks(datasetIndex);\r\n\t\t\tvar index = (name !== undefined)\r\n\t\t\t\t? stacks.indexOf(name)\r\n\t\t\t\t: -1; // indexOf returns -1 if element is not present\r\n\r\n\t\t\treturn (index === -1)\r\n\t\t\t\t? stacks.length - 1\r\n\t\t\t\t: index;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetRuler: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar scale = me.getIndexScale();\r\n\t\t\tvar stackCount = me.getStackCount();\r\n\t\t\tvar datasetIndex = me.index;\r\n\t\t\tvar isHorizontal = scale.isHorizontal();\r\n\t\t\tvar start = isHorizontal ? scale.left : scale.top;\r\n\t\t\tvar end = start + (isHorizontal ? scale.width : scale.height);\r\n\t\t\tvar pixels = [];\r\n\t\t\tvar i, ilen, min;\r\n\r\n\t\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\r\n\t\t\t\tpixels.push(scale.getPixelForValue(null, i, datasetIndex));\r\n\t\t\t}\r\n\r\n\t\t\tmin = helpers.isNullOrUndef(scale.options.barThickness)\r\n\t\t\t\t? computeMinSampleSize(scale, pixels)\r\n\t\t\t\t: -1;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tmin: min,\r\n\t\t\t\tpixels: pixels,\r\n\t\t\t\tstart: start,\r\n\t\t\t\tend: end,\r\n\t\t\t\tstackCount: stackCount,\r\n\t\t\t\tscale: scale\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Note: pixel values are not clamped to the scale area.\r\n\t\t * @private\r\n\t\t */\r\n\t\tcalculateBarValuePixels: function(datasetIndex, index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar scale = me.getValueScale();\r\n\t\t\tvar datasets = chart.data.datasets;\r\n\t\t\tvar value = scale.getRightValue(datasets[datasetIndex].data[index]);\r\n\t\t\tvar stacked = scale.options.stacked;\r\n\t\t\tvar stack = meta.stack;\r\n\t\t\tvar start = 0;\r\n\t\t\tvar i, imeta, ivalue, base, head, size;\r\n\r\n\t\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\r\n\t\t\t\tfor (i = 0; i < datasetIndex; ++i) {\r\n\t\t\t\t\timeta = chart.getDatasetMeta(i);\r\n\r\n\t\t\t\t\tif (imeta.bar &&\r\n\t\t\t\t\t\timeta.stack === stack &&\r\n\t\t\t\t\t\timeta.controller.getValueScaleId() === scale.id &&\r\n\t\t\t\t\t\tchart.isDatasetVisible(i)) {\r\n\r\n\t\t\t\t\t\tivalue = scale.getRightValue(datasets[i].data[index]);\r\n\t\t\t\t\t\tif ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) {\r\n\t\t\t\t\t\t\tstart += ivalue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tbase = scale.getPixelForValue(start);\r\n\t\t\thead = scale.getPixelForValue(start + value);\r\n\t\t\tsize = (head - base) / 2;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tsize: size,\r\n\t\t\t\tbase: base,\r\n\t\t\t\thead: head,\r\n\t\t\t\tcenter: head + size / 2\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tcalculateBarIndexPixels: function(datasetIndex, index, ruler) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = ruler.scale.options;\r\n\t\t\tvar range = options.barThickness === 'flex'\r\n\t\t\t\t? computeFlexCategoryTraits(index, ruler, options)\r\n\t\t\t\t: computeFitCategoryTraits(index, ruler, options);\r\n\r\n\t\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\r\n\t\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\r\n\t\t\tvar size = Math.min(\r\n\t\t\t\thelpers.valueOrDefault(options.maxBarThickness, Infinity),\r\n\t\t\t\trange.chunk * range.ratio);\r\n\r\n\t\t\treturn {\r\n\t\t\t\tbase: center - size / 2,\r\n\t\t\t\thead: center + size / 2,\r\n\t\t\t\tcenter: center,\r\n\t\t\t\tsize: size\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tdraw: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar scale = me.getValueScale();\r\n\t\t\tvar rects = me.getMeta().data;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar ilen = rects.length;\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\thelpers.canvas.clipArea(chart.ctx, chart.chartArea);\r\n\r\n\t\t\tfor (; i < ilen; ++i) {\r\n\t\t\t\tif (!isNaN(scale.getRightValue(dataset.data[i]))) {\r\n\t\t\t\t\trects[i].draw();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\thelpers.canvas.unclipArea(chart.ctx);\r\n\t\t},\r\n\t});\r\n\r\n\tChart.controllers.horizontalBar = Chart.controllers.bar.extend({\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetValueScaleId: function() {\r\n\t\t\treturn this.getMeta().xAxisID;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetIndexScaleId: function() {\r\n\t\t\treturn this.getMeta().yAxisID;\r\n\t\t}\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],16:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('bubble', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\r\n\t\t\tposition: 'bottom',\r\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\r\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\r\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.controllers.bubble = Chart.DatasetController.extend({\r\n\t\t/**\r\n\t\t * @protected\r\n\t\t */\r\n\t\tdataElementType: elements.Point,\r\n\r\n\t\t/**\r\n\t\t * @protected\r\n\t\t */\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar points = meta.data;\r\n\r\n\t\t\t// Update Points\r\n\t\t\thelpers.each(points, function(point, index) {\r\n\t\t\t\tme.updateElement(point, index, reset);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @protected\r\n\t\t */\r\n\t\tupdateElement: function(point, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar custom = point.custom || {};\r\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\r\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\t\tvar options = me._resolveElementOptions(point, index);\r\n\t\t\tvar data = me.getDataset().data[index];\r\n\t\t\tvar dsIndex = me.index;\r\n\r\n\t\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\r\n\t\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\r\n\r\n\t\t\tpoint._xScale = xScale;\r\n\t\t\tpoint._yScale = yScale;\r\n\t\t\tpoint._options = options;\r\n\t\t\tpoint._datasetIndex = dsIndex;\r\n\t\t\tpoint._index = index;\r\n\t\t\tpoint._model = {\r\n\t\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\t\tborderColor: options.borderColor,\r\n\t\t\t\tborderWidth: options.borderWidth,\r\n\t\t\t\thitRadius: options.hitRadius,\r\n\t\t\t\tpointStyle: options.pointStyle,\r\n\t\t\t\trotation: options.rotation,\r\n\t\t\t\tradius: reset ? 0 : options.radius,\r\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t\tx: x,\r\n\t\t\t\ty: y,\r\n\t\t\t};\r\n\r\n\t\t\tpoint.pivot();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @protected\r\n\t\t */\r\n\t\tsetHoverStyle: function(point) {\r\n\t\t\tvar model = point._model;\r\n\t\t\tvar options = point._options;\r\n\t\t\tpoint.$previousStyle = {\r\n\t\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\t\tborderColor: model.borderColor,\r\n\t\t\t\tborderWidth: model.borderWidth,\r\n\t\t\t\tradius: model.radius\r\n\t\t\t};\r\n\t\t\tmodel.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor));\r\n\t\t\tmodel.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor));\r\n\t\t\tmodel.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth);\r\n\t\t\tmodel.radius = options.radius + options.hoverRadius;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\t_resolveElementOptions: function(point, index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar datasets = chart.data.datasets;\r\n\t\t\tvar dataset = datasets[me.index];\r\n\t\t\tvar custom = point.custom || {};\r\n\t\t\tvar options = chart.options.elements.point;\r\n\t\t\tvar resolve = helpers.options.resolve;\r\n\t\t\tvar data = dataset.data[index];\r\n\t\t\tvar values = {};\r\n\t\t\tvar i, ilen, key;\r\n\r\n\t\t\t// Scriptable options\r\n\t\t\tvar context = {\r\n\t\t\t\tchart: chart,\r\n\t\t\t\tdataIndex: index,\r\n\t\t\t\tdataset: dataset,\r\n\t\t\t\tdatasetIndex: me.index\r\n\t\t\t};\r\n\r\n\t\t\tvar keys = [\r\n\t\t\t\t'backgroundColor',\r\n\t\t\t\t'borderColor',\r\n\t\t\t\t'borderWidth',\r\n\t\t\t\t'hoverBackgroundColor',\r\n\t\t\t\t'hoverBorderColor',\r\n\t\t\t\t'hoverBorderWidth',\r\n\t\t\t\t'hoverRadius',\r\n\t\t\t\t'hitRadius',\r\n\t\t\t\t'pointStyle',\r\n\t\t\t\t'rotation'\r\n\t\t\t];\r\n\r\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\t\tkey = keys[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdataset[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index);\r\n\t\t\t}\r\n\r\n\t\t\t// Custom radius resolution\r\n\t\t\tvalues.radius = resolve([\r\n\t\t\t\tcustom.radius,\r\n\t\t\t\tdata ? data.r : undefined,\r\n\t\t\t\tdataset.radius,\r\n\t\t\t\toptions.radius\r\n\t\t\t], context, index);\r\n\t\t\treturn values;\r\n\t\t}\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],17:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('doughnut', {\r\n\tanimation: {\r\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\r\n\t\tanimateRotate: true,\r\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\r\n\t\tanimateScale: false\r\n\t},\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\tlegendCallback: function(chart) {\r\n\t\tvar text = [];\r\n\t\ttext.push('
    ');\r\n\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\r\n\t\t\t\ttext.push('
  • ');\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\ttext.push(labels[i]);\r\n\t\t\t\t}\r\n\t\t\t\ttext.push('
  • ');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttext.push('
');\r\n\t\treturn text.join('');\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar ds = data.datasets[0];\r\n\t\t\t\t\t\tvar arc = meta.data[i];\r\n\t\t\t\t\t\tvar custom = arc && arc.custom || {};\r\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\r\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\r\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\r\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\r\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: fill,\r\n\t\t\t\t\t\t\tstrokeStyle: stroke,\r\n\t\t\t\t\t\t\tlineWidth: bw,\r\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t// toggle visibility of index if exists\r\n\t\t\t\tif (meta.data[index]) {\r\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// The percentage of the chart that we cut out of the middle.\r\n\tcutoutPercentage: 50,\r\n\r\n\t// The rotation of the chart, where the first data arc begins.\r\n\trotation: Math.PI * -0.5,\r\n\r\n\t// The total circumference of the chart.\r\n\tcircumference: Math.PI * 2.0,\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(tooltipItem, data) {\r\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\r\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\r\n\r\n\t\t\t\tif (helpers.isArray(dataLabel)) {\r\n\t\t\t\t\t// show value on first line of multiline label\r\n\t\t\t\t\t// need to clone because we are changing the value\r\n\t\t\t\t\tdataLabel = dataLabel.slice();\r\n\t\t\t\t\tdataLabel[0] += value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdataLabel += value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn dataLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\ndefaults._set('pie', helpers.clone(defaults.doughnut));\r\ndefaults._set('pie', {\r\n\tcutoutPercentage: 0\r\n});\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({\r\n\r\n\t\tdataElementType: elements.Arc,\r\n\r\n\t\tlinkScales: helpers.noop,\r\n\r\n\t\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\r\n\t\tgetRingIndex: function(datasetIndex) {\r\n\t\t\tvar ringIndex = 0;\r\n\r\n\t\t\tfor (var j = 0; j < datasetIndex; ++j) {\r\n\t\t\t\tif (this.chart.isDatasetVisible(j)) {\r\n\t\t\t\t\t++ringIndex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn ringIndex;\r\n\t\t},\r\n\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar chartArea = chart.chartArea;\r\n\t\t\tvar opts = chart.options;\r\n\t\t\tvar arcOpts = opts.elements.arc;\r\n\t\t\tvar availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth;\r\n\t\t\tvar availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth;\r\n\t\t\tvar minSize = Math.min(availableWidth, availableHeight);\r\n\t\t\tvar offset = {x: 0, y: 0};\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar cutoutPercentage = opts.cutoutPercentage;\r\n\t\t\tvar circumference = opts.circumference;\r\n\r\n\t\t\t// If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc\r\n\t\t\tif (circumference < Math.PI * 2.0) {\r\n\t\t\t\tvar startAngle = opts.rotation % (Math.PI * 2.0);\r\n\t\t\t\tstartAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0);\r\n\t\t\t\tvar endAngle = startAngle + circumference;\r\n\t\t\t\tvar start = {x: Math.cos(startAngle), y: Math.sin(startAngle)};\r\n\t\t\t\tvar end = {x: Math.cos(endAngle), y: Math.sin(endAngle)};\r\n\t\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle);\r\n\t\t\t\tvar contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle);\r\n\t\t\t\tvar contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle);\r\n\t\t\t\tvar contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle);\r\n\t\t\t\tvar cutout = cutoutPercentage / 100.0;\r\n\t\t\t\tvar min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))};\r\n\t\t\t\tvar max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))};\r\n\t\t\t\tvar size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5};\r\n\t\t\t\tminSize = Math.min(availableWidth / size.width, availableHeight / size.height);\r\n\t\t\t\toffset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5};\r\n\t\t\t}\r\n\r\n\t\t\tchart.borderWidth = me.getMaxBorderWidth(meta.data);\r\n\t\t\tchart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0);\r\n\t\t\tchart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0);\r\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\r\n\t\t\tchart.offsetX = offset.x * chart.outerRadius;\r\n\t\t\tchart.offsetY = offset.y * chart.outerRadius;\r\n\r\n\t\t\tmeta.total = me.calculateTotal();\r\n\r\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index));\r\n\t\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0);\r\n\r\n\t\t\thelpers.each(meta.data, function(arc, index) {\r\n\t\t\t\tme.updateElement(arc, index, reset);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tupdateElement: function(arc, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar chartArea = chart.chartArea;\r\n\t\t\tvar opts = chart.options;\r\n\t\t\tvar animationOpts = opts.animation;\r\n\t\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\r\n\t\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\r\n\t\t\tvar startAngle = opts.rotation; // non reset case handled later\r\n\t\t\tvar endAngle = opts.rotation; // non reset case handled later\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI));\r\n\t\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\r\n\t\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\r\n\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\r\n\r\n\t\t\thelpers.extend(arc, {\r\n\t\t\t\t// Utility\r\n\t\t\t\t_datasetIndex: me.index,\r\n\t\t\t\t_index: index,\r\n\r\n\t\t\t\t// Desired view properties\r\n\t\t\t\t_model: {\r\n\t\t\t\t\tx: centerX + chart.offsetX,\r\n\t\t\t\t\ty: centerY + chart.offsetY,\r\n\t\t\t\t\tstartAngle: startAngle,\r\n\t\t\t\t\tendAngle: endAngle,\r\n\t\t\t\t\tcircumference: circumference,\r\n\t\t\t\t\touterRadius: outerRadius,\r\n\t\t\t\t\tinnerRadius: innerRadius,\r\n\t\t\t\t\tlabel: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar model = arc._model;\r\n\r\n\t\t\t// Resets the visual styles\r\n\t\t\tvar custom = arc.custom || {};\r\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\r\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\r\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\r\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\r\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\r\n\r\n\t\t\t// Set correct angles if not resetting\r\n\t\t\tif (!reset || !animationOpts.animateRotate) {\r\n\t\t\t\tif (index === 0) {\r\n\t\t\t\t\tmodel.startAngle = opts.rotation;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmodel.endAngle = model.startAngle + model.circumference;\r\n\t\t\t}\r\n\r\n\t\t\tarc.pivot();\r\n\t\t},\r\n\r\n\t\tcalculateTotal: function() {\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar meta = this.getMeta();\r\n\t\t\tvar total = 0;\r\n\t\t\tvar value;\r\n\r\n\t\t\thelpers.each(meta.data, function(element, index) {\r\n\t\t\t\tvalue = dataset.data[index];\r\n\t\t\t\tif (!isNaN(value) && !element.hidden) {\r\n\t\t\t\t\ttotal += Math.abs(value);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t/* if (total === 0) {\r\n\t\t\t\ttotal = NaN;\r\n\t\t\t}*/\r\n\r\n\t\t\treturn total;\r\n\t\t},\r\n\r\n\t\tcalculateCircumference: function(value) {\r\n\t\t\tvar total = this.getMeta().total;\r\n\t\t\tif (total > 0 && !isNaN(value)) {\r\n\t\t\t\treturn (Math.PI * 2.0) * (Math.abs(value) / total);\r\n\t\t\t}\r\n\t\t\treturn 0;\r\n\t\t},\r\n\r\n\t\t// gets the max border or hover width to properly scale pie charts\r\n\t\tgetMaxBorderWidth: function(arcs) {\r\n\t\t\tvar max = 0;\r\n\t\t\tvar index = this.index;\r\n\t\t\tvar length = arcs.length;\r\n\t\t\tvar borderWidth;\r\n\t\t\tvar hoverWidth;\r\n\r\n\t\t\tfor (var i = 0; i < length; i++) {\r\n\t\t\t\tborderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0;\r\n\t\t\t\thoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0;\r\n\r\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\r\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\r\n\t\t\t}\r\n\t\t\treturn max;\r\n\t\t}\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],18:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('line', {\r\n\tshowLines: true,\r\n\tspanGaps: false,\r\n\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\tid: 'x-axis-0'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tfunction lineEnabled(dataset, options) {\r\n\t\treturn helpers.valueOrDefault(dataset.showLine, options.showLines);\r\n\t}\r\n\r\n\tChart.controllers.line = Chart.DatasetController.extend({\r\n\r\n\t\tdatasetElementType: elements.Line,\r\n\r\n\t\tdataElementType: elements.Point,\r\n\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar line = meta.dataset;\r\n\t\t\tvar points = meta.data || [];\r\n\t\t\tvar options = me.chart.options;\r\n\t\t\tvar lineElementOptions = options.elements.line;\r\n\t\t\tvar scale = me.getScaleForId(meta.yAxisID);\r\n\t\t\tvar i, ilen, custom;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar showLine = lineEnabled(dataset, options);\r\n\r\n\t\t\t// Update Line\r\n\t\t\tif (showLine) {\r\n\t\t\t\tcustom = line.custom || {};\r\n\r\n\t\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\r\n\t\t\t\t\tdataset.lineTension = dataset.tension;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Utility\r\n\t\t\t\tline._scale = scale;\r\n\t\t\t\tline._datasetIndex = me.index;\r\n\t\t\t\t// Data\r\n\t\t\t\tline._children = points;\r\n\t\t\t\t// Model\r\n\t\t\t\tline._model = {\r\n\t\t\t\t\t// Appearance\r\n\t\t\t\t\t// The default behavior of lines is to break at null values, according\r\n\t\t\t\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\r\n\t\t\t\t\t// This option gives lines the ability to span gaps\r\n\t\t\t\t\tspanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps,\r\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\r\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\r\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\r\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\r\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\r\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\r\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\r\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\r\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\r\n\t\t\t\t\tsteppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped),\r\n\t\t\t\t\tcubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode),\r\n\t\t\t\t};\r\n\r\n\t\t\t\tline.pivot();\r\n\t\t\t}\r\n\r\n\t\t\t// Update Points\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t\t}\r\n\r\n\t\t\tif (showLine && line._model.tension !== 0) {\r\n\t\t\t\tme.updateBezierControlPoints();\r\n\t\t\t}\r\n\r\n\t\t\t// Now pivot the point for animation\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tpoints[i].pivot();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetPointBackgroundColor: function(point, index) {\r\n\t\t\tvar backgroundColor = this.chart.options.elements.point.backgroundColor;\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar custom = point.custom || {};\r\n\r\n\t\t\tif (custom.backgroundColor) {\r\n\t\t\t\tbackgroundColor = custom.backgroundColor;\r\n\t\t\t} else if (dataset.pointBackgroundColor) {\r\n\t\t\t\tbackgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor);\r\n\t\t\t} else if (dataset.backgroundColor) {\r\n\t\t\t\tbackgroundColor = dataset.backgroundColor;\r\n\t\t\t}\r\n\r\n\t\t\treturn backgroundColor;\r\n\t\t},\r\n\r\n\t\tgetPointBorderColor: function(point, index) {\r\n\t\t\tvar borderColor = this.chart.options.elements.point.borderColor;\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar custom = point.custom || {};\r\n\r\n\t\t\tif (custom.borderColor) {\r\n\t\t\t\tborderColor = custom.borderColor;\r\n\t\t\t} else if (dataset.pointBorderColor) {\r\n\t\t\t\tborderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor);\r\n\t\t\t} else if (dataset.borderColor) {\r\n\t\t\t\tborderColor = dataset.borderColor;\r\n\t\t\t}\r\n\r\n\t\t\treturn borderColor;\r\n\t\t},\r\n\r\n\t\tgetPointBorderWidth: function(point, index) {\r\n\t\t\tvar borderWidth = this.chart.options.elements.point.borderWidth;\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar custom = point.custom || {};\r\n\r\n\t\t\tif (!isNaN(custom.borderWidth)) {\r\n\t\t\t\tborderWidth = custom.borderWidth;\r\n\t\t\t} else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) {\r\n\t\t\t\tborderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth);\r\n\t\t\t} else if (!isNaN(dataset.borderWidth)) {\r\n\t\t\t\tborderWidth = dataset.borderWidth;\r\n\t\t\t}\r\n\r\n\t\t\treturn borderWidth;\r\n\t\t},\r\n\r\n\t\tgetPointRotation: function(point, index) {\r\n\t\t\tvar pointRotation = this.chart.options.elements.point.rotation;\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar custom = point.custom || {};\r\n\r\n\t\t\tif (!isNaN(custom.rotation)) {\r\n\t\t\t\tpointRotation = custom.rotation;\r\n\t\t\t} else if (!isNaN(dataset.pointRotation) || helpers.isArray(dataset.pointRotation)) {\r\n\t\t\t\tpointRotation = helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointRotation);\r\n\t\t\t}\r\n\t\t\treturn pointRotation;\r\n\t\t},\r\n\r\n\t\tupdateElement: function(point, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar custom = point.custom || {};\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar datasetIndex = me.index;\r\n\t\t\tvar value = dataset.data[index];\r\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\r\n\t\t\tvar pointOptions = me.chart.options.elements.point;\r\n\t\t\tvar x, y;\r\n\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\r\n\t\t\t\tdataset.pointRadius = dataset.radius;\r\n\t\t\t}\r\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\r\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\r\n\t\t\t}\r\n\r\n\t\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\r\n\t\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\r\n\r\n\t\t\t// Utility\r\n\t\t\tpoint._xScale = xScale;\r\n\t\t\tpoint._yScale = yScale;\r\n\t\t\tpoint._datasetIndex = datasetIndex;\r\n\t\t\tpoint._index = index;\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\tpoint._model = {\r\n\t\t\t\tx: x,\r\n\t\t\t\ty: y,\r\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t\t// Appearance\r\n\t\t\t\tradius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius),\r\n\t\t\t\tpointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle),\r\n\t\t\t\trotation: me.getPointRotation(point, index),\r\n\t\t\t\tbackgroundColor: me.getPointBackgroundColor(point, index),\r\n\t\t\t\tborderColor: me.getPointBorderColor(point, index),\r\n\t\t\t\tborderWidth: me.getPointBorderWidth(point, index),\r\n\t\t\t\ttension: meta.dataset._model ? meta.dataset._model.tension : 0,\r\n\t\t\t\tsteppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false,\r\n\t\t\t\t// Tooltip\r\n\t\t\t\thitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius)\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tcalculatePointY: function(value, index, datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\t\tvar sumPos = 0;\r\n\t\t\tvar sumNeg = 0;\r\n\t\t\tvar i, ds, dsMeta;\r\n\r\n\t\t\tif (yScale.options.stacked) {\r\n\t\t\t\tfor (i = 0; i < datasetIndex; i++) {\r\n\t\t\t\t\tds = chart.data.datasets[i];\r\n\t\t\t\t\tdsMeta = chart.getDatasetMeta(i);\r\n\t\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) {\r\n\t\t\t\t\t\tvar stackedRightValue = Number(yScale.getRightValue(ds.data[index]));\r\n\t\t\t\t\t\tif (stackedRightValue < 0) {\r\n\t\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tsumPos += stackedRightValue || 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar rightValue = Number(yScale.getRightValue(value));\r\n\t\t\t\tif (rightValue < 0) {\r\n\t\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\r\n\t\t\t\t}\r\n\t\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\r\n\t\t\t}\r\n\r\n\t\t\treturn yScale.getPixelForValue(value);\r\n\t\t},\r\n\r\n\t\tupdateBezierControlPoints: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar area = me.chart.chartArea;\r\n\t\t\tvar points = (meta.data || []);\r\n\t\t\tvar i, ilen, point, model, controlPoints;\r\n\r\n\t\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\t\tif (meta.dataset._model.spanGaps) {\r\n\t\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\t\treturn !pt._model.skip;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t\t}\r\n\r\n\t\t\tif (meta.dataset._model.cubicInterpolationMode === 'monotone') {\r\n\t\t\t\thelpers.splineCurveMonotone(points);\r\n\t\t\t} else {\r\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\t\tpoint = points[i];\r\n\t\t\t\t\tmodel = point._model;\r\n\t\t\t\t\tcontrolPoints = helpers.splineCurve(\r\n\t\t\t\t\t\thelpers.previousItem(points, i)._model,\r\n\t\t\t\t\t\tmodel,\r\n\t\t\t\t\t\thelpers.nextItem(points, i)._model,\r\n\t\t\t\t\t\tmeta.dataset._model.tension\r\n\t\t\t\t\t);\r\n\t\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\r\n\t\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\r\n\t\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\r\n\t\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (me.chart.options.elements.line.capBezierPoints) {\r\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\r\n\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\r\n\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\r\n\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tdraw: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar points = meta.data || [];\r\n\t\t\tvar area = chart.chartArea;\r\n\t\t\tvar ilen = points.length;\r\n\t\t\tvar halfBorderWidth;\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\tif (lineEnabled(me.getDataset(), chart.options)) {\r\n\t\t\t\thalfBorderWidth = (meta.dataset._model.borderWidth || 0) / 2;\r\n\r\n\t\t\t\thelpers.canvas.clipArea(chart.ctx, {\r\n\t\t\t\t\tleft: area.left,\r\n\t\t\t\t\tright: area.right,\r\n\t\t\t\t\ttop: area.top - halfBorderWidth,\r\n\t\t\t\t\tbottom: area.bottom + halfBorderWidth\r\n\t\t\t\t});\r\n\r\n\t\t\t\tmeta.dataset.draw();\r\n\r\n\t\t\t\thelpers.canvas.unclipArea(chart.ctx);\r\n\t\t\t}\r\n\r\n\t\t\t// Draw the points\r\n\t\t\tfor (; i < ilen; ++i) {\r\n\t\t\t\tpoints[i].draw(area);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tsetHoverStyle: function(element) {\r\n\t\t\t// Point\r\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\r\n\t\t\tvar index = element._index;\r\n\t\t\tvar custom = element.custom || {};\r\n\t\t\tvar model = element._model;\r\n\r\n\t\t\telement.$previousStyle = {\r\n\t\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\t\tborderColor: model.borderColor,\r\n\t\t\t\tborderWidth: model.borderWidth,\r\n\t\t\t\tradius: model.radius\r\n\t\t\t};\r\n\r\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\r\n\t\t\tmodel.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\r\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\r\n\t\t\tmodel.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\r\n\t\t},\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],19:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('polarArea', {\r\n\tscale: {\r\n\t\ttype: 'radialLinear',\r\n\t\tangleLines: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tgridLines: {\r\n\t\t\tcircular: true\r\n\t\t},\r\n\t\tpointLabels: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tticks: {\r\n\t\t\tbeginAtZero: true\r\n\t\t}\r\n\t},\r\n\r\n\t// Boolean - Whether to animate the rotation of the chart\r\n\tanimation: {\r\n\t\tanimateRotate: true,\r\n\t\tanimateScale: true\r\n\t},\r\n\r\n\tstartAngle: -0.5 * Math.PI,\r\n\tlegendCallback: function(chart) {\r\n\t\tvar text = [];\r\n\t\ttext.push('
    ');\r\n\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\r\n\t\t\t\ttext.push('
  • ');\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\ttext.push(labels[i]);\r\n\t\t\t\t}\r\n\t\t\t\ttext.push('
  • ');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttext.push('
');\r\n\t\treturn text.join('');\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar ds = data.datasets[0];\r\n\t\t\t\t\t\tvar arc = meta.data[i];\r\n\t\t\t\t\t\tvar custom = arc.custom || {};\r\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\r\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\r\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\r\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\r\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: fill,\r\n\t\t\t\t\t\t\tstrokeStyle: stroke,\r\n\t\t\t\t\t\t\tlineWidth: bw,\r\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.controllers.polarArea = Chart.DatasetController.extend({\r\n\r\n\t\tdataElementType: elements.Arc,\r\n\r\n\t\tlinkScales: helpers.noop,\r\n\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar start = me.chart.options.startAngle || 0;\r\n\t\t\tvar starts = me._starts = [];\r\n\t\t\tvar angles = me._angles = [];\r\n\t\t\tvar i, ilen, angle;\r\n\r\n\t\t\tme._updateRadius();\r\n\r\n\t\t\tmeta.count = me.countVisibleElements();\r\n\r\n\t\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\r\n\t\t\t\tstarts[i] = start;\r\n\t\t\t\tangle = me._computeAngle(i);\r\n\t\t\t\tangles[i] = angle;\r\n\t\t\t\tstart += angle;\r\n\t\t\t}\r\n\r\n\t\t\thelpers.each(meta.data, function(arc, index) {\r\n\t\t\t\tme.updateElement(arc, index, reset);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\t_updateRadius: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar chartArea = chart.chartArea;\r\n\t\t\tvar opts = chart.options;\r\n\t\t\tvar arcOpts = opts.elements.arc;\r\n\t\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\r\n\r\n\t\t\tchart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0);\r\n\t\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\r\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\r\n\r\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\r\n\t\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\r\n\t\t},\r\n\r\n\t\tupdateElement: function(arc, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar opts = chart.options;\r\n\t\t\tvar animationOpts = opts.animation;\r\n\t\t\tvar scale = chart.scale;\r\n\t\t\tvar labels = chart.data.labels;\r\n\r\n\t\t\tvar centerX = scale.xCenter;\r\n\t\t\tvar centerY = scale.yCenter;\r\n\r\n\t\t\t// var negHalfPI = -0.5 * Math.PI;\r\n\t\t\tvar datasetStartAngle = opts.startAngle;\r\n\t\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\t\tvar startAngle = me._starts[index];\r\n\t\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\r\n\r\n\t\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\r\n\t\t\thelpers.extend(arc, {\r\n\t\t\t\t// Utility\r\n\t\t\t\t_datasetIndex: me.index,\r\n\t\t\t\t_index: index,\r\n\t\t\t\t_scale: scale,\r\n\r\n\t\t\t\t// Desired view properties\r\n\t\t\t\t_model: {\r\n\t\t\t\t\tx: centerX,\r\n\t\t\t\t\ty: centerY,\r\n\t\t\t\t\tinnerRadius: 0,\r\n\t\t\t\t\touterRadius: reset ? resetRadius : distance,\r\n\t\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\r\n\t\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\r\n\t\t\t\t\tlabel: helpers.valueAtIndexOrDefault(labels, index, labels[index])\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Apply border and fill style\r\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\r\n\t\t\tvar custom = arc.custom || {};\r\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\r\n\t\t\tvar model = arc._model;\r\n\r\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\r\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\r\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\r\n\r\n\t\t\tarc.pivot();\r\n\t\t},\r\n\r\n\t\tcountVisibleElements: function() {\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar meta = this.getMeta();\r\n\t\t\tvar count = 0;\r\n\r\n\t\t\thelpers.each(meta.data, function(element, index) {\r\n\t\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\r\n\t\t\t\t\tcount++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn count;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\t_computeAngle: function(index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar count = this.getMeta().count;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar meta = me.getMeta();\r\n\r\n\t\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\t// Scriptable options\r\n\t\t\tvar context = {\r\n\t\t\t\tchart: me.chart,\r\n\t\t\t\tdataIndex: index,\r\n\t\t\t\tdataset: dataset,\r\n\t\t\t\tdatasetIndex: me.index\r\n\t\t\t};\r\n\r\n\t\t\treturn helpers.options.resolve([\r\n\t\t\t\tme.chart.options.elements.arc.angle,\r\n\t\t\t\t(2 * Math.PI) / count\r\n\t\t\t], context, index);\r\n\t\t}\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],20:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('radar', {\r\n\tscale: {\r\n\t\ttype: 'radialLinear'\r\n\t},\r\n\telements: {\r\n\t\tline: {\r\n\t\t\ttension: 0 // no bezier in radar\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.controllers.radar = Chart.DatasetController.extend({\r\n\r\n\t\tdatasetElementType: elements.Line,\r\n\r\n\t\tdataElementType: elements.Point,\r\n\r\n\t\tlinkScales: helpers.noop,\r\n\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar line = meta.dataset;\r\n\t\t\tvar points = meta.data;\r\n\t\t\tvar custom = line.custom || {};\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar lineElementOptions = me.chart.options.elements.line;\r\n\t\t\tvar scale = me.chart.scale;\r\n\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\r\n\t\t\t\tdataset.lineTension = dataset.tension;\r\n\t\t\t}\r\n\r\n\t\t\thelpers.extend(meta.dataset, {\r\n\t\t\t\t// Utility\r\n\t\t\t\t_datasetIndex: me.index,\r\n\t\t\t\t_scale: scale,\r\n\t\t\t\t// Data\r\n\t\t\t\t_children: points,\r\n\t\t\t\t_loop: true,\r\n\t\t\t\t// Model\r\n\t\t\t\t_model: {\r\n\t\t\t\t\t// Appearance\r\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\r\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\r\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\r\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\r\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\r\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\r\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\r\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\r\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tmeta.dataset.pivot();\r\n\r\n\t\t\t// Update Points\r\n\t\t\thelpers.each(points, function(point, index) {\r\n\t\t\t\tme.updateElement(point, index, reset);\r\n\t\t\t}, me);\r\n\r\n\t\t\t// Update bezier control points\r\n\t\t\tme.updateBezierControlPoints();\r\n\t\t},\r\n\t\tupdateElement: function(point, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar custom = point.custom || {};\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar scale = me.chart.scale;\r\n\t\t\tvar pointElementOptions = me.chart.options.elements.point;\r\n\t\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\r\n\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\r\n\t\t\t\tdataset.pointRadius = dataset.radius;\r\n\t\t\t}\r\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\r\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\r\n\t\t\t}\r\n\r\n\t\t\thelpers.extend(point, {\r\n\t\t\t\t// Utility\r\n\t\t\t\t_datasetIndex: me.index,\r\n\t\t\t\t_index: index,\r\n\t\t\t\t_scale: scale,\r\n\r\n\t\t\t\t// Desired view properties\r\n\t\t\t\t_model: {\r\n\t\t\t\t\tx: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales\r\n\t\t\t\t\ty: reset ? scale.yCenter : pointPosition.y,\r\n\r\n\t\t\t\t\t// Appearance\r\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension),\r\n\t\t\t\t\tradius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius),\r\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor),\r\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor),\r\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth),\r\n\t\t\t\t\tpointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle),\r\n\t\t\t\t\trotation: custom.rotation ? custom.rotation : helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointElementOptions.rotation),\r\n\r\n\t\t\t\t\t// Tooltip\r\n\t\t\t\t\thitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius)\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tpoint._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y));\r\n\t\t},\r\n\t\tupdateBezierControlPoints: function() {\r\n\t\t\tvar chartArea = this.chart.chartArea;\r\n\t\t\tvar meta = this.getMeta();\r\n\r\n\t\t\thelpers.each(meta.data, function(point, index) {\r\n\t\t\t\tvar model = point._model;\r\n\t\t\t\tvar controlPoints = helpers.splineCurve(\r\n\t\t\t\t\thelpers.previousItem(meta.data, index, true)._model,\r\n\t\t\t\t\tmodel,\r\n\t\t\t\t\thelpers.nextItem(meta.data, index, true)._model,\r\n\t\t\t\t\tmodel.tension\r\n\t\t\t\t);\r\n\r\n\t\t\t\t// Prevent the bezier going outside of the bounds of the graph\r\n\t\t\t\tmodel.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left);\r\n\t\t\t\tmodel.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top);\r\n\r\n\t\t\t\tmodel.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left);\r\n\t\t\t\tmodel.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top);\r\n\r\n\t\t\t\t// Now pivot the point for animation\r\n\t\t\t\tpoint.pivot();\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tsetHoverStyle: function(point) {\r\n\t\t\t// Point\r\n\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\r\n\t\t\tvar custom = point.custom || {};\r\n\t\t\tvar index = point._index;\r\n\t\t\tvar model = point._model;\r\n\r\n\t\t\tpoint.$previousStyle = {\r\n\t\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\t\tborderColor: model.borderColor,\r\n\t\t\t\tborderWidth: model.borderWidth,\r\n\t\t\t\tradius: model.radius\r\n\t\t\t};\r\n\r\n\t\t\tmodel.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\r\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\r\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\r\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\r\n\t\t},\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],21:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\n\r\ndefaults._set('scatter', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\tid: 'x-axis-1', // need an ID so datasets can reference the scale\r\n\t\t\ttype: 'linear', // scatter should not use a category axis\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\tid: 'y-axis-1',\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left'\r\n\t\t}]\r\n\t},\r\n\r\n\tshowLines: false,\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn ''; // doesn't make sense for scatter since data are formatted as a point\r\n\t\t\t},\r\n\t\t\tlabel: function(item) {\r\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\t// Scatter charts use line controllers\r\n\tChart.controllers.scatter = Chart.controllers.line;\r\n\r\n};\r\n\r\n},{\"26\":26}],22:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar Element = require(27);\r\n\r\nvar exports = module.exports = Element.extend({\r\n\tchart: null, // the animation associated chart instance\r\n\tcurrentStep: 0, // the current animation step\r\n\tnumSteps: 60, // default number of steps\r\n\teasing: '', // the easing to use for this animation\r\n\trender: null, // render function used by the animation service\r\n\r\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\r\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\r\n});\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation instead\r\n * @prop Chart.Animation#animationObject\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports.prototype, 'animationObject', {\r\n\tget: function() {\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation#chart instead\r\n * @prop Chart.Animation#chartInstance\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports.prototype, 'chartInstance', {\r\n\tget: function() {\r\n\t\treturn this.chart;\r\n\t},\r\n\tset: function(value) {\r\n\t\tthis.chart = value;\r\n\t}\r\n});\r\n\r\n},{\"27\":27}],23:[function(require,module,exports){\r\n/* global window: false */\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('global', {\r\n\tanimation: {\r\n\t\tduration: 1000,\r\n\t\teasing: 'easeOutQuart',\r\n\t\tonProgress: helpers.noop,\r\n\t\tonComplete: helpers.noop\r\n\t}\r\n});\r\n\r\nmodule.exports = {\r\n\tframeDuration: 17,\r\n\tanimations: [],\r\n\tdropFrames: 0,\r\n\trequest: null,\r\n\r\n\t/**\r\n\t * @param {Chart} chart - The chart to animate.\r\n\t * @param {Chart.Animation} animation - The animation that we will animate.\r\n\t * @param {Number} duration - The animation duration in ms.\r\n\t * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\r\n\t */\r\n\taddAnimation: function(chart, animation, duration, lazy) {\r\n\t\tvar animations = this.animations;\r\n\t\tvar i, ilen;\r\n\r\n\t\tanimation.chart = chart;\r\n\r\n\t\tif (!lazy) {\r\n\t\t\tchart.animating = true;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\r\n\t\t\tif (animations[i].chart === chart) {\r\n\t\t\t\tanimations[i] = animation;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tanimations.push(animation);\r\n\r\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\r\n\t\tif (animations.length === 1) {\r\n\t\t\tthis.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\tcancelAnimation: function(chart) {\r\n\t\tvar index = helpers.findIndex(this.animations, function(animation) {\r\n\t\t\treturn animation.chart === chart;\r\n\t\t});\r\n\r\n\t\tif (index !== -1) {\r\n\t\t\tthis.animations.splice(index, 1);\r\n\t\t\tchart.animating = false;\r\n\t\t}\r\n\t},\r\n\r\n\trequestAnimationFrame: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.request === null) {\r\n\t\t\t// Skip animation frame requests until the active one is executed.\r\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\r\n\t\t\t// and 'mouseout' events will trigger multiple renders.\r\n\t\t\tme.request = helpers.requestAnimFrame.call(window, function() {\r\n\t\t\t\tme.request = null;\r\n\t\t\t\tme.startDigest();\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tstartDigest: function() {\r\n\t\tvar me = this;\r\n\t\tvar startTime = Date.now();\r\n\t\tvar framesToDrop = 0;\r\n\r\n\t\tif (me.dropFrames > 1) {\r\n\t\t\tframesToDrop = Math.floor(me.dropFrames);\r\n\t\t\tme.dropFrames = me.dropFrames % 1;\r\n\t\t}\r\n\r\n\t\tme.advance(1 + framesToDrop);\r\n\r\n\t\tvar endTime = Date.now();\r\n\r\n\t\tme.dropFrames += (endTime - startTime) / me.frameDuration;\r\n\r\n\t\t// Do we have more stuff to animate?\r\n\t\tif (me.animations.length > 0) {\r\n\t\t\tme.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tadvance: function(count) {\r\n\t\tvar animations = this.animations;\r\n\t\tvar animation, chart;\r\n\t\tvar i = 0;\r\n\r\n\t\twhile (i < animations.length) {\r\n\t\t\tanimation = animations[i];\r\n\t\t\tchart = animation.chart;\r\n\r\n\t\t\tanimation.currentStep = (animation.currentStep || 0) + count;\r\n\t\t\tanimation.currentStep = Math.min(animation.currentStep, animation.numSteps);\r\n\r\n\t\t\thelpers.callback(animation.render, [chart, animation], chart);\r\n\t\t\thelpers.callback(animation.onAnimationProgress, [animation], chart);\r\n\r\n\t\t\tif (animation.currentStep >= animation.numSteps) {\r\n\t\t\t\thelpers.callback(animation.onAnimationComplete, [animation], chart);\r\n\t\t\t\tchart.animating = false;\r\n\t\t\t\tanimations.splice(i, 1);\r\n\t\t\t} else {\r\n\t\t\t\t++i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"26\":26,\"46\":46}],24:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar Animation = require(22);\r\nvar animations = require(23);\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar Interaction = require(29);\r\nvar layouts = require(31);\r\nvar platform = require(49);\r\nvar plugins = require(32);\r\nvar scaleService = require(34);\r\nvar Tooltip = require(36);\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\t// Create a dictionary of chart types, to allow for extension of existing types\r\n\tChart.types = {};\r\n\r\n\t// Store a reference to each instance - allowing us to globally resize chart instances on window resize.\r\n\t// Destroy method on the chart will remove the instance of the chart from this reference.\r\n\tChart.instances = {};\r\n\r\n\t// Controllers available for dataset visualization eg. bar, line, slice, etc.\r\n\tChart.controllers = {};\r\n\r\n\t/**\r\n\t * Initializes the given config with global and chart default values.\r\n\t */\r\n\tfunction initConfig(config) {\r\n\t\tconfig = config || {};\r\n\r\n\t\t// Do NOT use configMerge() for the data object because this method merges arrays\r\n\t\t// and so would change references to labels and datasets, preventing data updates.\r\n\t\tvar data = config.data = config.data || {};\r\n\t\tdata.datasets = data.datasets || [];\r\n\t\tdata.labels = data.labels || [];\r\n\r\n\t\tconfig.options = helpers.configMerge(\r\n\t\t\tdefaults.global,\r\n\t\t\tdefaults[config.type],\r\n\t\t\tconfig.options || {});\r\n\r\n\t\treturn config;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the config of the chart\r\n\t * @param chart {Chart} chart to update the options for\r\n\t */\r\n\tfunction updateConfig(chart) {\r\n\t\tvar newOptions = chart.options;\r\n\r\n\t\thelpers.each(chart.scales, function(scale) {\r\n\t\t\tlayouts.removeBox(chart, scale);\r\n\t\t});\r\n\r\n\t\tnewOptions = helpers.configMerge(\r\n\t\t\tChart.defaults.global,\r\n\t\t\tChart.defaults[chart.config.type],\r\n\t\t\tnewOptions);\r\n\r\n\t\tchart.options = chart.config.options = newOptions;\r\n\t\tchart.ensureScalesHaveIDs();\r\n\t\tchart.buildOrUpdateScales();\r\n\t\t// Tooltip\r\n\t\tchart.tooltip._options = newOptions.tooltips;\r\n\t\tchart.tooltip.initialize();\r\n\t}\r\n\r\n\tfunction positionIsHorizontal(position) {\r\n\t\treturn position === 'top' || position === 'bottom';\r\n\t}\r\n\r\n\thelpers.extend(Chart.prototype, /** @lends Chart */ {\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tconstruct: function(item, config) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tconfig = initConfig(config);\r\n\r\n\t\t\tvar context = platform.acquireContext(item, config);\r\n\t\t\tvar canvas = context && context.canvas;\r\n\t\t\tvar height = canvas && canvas.height;\r\n\t\t\tvar width = canvas && canvas.width;\r\n\r\n\t\t\tme.id = helpers.uid();\r\n\t\t\tme.ctx = context;\r\n\t\t\tme.canvas = canvas;\r\n\t\t\tme.config = config;\r\n\t\t\tme.width = width;\r\n\t\t\tme.height = height;\r\n\t\t\tme.aspectRatio = height ? width / height : null;\r\n\t\t\tme.options = config.options;\r\n\t\t\tme._bufferedRender = false;\r\n\r\n\t\t\t/**\r\n\t\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\r\n\t\t\t * the \"instance\" still need to be defined since it might be called from plugins.\r\n\t\t\t * @prop Chart#chart\r\n\t\t\t * @deprecated since version 2.6.0\r\n\t\t\t * @todo remove at version 3\r\n\t\t\t * @private\r\n\t\t\t */\r\n\t\t\tme.chart = me;\r\n\t\t\tme.controller = me; // chart.chart.controller #inception\r\n\r\n\t\t\t// Add the chart instance to the global namespace\r\n\t\t\tChart.instances[me.id] = me;\r\n\r\n\t\t\t// Define alias to the config data: `chart.data === chart.config.data`\r\n\t\t\tObject.defineProperty(me, 'data', {\r\n\t\t\t\tget: function() {\r\n\t\t\t\t\treturn me.config.data;\r\n\t\t\t\t},\r\n\t\t\t\tset: function(value) {\r\n\t\t\t\t\tme.config.data = value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (!context || !canvas) {\r\n\t\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\r\n\t\t\t\t// the chart initialization but after setting basic chart / controller properties that\r\n\t\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\r\n\t\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\r\n\t\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tme.initialize();\r\n\t\t\tme.update();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tinitialize: function() {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\t// Before init plugin notification\r\n\t\t\tplugins.notify(me, 'beforeInit');\r\n\r\n\t\t\thelpers.retinaScale(me, me.options.devicePixelRatio);\r\n\r\n\t\t\tme.bindEvents();\r\n\r\n\t\t\tif (me.options.responsive) {\r\n\t\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\r\n\t\t\t\tme.resize(true);\r\n\t\t\t}\r\n\r\n\t\t\t// Make sure scales have IDs and are built before we build any controllers.\r\n\t\t\tme.ensureScalesHaveIDs();\r\n\t\t\tme.buildOrUpdateScales();\r\n\t\t\tme.initToolTip();\r\n\r\n\t\t\t// After init plugin notification\r\n\t\t\tplugins.notify(me, 'afterInit');\r\n\r\n\t\t\treturn me;\r\n\t\t},\r\n\r\n\t\tclear: function() {\r\n\t\t\thelpers.canvas.clear(this);\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\tstop: function() {\r\n\t\t\t// Stops any current animation loop occurring\r\n\t\t\tanimations.cancelAnimation(this);\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\tresize: function(silent) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = me.options;\r\n\t\t\tvar canvas = me.canvas;\r\n\t\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\r\n\r\n\t\t\t// the canvas render width and height will be casted to integers so make sure that\r\n\t\t\t// the canvas display style uses the same integer values to avoid blurring effect.\r\n\r\n\t\t\t// Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\r\n\t\t\tvar newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas)));\r\n\t\t\tvar newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas)));\r\n\r\n\t\t\tif (me.width === newWidth && me.height === newHeight) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tcanvas.width = me.width = newWidth;\r\n\t\t\tcanvas.height = me.height = newHeight;\r\n\t\t\tcanvas.style.width = newWidth + 'px';\r\n\t\t\tcanvas.style.height = newHeight + 'px';\r\n\r\n\t\t\thelpers.retinaScale(me, options.devicePixelRatio);\r\n\r\n\t\t\tif (!silent) {\r\n\t\t\t\t// Notify any plugins about the resize\r\n\t\t\t\tvar newSize = {width: newWidth, height: newHeight};\r\n\t\t\t\tplugins.notify(me, 'resize', [newSize]);\r\n\r\n\t\t\t\t// Notify of resize\r\n\t\t\t\tif (me.options.onResize) {\r\n\t\t\t\t\tme.options.onResize(me, newSize);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tme.stop();\r\n\t\t\t\tme.update({\r\n\t\t\t\t\tduration: me.options.responsiveAnimationDuration\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tensureScalesHaveIDs: function() {\r\n\t\t\tvar options = this.options;\r\n\t\t\tvar scalesOptions = options.scales || {};\r\n\t\t\tvar scaleOptions = options.scale;\r\n\r\n\t\t\thelpers.each(scalesOptions.xAxes, function(xAxisOptions, index) {\r\n\t\t\t\txAxisOptions.id = xAxisOptions.id || ('x-axis-' + index);\r\n\t\t\t});\r\n\r\n\t\t\thelpers.each(scalesOptions.yAxes, function(yAxisOptions, index) {\r\n\t\t\t\tyAxisOptions.id = yAxisOptions.id || ('y-axis-' + index);\r\n\t\t\t});\r\n\r\n\t\t\tif (scaleOptions) {\r\n\t\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Builds a map of scale ID to scale object for future lookup.\r\n\t\t */\r\n\t\tbuildOrUpdateScales: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = me.options;\r\n\t\t\tvar scales = me.scales || {};\r\n\t\t\tvar items = [];\r\n\t\t\tvar updated = Object.keys(scales).reduce(function(obj, id) {\r\n\t\t\t\tobj[id] = false;\r\n\t\t\t\treturn obj;\r\n\t\t\t}, {});\r\n\r\n\t\t\tif (options.scales) {\r\n\t\t\t\titems = items.concat(\r\n\t\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\r\n\t\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\r\n\t\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif (options.scale) {\r\n\t\t\t\titems.push({\r\n\t\t\t\t\toptions: options.scale,\r\n\t\t\t\t\tdtype: 'radialLinear',\r\n\t\t\t\t\tisDefault: true,\r\n\t\t\t\t\tdposition: 'chartArea'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\thelpers.each(items, function(item) {\r\n\t\t\t\tvar scaleOptions = item.options;\r\n\t\t\t\tvar id = scaleOptions.id;\r\n\t\t\t\tvar scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype);\r\n\r\n\t\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\r\n\t\t\t\t\tscaleOptions.position = item.dposition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tupdated[id] = true;\r\n\t\t\t\tvar scale = null;\r\n\t\t\t\tif (id in scales && scales[id].type === scaleType) {\r\n\t\t\t\t\tscale = scales[id];\r\n\t\t\t\t\tscale.options = scaleOptions;\r\n\t\t\t\t\tscale.ctx = me.ctx;\r\n\t\t\t\t\tscale.chart = me;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar scaleClass = scaleService.getScaleConstructor(scaleType);\r\n\t\t\t\t\tif (!scaleClass) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscale = new scaleClass({\r\n\t\t\t\t\t\tid: id,\r\n\t\t\t\t\t\ttype: scaleType,\r\n\t\t\t\t\t\toptions: scaleOptions,\r\n\t\t\t\t\t\tctx: me.ctx,\r\n\t\t\t\t\t\tchart: me\r\n\t\t\t\t\t});\r\n\t\t\t\t\tscales[scale.id] = scale;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscale.mergeTicksOptions();\r\n\r\n\t\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\r\n\t\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\r\n\t\t\t\t// make the logic easier and remove some useless? custom code.\r\n\t\t\t\tif (item.isDefault) {\r\n\t\t\t\t\tme.scale = scale;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t// clear up discarded scales\r\n\t\t\thelpers.each(updated, function(hasUpdated, id) {\r\n\t\t\t\tif (!hasUpdated) {\r\n\t\t\t\t\tdelete scales[id];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tme.scales = scales;\r\n\r\n\t\t\tscaleService.addScalesToLayout(this);\r\n\t\t},\r\n\r\n\t\tbuildOrUpdateControllers: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar types = [];\r\n\t\t\tvar newControllers = [];\r\n\r\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\r\n\t\t\t\tvar type = dataset.type || me.config.type;\r\n\r\n\t\t\t\tif (meta.type && meta.type !== type) {\r\n\t\t\t\t\tme.destroyDatasetMeta(datasetIndex);\r\n\t\t\t\t\tmeta = me.getDatasetMeta(datasetIndex);\r\n\t\t\t\t}\r\n\t\t\t\tmeta.type = type;\r\n\r\n\t\t\t\ttypes.push(meta.type);\r\n\r\n\t\t\t\tif (meta.controller) {\r\n\t\t\t\t\tmeta.controller.updateIndex(datasetIndex);\r\n\t\t\t\t\tmeta.controller.linkScales();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar ControllerClass = Chart.controllers[meta.type];\r\n\t\t\t\t\tif (ControllerClass === undefined) {\r\n\t\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tmeta.controller = new ControllerClass(me, datasetIndex);\r\n\t\t\t\t\tnewControllers.push(meta.controller);\r\n\t\t\t\t}\r\n\t\t\t}, me);\r\n\r\n\t\t\treturn newControllers;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Reset the elements of all datasets\r\n\t\t * @private\r\n\t\t */\r\n\t\tresetElements: function() {\r\n\t\t\tvar me = this;\r\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\r\n\t\t\t}, me);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t* Resets the chart back to it's state before the initial animation\r\n\t\t*/\r\n\t\treset: function() {\r\n\t\t\tthis.resetElements();\r\n\t\t\tthis.tooltip.initialize();\r\n\t\t},\r\n\r\n\t\tupdate: function(config) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (!config || typeof config !== 'object') {\r\n\t\t\t\t// backwards compatibility\r\n\t\t\t\tconfig = {\r\n\t\t\t\t\tduration: config,\r\n\t\t\t\t\tlazy: arguments[1]\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tupdateConfig(me);\r\n\r\n\t\t\t// plugins options references might have change, let's invalidate the cache\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\r\n\t\t\tplugins._invalidate(me);\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeUpdate') === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// In case the entire data object changed\r\n\t\t\tme.tooltip._data = me.data;\r\n\r\n\t\t\t// Make sure dataset controllers are updated and new controllers are reset\r\n\t\t\tvar newControllers = me.buildOrUpdateControllers();\r\n\r\n\t\t\t// Make sure all dataset controllers have correct meta data counts\r\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();\r\n\t\t\t}, me);\r\n\r\n\t\t\tme.updateLayout();\r\n\r\n\t\t\t// Can only reset the new controllers after the scales have been updated\r\n\t\t\tif (me.options.animation && me.options.animation.duration) {\r\n\t\t\t\thelpers.each(newControllers, function(controller) {\r\n\t\t\t\t\tcontroller.reset();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tme.updateDatasets();\r\n\r\n\t\t\t// Need to reset tooltip in case it is displayed with elements that are removed\r\n\t\t\t// after update.\r\n\t\t\tme.tooltip.initialize();\r\n\r\n\t\t\t// Last active contains items that were previously in the tooltip.\r\n\t\t\t// When we reset the tooltip, we need to clear it\r\n\t\t\tme.lastActive = [];\r\n\r\n\t\t\t// Do this before render so that any plugins that need final scale updates can use it\r\n\t\t\tplugins.notify(me, 'afterUpdate');\r\n\r\n\t\t\tif (me._bufferedRender) {\r\n\t\t\t\tme._bufferedRequest = {\r\n\t\t\t\t\tduration: config.duration,\r\n\t\t\t\t\teasing: config.easing,\r\n\t\t\t\t\tlazy: config.lazy\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\tme.render(config);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\r\n\t\t * hook, in which case, plugins will not be called on `afterLayout`.\r\n\t\t * @private\r\n\t\t */\r\n\t\tupdateLayout: function() {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeLayout') === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlayouts.update(this, this.width, this.height);\r\n\r\n\t\t\t/**\r\n\t\t\t * Provided for backward compatibility, use `afterLayout` instead.\r\n\t\t\t * @method IPlugin#afterScaleUpdate\r\n\t\t\t * @deprecated since version 2.5.0\r\n\t\t\t * @todo remove at version 3\r\n\t\t\t * @private\r\n\t\t\t */\r\n\t\t\tplugins.notify(me, 'afterScaleUpdate');\r\n\t\t\tplugins.notify(me, 'afterLayout');\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\r\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\r\n\t\t * @private\r\n\t\t */\r\n\t\tupdateDatasets: function() {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeDatasetsUpdate') === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\r\n\t\t\t\tme.updateDataset(i);\r\n\t\t\t}\r\n\r\n\t\t\tplugins.notify(me, 'afterDatasetsUpdate');\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\r\n\t\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\r\n\t\t * @private\r\n\t\t */\r\n\t\tupdateDataset: function(index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getDatasetMeta(index);\r\n\t\t\tvar args = {\r\n\t\t\t\tmeta: meta,\r\n\t\t\t\tindex: index\r\n\t\t\t};\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tmeta.controller.update();\r\n\r\n\t\t\tplugins.notify(me, 'afterDatasetUpdate', [args]);\r\n\t\t},\r\n\r\n\t\trender: function(config) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (!config || typeof config !== 'object') {\r\n\t\t\t\t// backwards compatibility\r\n\t\t\t\tconfig = {\r\n\t\t\t\t\tduration: config,\r\n\t\t\t\t\tlazy: arguments[1]\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tvar duration = config.duration;\r\n\t\t\tvar lazy = config.lazy;\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeRender') === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar animationOptions = me.options.animation;\r\n\t\t\tvar onComplete = function(animation) {\r\n\t\t\t\tplugins.notify(me, 'afterRender');\r\n\t\t\t\thelpers.callback(animationOptions && animationOptions.onComplete, [animation], me);\r\n\t\t\t};\r\n\r\n\t\t\tif (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) {\r\n\t\t\t\tvar animation = new Animation({\r\n\t\t\t\t\tnumSteps: (duration || animationOptions.duration) / 16.66, // 60 fps\r\n\t\t\t\t\teasing: config.easing || animationOptions.easing,\r\n\r\n\t\t\t\t\trender: function(chart, animationObject) {\r\n\t\t\t\t\t\tvar easingFunction = helpers.easing.effects[animationObject.easing];\r\n\t\t\t\t\t\tvar currentStep = animationObject.currentStep;\r\n\t\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\r\n\r\n\t\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\tonAnimationProgress: animationOptions.onProgress,\r\n\t\t\t\t\tonAnimationComplete: onComplete\r\n\t\t\t\t});\r\n\r\n\t\t\t\tanimations.addAnimation(me, animation, duration, lazy);\r\n\t\t\t} else {\r\n\t\t\t\tme.draw();\r\n\r\n\t\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\r\n\t\t\t\tonComplete(new Animation({numSteps: 0, chart: me}));\r\n\t\t\t}\r\n\r\n\t\t\treturn me;\r\n\t\t},\r\n\r\n\t\tdraw: function(easingValue) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tme.clear();\r\n\r\n\t\t\tif (helpers.isNullOrUndef(easingValue)) {\r\n\t\t\t\teasingValue = 1;\r\n\t\t\t}\r\n\r\n\t\t\tme.transition(easingValue);\r\n\r\n\t\t\tif (me.width <= 0 || me.height <= 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Draw all the scales\r\n\t\t\thelpers.each(me.boxes, function(box) {\r\n\t\t\t\tbox.draw(me.chartArea);\r\n\t\t\t}, me);\r\n\r\n\t\t\tif (me.scale) {\r\n\t\t\t\tme.scale.draw();\r\n\t\t\t}\r\n\r\n\t\t\tme.drawDatasets(easingValue);\r\n\t\t\tme._drawTooltip(easingValue);\r\n\r\n\t\t\tplugins.notify(me, 'afterDraw', [easingValue]);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\ttransition: function(easingValue) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tfor (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tif (me.isDatasetVisible(i)) {\r\n\t\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tme.tooltip.transition(easingValue);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\r\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\r\n\t\t * @private\r\n\t\t */\r\n\t\tdrawDatasets: function(easingValue) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Draw datasets reversed to support proper line stacking\r\n\t\t\tfor (var i = (me.data.datasets || []).length - 1; i >= 0; --i) {\r\n\t\t\t\tif (me.isDatasetVisible(i)) {\r\n\t\t\t\t\tme.drawDataset(i, easingValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tplugins.notify(me, 'afterDatasetsDraw', [easingValue]);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\r\n\t\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\r\n\t\t * @private\r\n\t\t */\r\n\t\tdrawDataset: function(index, easingValue) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getDatasetMeta(index);\r\n\t\t\tvar args = {\r\n\t\t\t\tmeta: meta,\r\n\t\t\t\tindex: index,\r\n\t\t\t\teasingValue: easingValue\r\n\t\t\t};\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tmeta.controller.draw(easingValue);\r\n\r\n\t\t\tplugins.notify(me, 'afterDatasetDraw', [args]);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\r\n\t\t * hook, in which case, plugins will not be called on `afterTooltipDraw`.\r\n\t\t * @private\r\n\t\t */\r\n\t\t_drawTooltip: function(easingValue) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar tooltip = me.tooltip;\r\n\t\t\tvar args = {\r\n\t\t\t\ttooltip: tooltip,\r\n\t\t\t\teasingValue: easingValue\r\n\t\t\t};\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\ttooltip.draw();\r\n\r\n\t\t\tplugins.notify(me, 'afterTooltipDraw', [args]);\r\n\t\t},\r\n\r\n\t\t// Get the single element that was clicked on\r\n\t\t// @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\r\n\t\tgetElementAtEvent: function(e) {\r\n\t\t\treturn Interaction.modes.single(this, e);\r\n\t\t},\r\n\r\n\t\tgetElementsAtEvent: function(e) {\r\n\t\t\treturn Interaction.modes.label(this, e, {intersect: true});\r\n\t\t},\r\n\r\n\t\tgetElementsAtXAxis: function(e) {\r\n\t\t\treturn Interaction.modes['x-axis'](this, e, {intersect: true});\r\n\t\t},\r\n\r\n\t\tgetElementsAtEventForMode: function(e, mode, options) {\r\n\t\t\tvar method = Interaction.modes[mode];\r\n\t\t\tif (typeof method === 'function') {\r\n\t\t\t\treturn method(this, e, options);\r\n\t\t\t}\r\n\r\n\t\t\treturn [];\r\n\t\t},\r\n\r\n\t\tgetDatasetAtEvent: function(e) {\r\n\t\t\treturn Interaction.modes.dataset(this, e, {intersect: true});\r\n\t\t},\r\n\r\n\t\tgetDatasetMeta: function(datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar dataset = me.data.datasets[datasetIndex];\r\n\t\t\tif (!dataset._meta) {\r\n\t\t\t\tdataset._meta = {};\r\n\t\t\t}\r\n\r\n\t\t\tvar meta = dataset._meta[me.id];\r\n\t\t\tif (!meta) {\r\n\t\t\t\tmeta = dataset._meta[me.id] = {\r\n\t\t\t\t\ttype: null,\r\n\t\t\t\t\tdata: [],\r\n\t\t\t\t\tdataset: null,\r\n\t\t\t\t\tcontroller: null,\r\n\t\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\r\n\t\t\t\t\txAxisID: null,\r\n\t\t\t\t\tyAxisID: null\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn meta;\r\n\t\t},\r\n\r\n\t\tgetVisibleDatasetCount: function() {\r\n\t\t\tvar count = 0;\r\n\t\t\tfor (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\r\n\t\t\t\tif (this.isDatasetVisible(i)) {\r\n\t\t\t\t\tcount++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn count;\r\n\t\t},\r\n\r\n\t\tisDatasetVisible: function(datasetIndex) {\r\n\t\t\tvar meta = this.getDatasetMeta(datasetIndex);\r\n\r\n\t\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\r\n\t\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\r\n\t\t\treturn typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\r\n\t\t},\r\n\r\n\t\tgenerateLegend: function() {\r\n\t\t\treturn this.options.legendCallback(this);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tdestroyDatasetMeta: function(datasetIndex) {\r\n\t\t\tvar id = this.id;\r\n\t\t\tvar dataset = this.data.datasets[datasetIndex];\r\n\t\t\tvar meta = dataset._meta && dataset._meta[id];\r\n\r\n\t\t\tif (meta) {\r\n\t\t\t\tmeta.controller.destroy();\r\n\t\t\t\tdelete dataset._meta[id];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tdestroy: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar canvas = me.canvas;\r\n\t\t\tvar i, ilen;\r\n\r\n\t\t\tme.stop();\r\n\r\n\t\t\t// dataset controllers need to cleanup associated data\r\n\t\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\r\n\t\t\t\tme.destroyDatasetMeta(i);\r\n\t\t\t}\r\n\r\n\t\t\tif (canvas) {\r\n\t\t\t\tme.unbindEvents();\r\n\t\t\t\thelpers.canvas.clear(me);\r\n\t\t\t\tplatform.releaseContext(me.ctx);\r\n\t\t\t\tme.canvas = null;\r\n\t\t\t\tme.ctx = null;\r\n\t\t\t}\r\n\r\n\t\t\tplugins.notify(me, 'destroy');\r\n\r\n\t\t\tdelete Chart.instances[me.id];\r\n\t\t},\r\n\r\n\t\ttoBase64Image: function() {\r\n\t\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\r\n\t\t},\r\n\r\n\t\tinitToolTip: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tme.tooltip = new Tooltip({\r\n\t\t\t\t_chart: me,\r\n\t\t\t\t_chartInstance: me, // deprecated, backward compatibility\r\n\t\t\t\t_data: me.data,\r\n\t\t\t\t_options: me.options.tooltips\r\n\t\t\t}, me);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tbindEvents: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar listeners = me._listeners = {};\r\n\t\t\tvar listener = function() {\r\n\t\t\t\tme.eventHandler.apply(me, arguments);\r\n\t\t\t};\r\n\r\n\t\t\thelpers.each(me.options.events, function(type) {\r\n\t\t\t\tplatform.addEventListener(me, type, listener);\r\n\t\t\t\tlisteners[type] = listener;\r\n\t\t\t});\r\n\r\n\t\t\t// Elements used to detect size change should not be injected for non responsive charts.\r\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/2210\r\n\t\t\tif (me.options.responsive) {\r\n\t\t\t\tlistener = function() {\r\n\t\t\t\t\tme.resize();\r\n\t\t\t\t};\r\n\r\n\t\t\t\tplatform.addEventListener(me, 'resize', listener);\r\n\t\t\t\tlisteners.resize = listener;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tunbindEvents: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar listeners = me._listeners;\r\n\t\t\tif (!listeners) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tdelete me._listeners;\r\n\t\t\thelpers.each(listeners, function(listener, type) {\r\n\t\t\t\tplatform.removeEventListener(me, type, listener);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tupdateHoverStyle: function(elements, mode, enabled) {\r\n\t\t\tvar method = enabled ? 'setHoverStyle' : 'removeHoverStyle';\r\n\t\t\tvar element, i, ilen;\r\n\r\n\t\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\r\n\t\t\t\telement = elements[i];\r\n\t\t\t\tif (element) {\r\n\t\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[method](element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\teventHandler: function(e) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar tooltip = me.tooltip;\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeEvent', [e]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Buffer any update calls so that renders do not occur\r\n\t\t\tme._bufferedRender = true;\r\n\t\t\tme._bufferedRequest = null;\r\n\r\n\t\t\tvar changed = me.handleEvent(e);\r\n\t\t\t// for smooth tooltip animations issue #4989\r\n\t\t\t// the tooltip should be the source of change\r\n\t\t\t// Animation check workaround:\r\n\t\t\t// tooltip._start will be null when tooltip isn't animating\r\n\t\t\tif (tooltip) {\r\n\t\t\t\tchanged = tooltip._start\r\n\t\t\t\t\t? tooltip.handleEvent(e)\r\n\t\t\t\t\t: changed | tooltip.handleEvent(e);\r\n\t\t\t}\r\n\r\n\t\t\tplugins.notify(me, 'afterEvent', [e]);\r\n\r\n\t\t\tvar bufferedRequest = me._bufferedRequest;\r\n\t\t\tif (bufferedRequest) {\r\n\t\t\t\t// If we have an update that was triggered, we need to do a normal render\r\n\t\t\t\tme.render(bufferedRequest);\r\n\t\t\t} else if (changed && !me.animating) {\r\n\t\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\r\n\t\t\t\tme.stop();\r\n\r\n\t\t\t\t// We only need to render at this point. Updating will cause scales to be\r\n\t\t\t\t// recomputed generating flicker & using more memory than necessary.\r\n\t\t\t\tme.render({\r\n\t\t\t\t\tduration: me.options.hover.animationDuration,\r\n\t\t\t\t\tlazy: true\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tme._bufferedRender = false;\r\n\t\t\tme._bufferedRequest = null;\r\n\r\n\t\t\treturn me;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Handle an event\r\n\t\t * @private\r\n\t\t * @param {IEvent} event the event to handle\r\n\t\t * @return {Boolean} true if the chart needs to re-render\r\n\t\t */\r\n\t\thandleEvent: function(e) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = me.options || {};\r\n\t\t\tvar hoverOptions = options.hover;\r\n\t\t\tvar changed = false;\r\n\r\n\t\t\tme.lastActive = me.lastActive || [];\r\n\r\n\t\t\t// Find Active Elements for hover and tooltips\r\n\t\t\tif (e.type === 'mouseout') {\r\n\t\t\t\tme.active = [];\r\n\t\t\t} else {\r\n\t\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\r\n\t\t\t}\r\n\r\n\t\t\t// Invoke onHover hook\r\n\t\t\t// Need to call with native event here to not break backwards compatibility\r\n\t\t\thelpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\r\n\r\n\t\t\tif (e.type === 'mouseup' || e.type === 'click') {\r\n\t\t\t\tif (options.onClick) {\r\n\t\t\t\t\t// Use e.native here for backwards compatibility\r\n\t\t\t\t\toptions.onClick.call(me, e.native, me.active);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Remove styling for last active (even if it may still be active)\r\n\t\t\tif (me.lastActive.length) {\r\n\t\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\r\n\t\t\t}\r\n\r\n\t\t\t// Built in hover styling\r\n\t\t\tif (me.active.length && hoverOptions.mode) {\r\n\t\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\r\n\t\t\t}\r\n\r\n\t\t\tchanged = !helpers.arrayEquals(me.active, me.lastActive);\r\n\r\n\t\t\t// Remember Last Actives\r\n\t\t\tme.lastActive = me.active;\r\n\r\n\t\t\treturn changed;\r\n\t\t}\r\n\t});\r\n\r\n\t/**\r\n\t * Provided for backward compatibility, use Chart instead.\r\n\t * @class Chart.Controller\r\n\t * @deprecated since version 2.6.0\r\n\t * @todo remove at version 3\r\n\t * @private\r\n\t */\r\n\tChart.Controller = Chart;\r\n};\r\n\r\n},{\"22\":22,\"23\":23,\"26\":26,\"29\":29,\"31\":31,\"32\":32,\"34\":34,\"36\":36,\"46\":46,\"49\":49}],25:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\r\n\r\n\t/**\r\n\t * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\r\n\t * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\r\n\t * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\r\n\t */\r\n\tfunction listenArrayEvents(array, listener) {\r\n\t\tif (array._chartjs) {\r\n\t\t\tarray._chartjs.listeners.push(listener);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tObject.defineProperty(array, '_chartjs', {\r\n\t\t\tconfigurable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: {\r\n\t\t\t\tlisteners: [listener]\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tarrayEvents.forEach(function(key) {\r\n\t\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\r\n\t\t\tvar base = array[key];\r\n\r\n\t\t\tObject.defineProperty(array, key, {\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tvalue: function() {\r\n\t\t\t\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\t\t\t\tvar res = base.apply(this, args);\r\n\r\n\t\t\t\t\thelpers.each(array._chartjs.listeners, function(object) {\r\n\t\t\t\t\t\tif (typeof object[method] === 'function') {\r\n\t\t\t\t\t\t\tobject[method].apply(object, args);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn res;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Removes the given array event listener and cleanup extra attached properties (such as\r\n\t * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\r\n\t */\r\n\tfunction unlistenArrayEvents(array, listener) {\r\n\t\tvar stub = array._chartjs;\r\n\t\tif (!stub) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar listeners = stub.listeners;\r\n\t\tvar index = listeners.indexOf(listener);\r\n\t\tif (index !== -1) {\r\n\t\t\tlisteners.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif (listeners.length > 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tarrayEvents.forEach(function(key) {\r\n\t\t\tdelete array[key];\r\n\t\t});\r\n\r\n\t\tdelete array._chartjs;\r\n\t}\r\n\r\n\t// Base class for all dataset controllers (line, bar, etc)\r\n\tChart.DatasetController = function(chart, datasetIndex) {\r\n\t\tthis.initialize(chart, datasetIndex);\r\n\t};\r\n\r\n\thelpers.extend(Chart.DatasetController.prototype, {\r\n\r\n\t\t/**\r\n\t\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\r\n\t\t * @type {Chart.core.element}\r\n\t\t */\r\n\t\tdatasetElementType: null,\r\n\r\n\t\t/**\r\n\t\t * Element type used to generate a meta data (e.g. Chart.element.Point).\r\n\t\t * @type {Chart.core.element}\r\n\t\t */\r\n\t\tdataElementType: null,\r\n\r\n\t\tinitialize: function(chart, datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tme.chart = chart;\r\n\t\t\tme.index = datasetIndex;\r\n\t\t\tme.linkScales();\r\n\t\t\tme.addElements();\r\n\t\t},\r\n\r\n\t\tupdateIndex: function(datasetIndex) {\r\n\t\t\tthis.index = datasetIndex;\r\n\t\t},\r\n\r\n\t\tlinkScales: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar dataset = me.getDataset();\r\n\r\n\t\t\tif (meta.xAxisID === null || !(meta.xAxisID in me.chart.scales)) {\r\n\t\t\t\tmeta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id;\r\n\t\t\t}\r\n\t\t\tif (meta.yAxisID === null || !(meta.yAxisID in me.chart.scales)) {\r\n\t\t\t\tmeta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetDataset: function() {\r\n\t\t\treturn this.chart.data.datasets[this.index];\r\n\t\t},\r\n\r\n\t\tgetMeta: function() {\r\n\t\t\treturn this.chart.getDatasetMeta(this.index);\r\n\t\t},\r\n\r\n\t\tgetScaleForId: function(scaleID) {\r\n\t\t\treturn this.chart.scales[scaleID];\r\n\t\t},\r\n\r\n\t\treset: function() {\r\n\t\t\tthis.update(true);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tdestroy: function() {\r\n\t\t\tif (this._data) {\r\n\t\t\t\tunlistenArrayEvents(this._data, this);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tcreateMetaDataset: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar type = me.datasetElementType;\r\n\t\t\treturn type && new type({\r\n\t\t\t\t_chart: me.chart,\r\n\t\t\t\t_datasetIndex: me.index\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tcreateMetaData: function(index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar type = me.dataElementType;\r\n\t\t\treturn type && new type({\r\n\t\t\t\t_chart: me.chart,\r\n\t\t\t\t_datasetIndex: me.index,\r\n\t\t\t\t_index: index\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\taddElements: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar data = me.getDataset().data || [];\r\n\t\t\tvar metaData = meta.data;\r\n\t\t\tvar i, ilen;\r\n\r\n\t\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\r\n\t\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\r\n\t\t\t}\r\n\r\n\t\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\r\n\t\t},\r\n\r\n\t\taddElementAndReset: function(index) {\r\n\t\t\tvar element = this.createMetaData(index);\r\n\t\t\tthis.getMeta().data.splice(index, 0, element);\r\n\t\t\tthis.updateElement(element, index, true);\r\n\t\t},\r\n\r\n\t\tbuildOrUpdateElements: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar data = dataset.data || (dataset.data = []);\r\n\r\n\t\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\r\n\t\t\t// real-time charts), we need to monitor these data modifications and synchronize\r\n\t\t\t// the internal meta data accordingly.\r\n\t\t\tif (me._data !== data) {\r\n\t\t\t\tif (me._data) {\r\n\t\t\t\t\t// This case happens when the user replaced the data array instance.\r\n\t\t\t\t\tunlistenArrayEvents(me._data, me);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlistenArrayEvents(data, me);\r\n\t\t\t\tme._data = data;\r\n\t\t\t}\r\n\r\n\t\t\t// Re-sync meta data in case the user replaced the data array or if we missed\r\n\t\t\t// any updates and so make sure that we handle number of datapoints changing.\r\n\t\t\tme.resyncElements();\r\n\t\t},\r\n\r\n\t\tupdate: helpers.noop,\r\n\r\n\t\ttransition: function(easingValue) {\r\n\t\t\tvar meta = this.getMeta();\r\n\t\t\tvar elements = meta.data || [];\r\n\t\t\tvar ilen = elements.length;\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\tfor (; i < ilen; ++i) {\r\n\t\t\t\telements[i].transition(easingValue);\r\n\t\t\t}\r\n\r\n\t\t\tif (meta.dataset) {\r\n\t\t\t\tmeta.dataset.transition(easingValue);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tdraw: function() {\r\n\t\t\tvar meta = this.getMeta();\r\n\t\t\tvar elements = meta.data || [];\r\n\t\t\tvar ilen = elements.length;\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\tif (meta.dataset) {\r\n\t\t\t\tmeta.dataset.draw();\r\n\t\t\t}\r\n\r\n\t\t\tfor (; i < ilen; ++i) {\r\n\t\t\t\telements[i].draw();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tremoveHoverStyle: function(element) {\r\n\t\t\thelpers.merge(element._model, element.$previousStyle || {});\r\n\t\t\tdelete element.$previousStyle;\r\n\t\t},\r\n\r\n\t\tsetHoverStyle: function(element) {\r\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\r\n\t\t\tvar index = element._index;\r\n\t\t\tvar custom = element.custom || {};\r\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\r\n\t\t\tvar getHoverColor = helpers.getHoverColor;\r\n\t\t\tvar model = element._model;\r\n\r\n\t\t\telement.$previousStyle = {\r\n\t\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\t\tborderColor: model.borderColor,\r\n\t\t\t\tborderWidth: model.borderWidth\r\n\t\t\t};\r\n\r\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor));\r\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor));\r\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tresyncElements: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar data = me.getDataset().data;\r\n\t\t\tvar numMeta = meta.data.length;\r\n\t\t\tvar numData = data.length;\r\n\r\n\t\t\tif (numData < numMeta) {\r\n\t\t\t\tmeta.data.splice(numData, numMeta - numData);\r\n\t\t\t} else if (numData > numMeta) {\r\n\t\t\t\tme.insertElements(numMeta, numData - numMeta);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tinsertElements: function(start, count) {\r\n\t\t\tfor (var i = 0; i < count; ++i) {\r\n\t\t\t\tthis.addElementAndReset(start + i);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tonDataPush: function() {\r\n\t\t\tthis.insertElements(this.getDataset().data.length - 1, arguments.length);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tonDataPop: function() {\r\n\t\t\tthis.getMeta().data.pop();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tonDataShift: function() {\r\n\t\t\tthis.getMeta().data.shift();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tonDataSplice: function(start, count) {\r\n\t\t\tthis.getMeta().data.splice(start, count);\r\n\t\t\tthis.insertElements(start, arguments.length - 2);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tonDataUnshift: function() {\r\n\t\t\tthis.insertElements(0, arguments.length);\r\n\t\t}\r\n\t});\r\n\r\n\tChart.DatasetController.extend = helpers.inherits;\r\n};\r\n\r\n},{\"46\":46}],26:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\nmodule.exports = {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_set: function(scope, values) {\r\n\t\treturn helpers.merge(this[scope] || (this[scope] = {}), values);\r\n\t}\r\n};\r\n\r\n},{\"46\":46}],27:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar color = require(3);\r\nvar helpers = require(46);\r\n\r\nfunction interpolate(start, view, model, ease) {\r\n\tvar keys = Object.keys(model);\r\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\r\n\r\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\tkey = keys[i];\r\n\r\n\t\ttarget = model[key];\r\n\r\n\t\t// if a value is added to the model after pivot() has been called, the view\r\n\t\t// doesn't contain it, so let's initialize the view to the target value.\r\n\t\tif (!view.hasOwnProperty(key)) {\r\n\t\t\tview[key] = target;\r\n\t\t}\r\n\r\n\t\tactual = view[key];\r\n\r\n\t\tif (actual === target || key[0] === '_') {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!start.hasOwnProperty(key)) {\r\n\t\t\tstart[key] = actual;\r\n\t\t}\r\n\r\n\t\torigin = start[key];\r\n\r\n\t\ttype = typeof target;\r\n\r\n\t\tif (type === typeof origin) {\r\n\t\t\tif (type === 'string') {\r\n\t\t\t\tc0 = color(origin);\r\n\t\t\t\tif (c0.valid) {\r\n\t\t\t\t\tc1 = color(target);\r\n\t\t\t\t\tif (c1.valid) {\r\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (type === 'number' && isFinite(origin) && isFinite(target)) {\r\n\t\t\t\tview[key] = origin + (target - origin) * ease;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tview[key] = target;\r\n\t}\r\n}\r\n\r\nvar Element = function(configuration) {\r\n\thelpers.extend(this, configuration);\r\n\tthis.initialize.apply(this, arguments);\r\n};\r\n\r\nhelpers.extend(Element.prototype, {\r\n\r\n\tinitialize: function() {\r\n\t\tthis.hidden = false;\r\n\t},\r\n\r\n\tpivot: function() {\r\n\t\tvar me = this;\r\n\t\tif (!me._view) {\r\n\t\t\tme._view = helpers.clone(me._model);\r\n\t\t}\r\n\t\tme._start = {};\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttransition: function(ease) {\r\n\t\tvar me = this;\r\n\t\tvar model = me._model;\r\n\t\tvar start = me._start;\r\n\t\tvar view = me._view;\r\n\r\n\t\t// No animation -> No Transition\r\n\t\tif (!model || ease === 1) {\r\n\t\t\tme._view = model;\r\n\t\t\tme._start = null;\r\n\t\t\treturn me;\r\n\t\t}\r\n\r\n\t\tif (!view) {\r\n\t\t\tview = me._view = {};\r\n\t\t}\r\n\r\n\t\tif (!start) {\r\n\t\t\tstart = me._start = {};\r\n\t\t}\r\n\r\n\t\tinterpolate(start, view, model, ease);\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\treturn {\r\n\t\t\tx: this._model.x,\r\n\t\t\ty: this._model.y\r\n\t\t};\r\n\t},\r\n\r\n\thasValue: function() {\r\n\t\treturn helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y);\r\n\t}\r\n});\r\n\r\nElement.extend = helpers.inherits;\r\n\r\nmodule.exports = Element;\r\n\r\n},{\"3\":3,\"46\":46}],28:[function(require,module,exports){\r\n/* global window: false */\r\n/* global document: false */\r\n'use strict';\r\n\r\nvar color = require(3);\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar scaleService = require(34);\r\n\r\nmodule.exports = function() {\r\n\r\n\t// -- Basic js utility methods\r\n\r\n\thelpers.configMerge = function(/* objects ... */) {\r\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\r\n\t\t\tmerger: function(key, target, source, options) {\r\n\t\t\t\tvar tval = target[key] || {};\r\n\t\t\t\tvar sval = source[key];\r\n\r\n\t\t\t\tif (key === 'scales') {\r\n\t\t\t\t\t// scale config merging is complex. Add our own function here for that\r\n\t\t\t\t\ttarget[key] = helpers.scaleMerge(tval, sval);\r\n\t\t\t\t} else if (key === 'scale') {\r\n\t\t\t\t\t// used in polar area & radar charts since there is only one scale\r\n\t\t\t\t\ttarget[key] = helpers.merge(tval, [scaleService.getScaleDefaults(sval.type), sval]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\thelpers._merger(key, target, source, options);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\thelpers.scaleMerge = function(/* objects ... */) {\r\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\r\n\t\t\tmerger: function(key, target, source, options) {\r\n\t\t\t\tif (key === 'xAxes' || key === 'yAxes') {\r\n\t\t\t\t\tvar slen = source[key].length;\r\n\t\t\t\t\tvar i, type, scale;\r\n\r\n\t\t\t\t\tif (!target[key]) {\r\n\t\t\t\t\t\ttarget[key] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (i = 0; i < slen; ++i) {\r\n\t\t\t\t\t\tscale = source[key][i];\r\n\t\t\t\t\t\ttype = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear');\r\n\r\n\t\t\t\t\t\tif (i >= target[key].length) {\r\n\t\t\t\t\t\t\ttarget[key].push({});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {\r\n\t\t\t\t\t\t\t// new/untyped scale or type changed: let's apply the new defaults\r\n\t\t\t\t\t\t\t// then merge source scale to correctly overwrite the defaults.\r\n\t\t\t\t\t\t\thelpers.merge(target[key][i], [scaleService.getScaleDefaults(type), scale]);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// scales type are the same\r\n\t\t\t\t\t\t\thelpers.merge(target[key][i], scale);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\thelpers._merger(key, target, source, options);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\thelpers.where = function(collection, filterCallback) {\r\n\t\tif (helpers.isArray(collection) && Array.prototype.filter) {\r\n\t\t\treturn collection.filter(filterCallback);\r\n\t\t}\r\n\t\tvar filtered = [];\r\n\r\n\t\thelpers.each(collection, function(item) {\r\n\t\t\tif (filterCallback(item)) {\r\n\t\t\t\tfiltered.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filtered;\r\n\t};\r\n\thelpers.findIndex = Array.prototype.findIndex ?\r\n\t\tfunction(array, callback, scope) {\r\n\t\t\treturn array.findIndex(callback, scope);\r\n\t\t} :\r\n\t\tfunction(array, callback, scope) {\r\n\t\t\tscope = scope === undefined ? array : scope;\r\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\r\n\t\t\t\tif (callback.call(scope, array[i], i, array)) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn -1;\r\n\t\t};\r\n\thelpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\r\n\t\t// Default to start of the array\r\n\t\tif (helpers.isNullOrUndef(startIndex)) {\r\n\t\t\tstartIndex = -1;\r\n\t\t}\r\n\t\tfor (var i = startIndex + 1; i < arrayToSearch.length; i++) {\r\n\t\t\tvar currentItem = arrayToSearch[i];\r\n\t\t\tif (filterCallback(currentItem)) {\r\n\t\t\t\treturn currentItem;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\thelpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\r\n\t\t// Default to end of the array\r\n\t\tif (helpers.isNullOrUndef(startIndex)) {\r\n\t\t\tstartIndex = arrayToSearch.length;\r\n\t\t}\r\n\t\tfor (var i = startIndex - 1; i >= 0; i--) {\r\n\t\t\tvar currentItem = arrayToSearch[i];\r\n\t\t\tif (filterCallback(currentItem)) {\r\n\t\t\t\treturn currentItem;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// -- Math methods\r\n\thelpers.isNumber = function(n) {\r\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\r\n\t};\r\n\thelpers.almostEquals = function(x, y, epsilon) {\r\n\t\treturn Math.abs(x - y) < epsilon;\r\n\t};\r\n\thelpers.almostWhole = function(x, epsilon) {\r\n\t\tvar rounded = Math.round(x);\r\n\t\treturn (((rounded - epsilon) < x) && ((rounded + epsilon) > x));\r\n\t};\r\n\thelpers.max = function(array) {\r\n\t\treturn array.reduce(function(max, value) {\r\n\t\t\tif (!isNaN(value)) {\r\n\t\t\t\treturn Math.max(max, value);\r\n\t\t\t}\r\n\t\t\treturn max;\r\n\t\t}, Number.NEGATIVE_INFINITY);\r\n\t};\r\n\thelpers.min = function(array) {\r\n\t\treturn array.reduce(function(min, value) {\r\n\t\t\tif (!isNaN(value)) {\r\n\t\t\t\treturn Math.min(min, value);\r\n\t\t\t}\r\n\t\t\treturn min;\r\n\t\t}, Number.POSITIVE_INFINITY);\r\n\t};\r\n\thelpers.sign = Math.sign ?\r\n\t\tfunction(x) {\r\n\t\t\treturn Math.sign(x);\r\n\t\t} :\r\n\t\tfunction(x) {\r\n\t\t\tx = +x; // convert to a number\r\n\t\t\tif (x === 0 || isNaN(x)) {\r\n\t\t\t\treturn x;\r\n\t\t\t}\r\n\t\t\treturn x > 0 ? 1 : -1;\r\n\t\t};\r\n\thelpers.log10 = Math.log10 ?\r\n\t\tfunction(x) {\r\n\t\t\treturn Math.log10(x);\r\n\t\t} :\r\n\t\tfunction(x) {\r\n\t\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\r\n\t\t\t// Check for whole powers of 10,\r\n\t\t\t// which due to floating point rounding error should be corrected.\r\n\t\t\tvar powerOf10 = Math.round(exponent);\r\n\t\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\r\n\r\n\t\t\treturn isPowerOf10 ? powerOf10 : exponent;\r\n\t\t};\r\n\thelpers.toRadians = function(degrees) {\r\n\t\treturn degrees * (Math.PI / 180);\r\n\t};\r\n\thelpers.toDegrees = function(radians) {\r\n\t\treturn radians * (180 / Math.PI);\r\n\t};\r\n\t// Gets the angle from vertical upright to the point about a centre.\r\n\thelpers.getAngleFromPoint = function(centrePoint, anglePoint) {\r\n\t\tvar distanceFromXCenter = anglePoint.x - centrePoint.x;\r\n\t\tvar distanceFromYCenter = anglePoint.y - centrePoint.y;\r\n\t\tvar radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\r\n\r\n\t\tvar angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\r\n\r\n\t\tif (angle < (-0.5 * Math.PI)) {\r\n\t\t\tangle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tangle: angle,\r\n\t\t\tdistance: radialDistanceFromCenter\r\n\t\t};\r\n\t};\r\n\thelpers.distanceBetweenPoints = function(pt1, pt2) {\r\n\t\treturn Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\r\n\t};\r\n\thelpers.aliasPixel = function(pixelWidth) {\r\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\r\n\t};\r\n\thelpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\r\n\t\t// Props to Rob Spencer at scaled innovation for his post on splining between points\r\n\t\t// http://scaledinnovation.com/analytics/splines/aboutSplines.html\r\n\r\n\t\t// This function must also respect \"skipped\" points\r\n\r\n\t\tvar previous = firstPoint.skip ? middlePoint : firstPoint;\r\n\t\tvar current = middlePoint;\r\n\t\tvar next = afterPoint.skip ? middlePoint : afterPoint;\r\n\r\n\t\tvar d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\r\n\t\tvar d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\r\n\r\n\t\tvar s01 = d01 / (d01 + d12);\r\n\t\tvar s12 = d12 / (d01 + d12);\r\n\r\n\t\t// If all points are the same, s01 & s02 will be inf\r\n\t\ts01 = isNaN(s01) ? 0 : s01;\r\n\t\ts12 = isNaN(s12) ? 0 : s12;\r\n\r\n\t\tvar fa = t * s01; // scaling factor for triangle Ta\r\n\t\tvar fb = t * s12;\r\n\r\n\t\treturn {\r\n\t\t\tprevious: {\r\n\t\t\t\tx: current.x - fa * (next.x - previous.x),\r\n\t\t\t\ty: current.y - fa * (next.y - previous.y)\r\n\t\t\t},\r\n\t\t\tnext: {\r\n\t\t\t\tx: current.x + fb * (next.x - previous.x),\r\n\t\t\t\ty: current.y + fb * (next.y - previous.y)\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\thelpers.EPSILON = Number.EPSILON || 1e-14;\r\n\thelpers.splineCurveMonotone = function(points) {\r\n\t\t// This function calculates Bézier control points in a similar way than |splineCurve|,\r\n\t\t// but preserves monotonicity of the provided data and ensures no local extremums are added\r\n\t\t// between the dataset discrete points due to the interpolation.\r\n\t\t// See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\r\n\r\n\t\tvar pointsWithTangents = (points || []).map(function(point) {\r\n\t\t\treturn {\r\n\t\t\t\tmodel: point._model,\r\n\t\t\t\tdeltaK: 0,\r\n\t\t\t\tmK: 0\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t// Calculate slopes (deltaK) and initialize tangents (mK)\r\n\t\tvar pointsLen = pointsWithTangents.length;\r\n\t\tvar i, pointBefore, pointCurrent, pointAfter;\r\n\t\tfor (i = 0; i < pointsLen; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tif (pointCurrent.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\r\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\r\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\r\n\t\t\t\tvar slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);\r\n\r\n\t\t\t\t// In the case of two points that appear at the same x pixel, slopeDeltaX is 0\r\n\t\t\t\tpointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\r\n\t\t\t}\r\n\r\n\t\t\tif (!pointBefore || pointBefore.model.skip) {\r\n\t\t\t\tpointCurrent.mK = pointCurrent.deltaK;\r\n\t\t\t} else if (!pointAfter || pointAfter.model.skip) {\r\n\t\t\t\tpointCurrent.mK = pointBefore.deltaK;\r\n\t\t\t} else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\r\n\t\t\t\tpointCurrent.mK = 0;\r\n\t\t\t} else {\r\n\t\t\t\tpointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Adjust tangents to ensure monotonic properties\r\n\t\tvar alphaK, betaK, tauK, squaredMagnitude;\r\n\t\tfor (i = 0; i < pointsLen - 1; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tpointAfter = pointsWithTangents[i + 1];\r\n\t\t\tif (pointCurrent.model.skip || pointAfter.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\r\n\t\t\t\tpointCurrent.mK = pointAfter.mK = 0;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\talphaK = pointCurrent.mK / pointCurrent.deltaK;\r\n\t\t\tbetaK = pointAfter.mK / pointCurrent.deltaK;\r\n\t\t\tsquaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\r\n\t\t\tif (squaredMagnitude <= 9) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\ttauK = 3 / Math.sqrt(squaredMagnitude);\r\n\t\t\tpointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\r\n\t\t\tpointAfter.mK = betaK * tauK * pointCurrent.deltaK;\r\n\t\t}\r\n\r\n\t\t// Compute control points\r\n\t\tvar deltaX;\r\n\t\tfor (i = 0; i < pointsLen; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tif (pointCurrent.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\r\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\r\n\t\t\tif (pointBefore && !pointBefore.model.skip) {\r\n\t\t\t\tdeltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\r\n\t\t\t\tpointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\r\n\t\t\t\tpointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\r\n\t\t\t}\r\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\r\n\t\t\t\tdeltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\r\n\t\t\t\tpointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\r\n\t\t\t\tpointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\thelpers.nextItem = function(collection, index, loop) {\r\n\t\tif (loop) {\r\n\t\t\treturn index >= collection.length - 1 ? collection[0] : collection[index + 1];\r\n\t\t}\r\n\t\treturn index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\r\n\t};\r\n\thelpers.previousItem = function(collection, index, loop) {\r\n\t\tif (loop) {\r\n\t\t\treturn index <= 0 ? collection[collection.length - 1] : collection[index - 1];\r\n\t\t}\r\n\t\treturn index <= 0 ? collection[0] : collection[index - 1];\r\n\t};\r\n\t// Implementation of the nice number algorithm used in determining where axis labels will go\r\n\thelpers.niceNum = function(range, round) {\r\n\t\tvar exponent = Math.floor(helpers.log10(range));\r\n\t\tvar fraction = range / Math.pow(10, exponent);\r\n\t\tvar niceFraction;\r\n\r\n\t\tif (round) {\r\n\t\t\tif (fraction < 1.5) {\r\n\t\t\t\tniceFraction = 1;\r\n\t\t\t} else if (fraction < 3) {\r\n\t\t\t\tniceFraction = 2;\r\n\t\t\t} else if (fraction < 7) {\r\n\t\t\t\tniceFraction = 5;\r\n\t\t\t} else {\r\n\t\t\t\tniceFraction = 10;\r\n\t\t\t}\r\n\t\t} else if (fraction <= 1.0) {\r\n\t\t\tniceFraction = 1;\r\n\t\t} else if (fraction <= 2) {\r\n\t\t\tniceFraction = 2;\r\n\t\t} else if (fraction <= 5) {\r\n\t\t\tniceFraction = 5;\r\n\t\t} else {\r\n\t\t\tniceFraction = 10;\r\n\t\t}\r\n\r\n\t\treturn niceFraction * Math.pow(10, exponent);\r\n\t};\r\n\t// Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\thelpers.requestAnimFrame = (function() {\r\n\t\tif (typeof window === 'undefined') {\r\n\t\t\treturn function(callback) {\r\n\t\t\t\tcallback();\r\n\t\t\t};\r\n\t\t}\r\n\t\treturn window.requestAnimationFrame ||\r\n\t\t\twindow.webkitRequestAnimationFrame ||\r\n\t\t\twindow.mozRequestAnimationFrame ||\r\n\t\t\twindow.oRequestAnimationFrame ||\r\n\t\t\twindow.msRequestAnimationFrame ||\r\n\t\t\tfunction(callback) {\r\n\t\t\t\treturn window.setTimeout(callback, 1000 / 60);\r\n\t\t\t};\r\n\t}());\r\n\t// -- DOM methods\r\n\thelpers.getRelativePosition = function(evt, chart) {\r\n\t\tvar mouseX, mouseY;\r\n\t\tvar e = evt.originalEvent || evt;\r\n\t\tvar canvas = evt.target || evt.srcElement;\r\n\t\tvar boundingRect = canvas.getBoundingClientRect();\r\n\r\n\t\tvar touches = e.touches;\r\n\t\tif (touches && touches.length > 0) {\r\n\t\t\tmouseX = touches[0].clientX;\r\n\t\t\tmouseY = touches[0].clientY;\r\n\r\n\t\t} else {\r\n\t\t\tmouseX = e.clientX;\r\n\t\t\tmouseY = e.clientY;\r\n\t\t}\r\n\r\n\t\t// Scale mouse coordinates into canvas coordinates\r\n\t\t// by following the pattern laid out by 'jerryj' in the comments of\r\n\t\t// http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\r\n\t\tvar paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left'));\r\n\t\tvar paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top'));\r\n\t\tvar paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right'));\r\n\t\tvar paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom'));\r\n\t\tvar width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\r\n\t\tvar height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\r\n\r\n\t\t// We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\r\n\t\t// the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\r\n\t\tmouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\r\n\t\tmouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\r\n\r\n\t\treturn {\r\n\t\t\tx: mouseX,\r\n\t\t\ty: mouseY\r\n\t\t};\r\n\r\n\t};\r\n\r\n\t// Private helper function to convert max-width/max-height values that may be percentages into a number\r\n\tfunction parseMaxStyle(styleValue, node, parentProperty) {\r\n\t\tvar valueInPixels;\r\n\t\tif (typeof styleValue === 'string') {\r\n\t\t\tvalueInPixels = parseInt(styleValue, 10);\r\n\r\n\t\t\tif (styleValue.indexOf('%') !== -1) {\r\n\t\t\t\t// percentage * size in dimension\r\n\t\t\t\tvalueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvalueInPixels = styleValue;\r\n\t\t}\r\n\r\n\t\treturn valueInPixels;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns if the given value contains an effective constraint.\r\n\t * @private\r\n\t */\r\n\tfunction isConstrainedValue(value) {\r\n\t\treturn value !== undefined && value !== null && value !== 'none';\r\n\t}\r\n\r\n\t// Private helper to get a constraint dimension\r\n\t// @param domNode : the node to check the constraint on\r\n\t// @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight)\r\n\t// @param percentageProperty : property of parent to use when calculating width as a percentage\r\n\t// @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser\r\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\r\n\t\tvar view = document.defaultView;\r\n\t\tvar parentNode = helpers._getParentNode(domNode);\r\n\t\tvar constrainedNode = view.getComputedStyle(domNode)[maxStyle];\r\n\t\tvar constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\r\n\t\tvar hasCNode = isConstrainedValue(constrainedNode);\r\n\t\tvar hasCContainer = isConstrainedValue(constrainedContainer);\r\n\t\tvar infinity = Number.POSITIVE_INFINITY;\r\n\r\n\t\tif (hasCNode || hasCContainer) {\r\n\t\t\treturn Math.min(\r\n\t\t\t\thasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\r\n\t\t\t\thasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\r\n\t\t}\r\n\r\n\t\treturn 'none';\r\n\t}\r\n\t// returns Number or undefined if no constraint\r\n\thelpers.getConstraintWidth = function(domNode) {\r\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\r\n\t};\r\n\t// returns Number or undefined if no constraint\r\n\thelpers.getConstraintHeight = function(domNode) {\r\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\r\n\t};\r\n\t/**\r\n\t * @private\r\n \t */\r\n\thelpers._calculatePadding = function(container, padding, parentDimension) {\r\n\t\tpadding = helpers.getStyle(container, padding);\r\n\r\n\t\treturn padding.indexOf('%') > -1 ? parentDimension / parseInt(padding, 10) : parseInt(padding, 10);\r\n\t};\r\n\t/**\r\n\t * @private\r\n\t */\r\n\thelpers._getParentNode = function(domNode) {\r\n\t\tvar parent = domNode.parentNode;\r\n\t\tif (parent && parent.host) {\r\n\t\t\tparent = parent.host;\r\n\t\t}\r\n\t\treturn parent;\r\n\t};\r\n\thelpers.getMaximumWidth = function(domNode) {\r\n\t\tvar container = helpers._getParentNode(domNode);\r\n\t\tif (!container) {\r\n\t\t\treturn domNode.clientWidth;\r\n\t\t}\r\n\r\n\t\tvar clientWidth = container.clientWidth;\r\n\t\tvar paddingLeft = helpers._calculatePadding(container, 'padding-left', clientWidth);\r\n\t\tvar paddingRight = helpers._calculatePadding(container, 'padding-right', clientWidth);\r\n\r\n\t\tvar w = clientWidth - paddingLeft - paddingRight;\r\n\t\tvar cw = helpers.getConstraintWidth(domNode);\r\n\t\treturn isNaN(cw) ? w : Math.min(w, cw);\r\n\t};\r\n\thelpers.getMaximumHeight = function(domNode) {\r\n\t\tvar container = helpers._getParentNode(domNode);\r\n\t\tif (!container) {\r\n\t\t\treturn domNode.clientHeight;\r\n\t\t}\r\n\r\n\t\tvar clientHeight = container.clientHeight;\r\n\t\tvar paddingTop = helpers._calculatePadding(container, 'padding-top', clientHeight);\r\n\t\tvar paddingBottom = helpers._calculatePadding(container, 'padding-bottom', clientHeight);\r\n\r\n\t\tvar h = clientHeight - paddingTop - paddingBottom;\r\n\t\tvar ch = helpers.getConstraintHeight(domNode);\r\n\t\treturn isNaN(ch) ? h : Math.min(h, ch);\r\n\t};\r\n\thelpers.getStyle = function(el, property) {\r\n\t\treturn el.currentStyle ?\r\n\t\t\tel.currentStyle[property] :\r\n\t\t\tdocument.defaultView.getComputedStyle(el, null).getPropertyValue(property);\r\n\t};\r\n\thelpers.retinaScale = function(chart, forceRatio) {\r\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\r\n\t\tif (pixelRatio === 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar canvas = chart.canvas;\r\n\t\tvar height = chart.height;\r\n\t\tvar width = chart.width;\r\n\r\n\t\tcanvas.height = height * pixelRatio;\r\n\t\tcanvas.width = width * pixelRatio;\r\n\t\tchart.ctx.scale(pixelRatio, pixelRatio);\r\n\r\n\t\t// If no style has been set on the canvas, the render size is used as display size,\r\n\t\t// making the chart visually bigger, so let's enforce it to the \"correct\" values.\r\n\t\t// See https://github.com/chartjs/Chart.js/issues/3575\r\n\t\tif (!canvas.style.height && !canvas.style.width) {\r\n\t\t\tcanvas.style.height = height + 'px';\r\n\t\t\tcanvas.style.width = width + 'px';\r\n\t\t}\r\n\t};\r\n\t// -- Canvas methods\r\n\thelpers.fontString = function(pixelSize, fontStyle, fontFamily) {\r\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\r\n\t};\r\n\thelpers.longestText = function(ctx, font, arrayOfThings, cache) {\r\n\t\tcache = cache || {};\r\n\t\tvar data = cache.data = cache.data || {};\r\n\t\tvar gc = cache.garbageCollect = cache.garbageCollect || [];\r\n\r\n\t\tif (cache.font !== font) {\r\n\t\t\tdata = cache.data = {};\r\n\t\t\tgc = cache.garbageCollect = [];\r\n\t\t\tcache.font = font;\r\n\t\t}\r\n\r\n\t\tctx.font = font;\r\n\t\tvar longest = 0;\r\n\t\thelpers.each(arrayOfThings, function(thing) {\r\n\t\t\t// Undefined strings and arrays should not be measured\r\n\t\t\tif (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) {\r\n\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, thing);\r\n\t\t\t} else if (helpers.isArray(thing)) {\r\n\t\t\t\t// if it is an array lets measure each element\r\n\t\t\t\t// to do maybe simplify this function a bit so we can do this more recursively?\r\n\t\t\t\thelpers.each(thing, function(nestedThing) {\r\n\t\t\t\t\t// Undefined strings and arrays should not be measured\r\n\t\t\t\t\tif (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) {\r\n\t\t\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, nestedThing);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar gcLen = gc.length / 2;\r\n\t\tif (gcLen > arrayOfThings.length) {\r\n\t\t\tfor (var i = 0; i < gcLen; i++) {\r\n\t\t\t\tdelete data[gc[i]];\r\n\t\t\t}\r\n\t\t\tgc.splice(0, gcLen);\r\n\t\t}\r\n\t\treturn longest;\r\n\t};\r\n\thelpers.measureText = function(ctx, data, gc, longest, string) {\r\n\t\tvar textWidth = data[string];\r\n\t\tif (!textWidth) {\r\n\t\t\ttextWidth = data[string] = ctx.measureText(string).width;\r\n\t\t\tgc.push(string);\r\n\t\t}\r\n\t\tif (textWidth > longest) {\r\n\t\t\tlongest = textWidth;\r\n\t\t}\r\n\t\treturn longest;\r\n\t};\r\n\thelpers.numberOfLabelLines = function(arrayOfThings) {\r\n\t\tvar numberOfLines = 1;\r\n\t\thelpers.each(arrayOfThings, function(thing) {\r\n\t\t\tif (helpers.isArray(thing)) {\r\n\t\t\t\tif (thing.length > numberOfLines) {\r\n\t\t\t\t\tnumberOfLines = thing.length;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn numberOfLines;\r\n\t};\r\n\r\n\thelpers.color = !color ?\r\n\t\tfunction(value) {\r\n\t\t\tconsole.error('Color.js not found!');\r\n\t\t\treturn value;\r\n\t\t} :\r\n\t\tfunction(value) {\r\n\t\t\t/* global CanvasGradient */\r\n\t\t\tif (value instanceof CanvasGradient) {\r\n\t\t\t\tvalue = defaults.global.defaultColor;\r\n\t\t\t}\r\n\r\n\t\t\treturn color(value);\r\n\t\t};\r\n\r\n\thelpers.getHoverColor = function(colorValue) {\r\n\t\t/* global CanvasPattern */\r\n\t\treturn (colorValue instanceof CanvasPattern) ?\r\n\t\t\tcolorValue :\r\n\t\t\thelpers.color(colorValue).saturate(0.5).darken(0.1).rgbString();\r\n\t};\r\n};\r\n\r\n},{\"26\":26,\"3\":3,\"34\":34,\"46\":46}],29:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\n/**\r\n * Helper function to get relative position for an event\r\n * @param {Event|IEvent} event - The event to get the position for\r\n * @param {Chart} chart - The chart\r\n * @returns {Point} the event position\r\n */\r\nfunction getRelativePosition(e, chart) {\r\n\tif (e.native) {\r\n\t\treturn {\r\n\t\t\tx: e.x,\r\n\t\t\ty: e.y\r\n\t\t};\r\n\t}\r\n\r\n\treturn helpers.getRelativePosition(e, chart);\r\n}\r\n\r\n/**\r\n * Helper function to traverse all of the visible elements in the chart\r\n * @param chart {chart} the chart\r\n * @param handler {Function} the callback to execute for each visible item\r\n */\r\nfunction parseVisibleItems(chart, handler) {\r\n\tvar datasets = chart.data.datasets;\r\n\tvar meta, i, j, ilen, jlen;\r\n\r\n\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\r\n\t\tif (!chart.isDatasetVisible(i)) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tmeta = chart.getDatasetMeta(i);\r\n\t\tfor (j = 0, jlen = meta.data.length; j < jlen; ++j) {\r\n\t\t\tvar element = meta.data[j];\r\n\t\t\tif (!element._view.skip) {\r\n\t\t\t\thandler(element);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Helper function to get the items that intersect the event position\r\n * @param items {ChartElement[]} elements to filter\r\n * @param position {Point} the point to be nearest to\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getIntersectItems(chart, position) {\r\n\tvar elements = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\telements.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\r\n * @param chart {Chart} the chart to look at elements from\r\n * @param position {Point} the point to be nearest to\r\n * @param intersect {Boolean} if true, only consider items that intersect the position\r\n * @param distanceMetric {Function} function to provide the distance between points\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\r\n\tvar minDistance = Number.POSITIVE_INFINITY;\r\n\tvar nearestItems = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar center = element.getCenterPoint();\r\n\t\tvar distance = distanceMetric(position, center);\r\n\r\n\t\tif (distance < minDistance) {\r\n\t\t\tnearestItems = [element];\r\n\t\t\tminDistance = distance;\r\n\t\t} else if (distance === minDistance) {\r\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\r\n\t\t\tnearestItems.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn nearestItems;\r\n}\r\n\r\n/**\r\n * Get a distance metric function for two points based on the\r\n * axis mode setting\r\n * @param {String} axis the axis mode. x|y|xy\r\n */\r\nfunction getDistanceMetricForAxis(axis) {\r\n\tvar useX = axis.indexOf('x') !== -1;\r\n\tvar useY = axis.indexOf('y') !== -1;\r\n\r\n\treturn function(pt1, pt2) {\r\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\r\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\r\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\r\n\t};\r\n}\r\n\r\nfunction indexMode(chart, e, options) {\r\n\tvar position = getRelativePosition(e, chart);\r\n\t// Default axis for index mode is 'x' to match old behaviour\r\n\toptions.axis = options.axis || 'x';\r\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\tvar elements = [];\r\n\r\n\tif (!items.length) {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tchart.data.datasets.forEach(function(dataset, datasetIndex) {\r\n\t\tif (chart.isDatasetVisible(datasetIndex)) {\r\n\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\tvar element = meta.data[items[0]._index];\r\n\r\n\t\t\t// don't count items that are skipped (null data)\r\n\t\t\tif (element && !element._view.skip) {\r\n\t\t\t\telements.push(element);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * @interface IInteractionOptions\r\n */\r\n/**\r\n * If true, only consider items that intersect the point\r\n * @name IInterfaceOptions#boolean\r\n * @type Boolean\r\n */\r\n\r\n/**\r\n * Contains interaction related functions\r\n * @namespace Chart.Interaction\r\n */\r\nmodule.exports = {\r\n\t// Helper function for different modes\r\n\tmodes: {\r\n\t\tsingle: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar elements = [];\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\telements.push(element);\r\n\t\t\t\t\treturn elements;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn elements.slice(0, 1);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.label\r\n\t\t * @deprecated since version 2.4.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tlabel: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\r\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\r\n\t\t * @function Chart.Interaction.modes.index\r\n\t\t * @since v2.4.0\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @param options {IInteractionOptions} options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tindex: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\r\n\t\t * @function Chart.Interaction.modes.dataset\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @param options {IInteractionOptions} options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tdataset: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\r\n\t\t\tif (items.length > 0) {\r\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\r\n\t\t\t}\r\n\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.x-axis\r\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\t'x-axis': function(chart, e) {\r\n\t\t\treturn indexMode(chart, e, {intersect: false});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Point mode returns all elements that hit test based on the event position\r\n\t\t * of the event\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tpoint: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\treturn getIntersectItems(chart, position);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * nearest mode returns the element closest to the point\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @param options {IInteractionOptions} options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tnearest: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\tvar nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric);\r\n\r\n\t\t\t// We have multiple items at the same distance from the event. Now sort by smallest\r\n\t\t\tif (nearestItems.length > 1) {\r\n\t\t\t\tnearestItems.sort(function(a, b) {\r\n\t\t\t\t\tvar sizeA = a.getArea();\r\n\t\t\t\t\tvar sizeB = b.getArea();\r\n\t\t\t\t\tvar ret = sizeA - sizeB;\r\n\r\n\t\t\t\t\tif (ret === 0) {\r\n\t\t\t\t\t\t// if equal sort by dataset index\r\n\t\t\t\t\t\tret = a._datasetIndex - b._datasetIndex;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn ret;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Return only 1 item\r\n\t\t\treturn nearestItems.slice(0, 1);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * x mode returns the elements that hit-test at the current x coordinate\r\n\t\t * @function Chart.Interaction.modes.x\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @param options {IInteractionOptions} options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tx: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inXRange(position.x)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * y mode returns the elements that hit-test at the current y coordinate\r\n\t\t * @function Chart.Interaction.modes.y\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @param options {IInteractionOptions} options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\ty: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inYRange(position.y)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"46\":46}],30:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\n\r\ndefaults._set('global', {\r\n\tresponsive: true,\r\n\tresponsiveAnimationDuration: 0,\r\n\tmaintainAspectRatio: true,\r\n\tevents: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'],\r\n\thover: {\r\n\t\tonHover: null,\r\n\t\tmode: 'nearest',\r\n\t\tintersect: true,\r\n\t\tanimationDuration: 400\r\n\t},\r\n\tonClick: null,\r\n\tdefaultColor: 'rgba(0,0,0,0.1)',\r\n\tdefaultFontColor: '#666',\r\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\r\n\tdefaultFontSize: 12,\r\n\tdefaultFontStyle: 'normal',\r\n\tshowLines: true,\r\n\r\n\t// Element defaults defined in element extensions\r\n\telements: {},\r\n\r\n\t// Layout options such as padding\r\n\tlayout: {\r\n\t\tpadding: {\r\n\t\t\ttop: 0,\r\n\t\t\tright: 0,\r\n\t\t\tbottom: 0,\r\n\t\t\tleft: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = function() {\r\n\r\n\t// Occupy the global variable of Chart, and create a simple base class\r\n\tvar Chart = function(item, config) {\r\n\t\tthis.construct(item, config);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tChart.Chart = Chart;\r\n\r\n\treturn Chart;\r\n};\r\n\r\n},{\"26\":26}],31:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\nfunction filterByPosition(array, position) {\r\n\treturn helpers.where(array, function(v) {\r\n\t\treturn v.position === position;\r\n\t});\r\n}\r\n\r\nfunction sortByWeight(array, reverse) {\r\n\tarray.forEach(function(v, i) {\r\n\t\tv._tmpIndex_ = i;\r\n\t\treturn v;\r\n\t});\r\n\tarray.sort(function(a, b) {\r\n\t\tvar v0 = reverse ? b : a;\r\n\t\tvar v1 = reverse ? a : b;\r\n\t\treturn v0.weight === v1.weight ?\r\n\t\t\tv0._tmpIndex_ - v1._tmpIndex_ :\r\n\t\t\tv0.weight - v1.weight;\r\n\t});\r\n\tarray.forEach(function(v) {\r\n\t\tdelete v._tmpIndex_;\r\n\t});\r\n}\r\n\r\n/**\r\n * @interface ILayoutItem\r\n * @prop {String} position - The position of the item in the chart layout. Possible values are\r\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\r\n * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area\r\n * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\r\n * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\r\n * @prop {Function} update - Takes two parameters: width and height. Returns size of item\r\n * @prop {Function} getPadding - Returns an object with padding on the edges\r\n * @prop {Number} width - Width of item. Must be valid after update()\r\n * @prop {Number} height - Height of item. Must be valid after update()\r\n * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update\r\n * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update\r\n * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update\r\n * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\r\n */\r\n\r\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\r\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\r\n// It is this service's responsibility of carrying out that layout.\r\nmodule.exports = {\r\n\tdefaults: {},\r\n\r\n\t/**\r\n\t * Register a box to a chart.\r\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\r\n\t * @param {Chart} chart - the chart to use\r\n\t * @param {ILayoutItem} item - the item to add to be layed out\r\n\t */\r\n\taddBox: function(chart, item) {\r\n\t\tif (!chart.boxes) {\r\n\t\t\tchart.boxes = [];\r\n\t\t}\r\n\r\n\t\t// initialize item with default values\r\n\t\titem.fullWidth = item.fullWidth || false;\r\n\t\titem.position = item.position || 'top';\r\n\t\titem.weight = item.weight || 0;\r\n\r\n\t\tchart.boxes.push(item);\r\n\t},\r\n\r\n\t/**\r\n\t * Remove a layoutItem from a chart\r\n\t * @param {Chart} chart - the chart to remove the box from\r\n\t * @param {Object} layoutItem - the item to remove from the layout\r\n\t */\r\n\tremoveBox: function(chart, layoutItem) {\r\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\r\n\t\tif (index !== -1) {\r\n\t\t\tchart.boxes.splice(index, 1);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Sets (or updates) options on the given `item`.\r\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\r\n\t * @param {Object} item - the item to configure with the given options\r\n\t * @param {Object} options - the new item options.\r\n\t */\r\n\tconfigure: function(chart, item, options) {\r\n\t\tvar props = ['fullWidth', 'position', 'weight'];\r\n\t\tvar ilen = props.length;\r\n\t\tvar i = 0;\r\n\t\tvar prop;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tprop = props[i];\r\n\t\t\tif (options.hasOwnProperty(prop)) {\r\n\t\t\t\titem[prop] = options[prop];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Fits boxes of the given chart into the given size by having each box measure itself\r\n\t * then running a fitting algorithm\r\n\t * @param {Chart} chart - the chart\r\n\t * @param {Number} width - the width to fit into\r\n\t * @param {Number} height - the height to fit into\r\n\t */\r\n\tupdate: function(chart, width, height) {\r\n\t\tif (!chart) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar layoutOptions = chart.options.layout || {};\r\n\t\tvar padding = helpers.options.toPadding(layoutOptions.padding);\r\n\t\tvar leftPadding = padding.left;\r\n\t\tvar rightPadding = padding.right;\r\n\t\tvar topPadding = padding.top;\r\n\t\tvar bottomPadding = padding.bottom;\r\n\r\n\t\tvar leftBoxes = filterByPosition(chart.boxes, 'left');\r\n\t\tvar rightBoxes = filterByPosition(chart.boxes, 'right');\r\n\t\tvar topBoxes = filterByPosition(chart.boxes, 'top');\r\n\t\tvar bottomBoxes = filterByPosition(chart.boxes, 'bottom');\r\n\t\tvar chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea');\r\n\r\n\t\t// Sort boxes by weight. A higher weight is further away from the chart area\r\n\t\tsortByWeight(leftBoxes, true);\r\n\t\tsortByWeight(rightBoxes, false);\r\n\t\tsortByWeight(topBoxes, true);\r\n\t\tsortByWeight(bottomBoxes, false);\r\n\r\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\r\n\t\t// Our canvas looks like the following.\r\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\r\n\t\t// B1 is the bottom axis\r\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\r\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\r\n\t\t// an error will be thrown.\r\n\t\t//\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | T1 (Full Width) |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | | | T2 | |\r\n\t\t// | |----|-------------------------------------|----|\r\n\t\t// | | | C1 | | C2 | |\r\n\t\t// | | |----| |----| |\r\n\t\t// | | | | |\r\n\t\t// | L1 | L2 | ChartArea (C0) | R1 |\r\n\t\t// | | | | |\r\n\t\t// | | |----| |----| |\r\n\t\t// | | | C3 | | C4 | |\r\n\t\t// | |----|-------------------------------------|----|\r\n\t\t// | | | B1 | |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | B2 (Full Width) |\r\n\t\t// |----------------------------------------------------|\r\n\t\t//\r\n\t\t// What we do to find the best sizing, we do the following\r\n\t\t// 1. Determine the minimum size of the chart area.\r\n\t\t// 2. Split the remaining width equally between each vertical axis\r\n\t\t// 3. Split the remaining height equally between each horizontal axis\r\n\t\t// 4. Give each layout the maximum size it can be. The layout will return it's minimum size\r\n\t\t// 5. Adjust the sizes of each axis based on it's minimum reported size.\r\n\t\t// 6. Refit each axis\r\n\t\t// 7. Position each axis in the final location\r\n\t\t// 8. Tell the chart the final location of the chart area\r\n\t\t// 9. Tell any axes that overlay the chart area the positions of the chart area\r\n\r\n\t\t// Step 1\r\n\t\tvar chartWidth = width - leftPadding - rightPadding;\r\n\t\tvar chartHeight = height - topPadding - bottomPadding;\r\n\t\tvar chartAreaWidth = chartWidth / 2; // min 50%\r\n\t\tvar chartAreaHeight = chartHeight / 2; // min 50%\r\n\r\n\t\t// Step 2\r\n\t\tvar verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length);\r\n\r\n\t\t// Step 3\r\n\t\tvar horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length);\r\n\r\n\t\t// Step 4\r\n\t\tvar maxChartAreaWidth = chartWidth;\r\n\t\tvar maxChartAreaHeight = chartHeight;\r\n\t\tvar minBoxSizes = [];\r\n\r\n\t\tfunction getMinimumBoxSize(box) {\r\n\t\t\tvar minSize;\r\n\t\t\tvar isHorizontal = box.isHorizontal();\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tminSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight);\r\n\t\t\t\tmaxChartAreaHeight -= minSize.height;\r\n\t\t\t} else {\r\n\t\t\t\tminSize = box.update(verticalBoxWidth, maxChartAreaHeight);\r\n\t\t\t\tmaxChartAreaWidth -= minSize.width;\r\n\t\t\t}\r\n\r\n\t\t\tminBoxSizes.push({\r\n\t\t\t\thorizontal: isHorizontal,\r\n\t\t\t\tminSize: minSize,\r\n\t\t\t\tbox: box,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\thelpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize);\r\n\r\n\t\t// If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478)\r\n\t\tvar maxHorizontalLeftPadding = 0;\r\n\t\tvar maxHorizontalRightPadding = 0;\r\n\t\tvar maxVerticalTopPadding = 0;\r\n\t\tvar maxVerticalBottomPadding = 0;\r\n\r\n\t\thelpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) {\r\n\t\t\tif (horizontalBox.getPadding) {\r\n\t\t\t\tvar boxPadding = horizontalBox.getPadding();\r\n\t\t\t\tmaxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left);\r\n\t\t\t\tmaxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) {\r\n\t\t\tif (verticalBox.getPadding) {\r\n\t\t\t\tvar boxPadding = verticalBox.getPadding();\r\n\t\t\t\tmaxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top);\r\n\t\t\t\tmaxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could\r\n\t\t// be if the axes are drawn at their minimum sizes.\r\n\t\t// Steps 5 & 6\r\n\t\tvar totalLeftBoxesWidth = leftPadding;\r\n\t\tvar totalRightBoxesWidth = rightPadding;\r\n\t\tvar totalTopBoxesHeight = topPadding;\r\n\t\tvar totalBottomBoxesHeight = bottomPadding;\r\n\r\n\t\t// Function to fit a box\r\n\t\tfunction fitBox(box) {\r\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) {\r\n\t\t\t\treturn minBox.box === box;\r\n\t\t\t});\r\n\r\n\t\t\tif (minBoxSize) {\r\n\t\t\t\tif (box.isHorizontal()) {\r\n\t\t\t\t\tvar scaleMargin = {\r\n\t\t\t\t\t\tleft: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding),\r\n\t\t\t\t\t\tright: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding),\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tbottom: 0\r\n\t\t\t\t\t};\r\n\r\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\r\n\t\t\t\t\t// on the margin. Sometimes they need to increase in size slightly\r\n\t\t\t\t\tbox.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Update, and calculate the left and right margins for the horizontal boxes\r\n\t\thelpers.each(leftBoxes.concat(rightBoxes), fitBox);\r\n\r\n\t\thelpers.each(leftBoxes, function(box) {\r\n\t\t\ttotalLeftBoxesWidth += box.width;\r\n\t\t});\r\n\r\n\t\thelpers.each(rightBoxes, function(box) {\r\n\t\t\ttotalRightBoxesWidth += box.width;\r\n\t\t});\r\n\r\n\t\t// Set the Left and Right margins for the horizontal boxes\r\n\t\thelpers.each(topBoxes.concat(bottomBoxes), fitBox);\r\n\r\n\t\t// Figure out how much margin is on the top and bottom of the vertical boxes\r\n\t\thelpers.each(topBoxes, function(box) {\r\n\t\t\ttotalTopBoxesHeight += box.height;\r\n\t\t});\r\n\r\n\t\thelpers.each(bottomBoxes, function(box) {\r\n\t\t\ttotalBottomBoxesHeight += box.height;\r\n\t\t});\r\n\r\n\t\tfunction finalFitVerticalBox(box) {\r\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) {\r\n\t\t\t\treturn minSize.box === box;\r\n\t\t\t});\r\n\r\n\t\t\tvar scaleMargin = {\r\n\t\t\t\tleft: 0,\r\n\t\t\t\tright: 0,\r\n\t\t\t\ttop: totalTopBoxesHeight,\r\n\t\t\t\tbottom: totalBottomBoxesHeight\r\n\t\t\t};\r\n\r\n\t\t\tif (minBoxSize) {\r\n\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Let the left layout know the final margin\r\n\t\thelpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox);\r\n\r\n\t\t// Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance)\r\n\t\ttotalLeftBoxesWidth = leftPadding;\r\n\t\ttotalRightBoxesWidth = rightPadding;\r\n\t\ttotalTopBoxesHeight = topPadding;\r\n\t\ttotalBottomBoxesHeight = bottomPadding;\r\n\r\n\t\thelpers.each(leftBoxes, function(box) {\r\n\t\t\ttotalLeftBoxesWidth += box.width;\r\n\t\t});\r\n\r\n\t\thelpers.each(rightBoxes, function(box) {\r\n\t\t\ttotalRightBoxesWidth += box.width;\r\n\t\t});\r\n\r\n\t\thelpers.each(topBoxes, function(box) {\r\n\t\t\ttotalTopBoxesHeight += box.height;\r\n\t\t});\r\n\t\thelpers.each(bottomBoxes, function(box) {\r\n\t\t\ttotalBottomBoxesHeight += box.height;\r\n\t\t});\r\n\r\n\t\t// We may be adding some padding to account for rotated x axis labels\r\n\t\tvar leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0);\r\n\t\ttotalLeftBoxesWidth += leftPaddingAddition;\r\n\t\ttotalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0);\r\n\r\n\t\tvar topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0);\r\n\t\ttotalTopBoxesHeight += topPaddingAddition;\r\n\t\ttotalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0);\r\n\r\n\t\t// Figure out if our chart area changed. This would occur if the dataset layout label rotation\r\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\r\n\t\t// without calling `fit` again\r\n\t\tvar newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight;\r\n\t\tvar newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth;\r\n\r\n\t\tif (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) {\r\n\t\t\thelpers.each(leftBoxes, function(box) {\r\n\t\t\t\tbox.height = newMaxChartAreaHeight;\r\n\t\t\t});\r\n\r\n\t\t\thelpers.each(rightBoxes, function(box) {\r\n\t\t\t\tbox.height = newMaxChartAreaHeight;\r\n\t\t\t});\r\n\r\n\t\t\thelpers.each(topBoxes, function(box) {\r\n\t\t\t\tif (!box.fullWidth) {\r\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\thelpers.each(bottomBoxes, function(box) {\r\n\t\t\t\tif (!box.fullWidth) {\r\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tmaxChartAreaHeight = newMaxChartAreaHeight;\r\n\t\t\tmaxChartAreaWidth = newMaxChartAreaWidth;\r\n\t\t}\r\n\r\n\t\t// Step 7 - Position the boxes\r\n\t\tvar left = leftPadding + leftPaddingAddition;\r\n\t\tvar top = topPadding + topPaddingAddition;\r\n\r\n\t\tfunction placeBox(box) {\r\n\t\t\tif (box.isHorizontal()) {\r\n\t\t\t\tbox.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth;\r\n\t\t\t\tbox.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth;\r\n\t\t\t\tbox.top = top;\r\n\t\t\t\tbox.bottom = top + box.height;\r\n\r\n\t\t\t\t// Move to next point\r\n\t\t\t\ttop = box.bottom;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tbox.left = left;\r\n\t\t\t\tbox.right = left + box.width;\r\n\t\t\t\tbox.top = totalTopBoxesHeight;\r\n\t\t\t\tbox.bottom = totalTopBoxesHeight + maxChartAreaHeight;\r\n\r\n\t\t\t\t// Move to next point\r\n\t\t\t\tleft = box.right;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thelpers.each(leftBoxes.concat(topBoxes), placeBox);\r\n\r\n\t\t// Account for chart width and height\r\n\t\tleft += maxChartAreaWidth;\r\n\t\ttop += maxChartAreaHeight;\r\n\r\n\t\thelpers.each(rightBoxes, placeBox);\r\n\t\thelpers.each(bottomBoxes, placeBox);\r\n\r\n\t\t// Step 8\r\n\t\tchart.chartArea = {\r\n\t\t\tleft: totalLeftBoxesWidth,\r\n\t\t\ttop: totalTopBoxesHeight,\r\n\t\t\tright: totalLeftBoxesWidth + maxChartAreaWidth,\r\n\t\t\tbottom: totalTopBoxesHeight + maxChartAreaHeight\r\n\t\t};\r\n\r\n\t\t// Step 9\r\n\t\thelpers.each(chartAreaBoxes, function(box) {\r\n\t\t\tbox.left = chart.chartArea.left;\r\n\t\t\tbox.top = chart.chartArea.top;\r\n\t\t\tbox.right = chart.chartArea.right;\r\n\t\t\tbox.bottom = chart.chartArea.bottom;\r\n\r\n\t\t\tbox.update(maxChartAreaWidth, maxChartAreaHeight);\r\n\t\t});\r\n\t}\r\n};\r\n\r\n},{\"46\":46}],32:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('global', {\r\n\tplugins: {}\r\n});\r\n\r\n/**\r\n * The plugin service singleton\r\n * @namespace Chart.plugins\r\n * @since 2.1.0\r\n */\r\nmodule.exports = {\r\n\t/**\r\n\t * Globally registered plugins.\r\n\t * @private\r\n\t */\r\n\t_plugins: [],\r\n\r\n\t/**\r\n\t * This identifier is used to invalidate the descriptors cache attached to each chart\r\n\t * when a global plugin is registered or unregistered. In this case, the cache ID is\r\n\t * incremented and descriptors are regenerated during following API calls.\r\n\t * @private\r\n\t */\r\n\t_cacheId: 0,\r\n\r\n\t/**\r\n\t * Registers the given plugin(s) if not already registered.\r\n\t * @param {Array|Object} plugins plugin instance(s).\r\n\t */\r\n\tregister: function(plugins) {\r\n\t\tvar p = this._plugins;\r\n\t\t([]).concat(plugins).forEach(function(plugin) {\r\n\t\t\tif (p.indexOf(plugin) === -1) {\r\n\t\t\t\tp.push(plugin);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Unregisters the given plugin(s) only if registered.\r\n\t * @param {Array|Object} plugins plugin instance(s).\r\n\t */\r\n\tunregister: function(plugins) {\r\n\t\tvar p = this._plugins;\r\n\t\t([]).concat(plugins).forEach(function(plugin) {\r\n\t\t\tvar idx = p.indexOf(plugin);\r\n\t\t\tif (idx !== -1) {\r\n\t\t\t\tp.splice(idx, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Remove all registered plugins.\r\n\t * @since 2.1.5\r\n\t */\r\n\tclear: function() {\r\n\t\tthis._plugins = [];\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the number of registered plugins?\r\n\t * @returns {Number}\r\n\t * @since 2.1.5\r\n\t */\r\n\tcount: function() {\r\n\t\treturn this._plugins.length;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns all registered plugin instances.\r\n\t * @returns {Array} array of plugin objects.\r\n\t * @since 2.1.5\r\n\t */\r\n\tgetAll: function() {\r\n\t\treturn this._plugins;\r\n\t},\r\n\r\n\t/**\r\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\r\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\r\n\t * returned value can be used, for instance, to interrupt the current action.\r\n\t * @param {Object} chart - The chart instance for which plugins should be called.\r\n\t * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\r\n\t * @param {Array} [args] - Extra arguments to apply to the hook call.\r\n\t * @returns {Boolean} false if any of the plugins return false, else returns true.\r\n\t */\r\n\tnotify: function(chart, hook, args) {\r\n\t\tvar descriptors = this.descriptors(chart);\r\n\t\tvar ilen = descriptors.length;\r\n\t\tvar i, descriptor, plugin, params, method;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tdescriptor = descriptors[i];\r\n\t\t\tplugin = descriptor.plugin;\r\n\t\t\tmethod = plugin[hook];\r\n\t\t\tif (typeof method === 'function') {\r\n\t\t\t\tparams = [chart].concat(args || []);\r\n\t\t\t\tparams.push(descriptor.options);\r\n\t\t\t\tif (method.apply(plugin, params) === false) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns descriptors of enabled plugins for the given chart.\r\n\t * @returns {Array} [{ plugin, options }]\r\n\t * @private\r\n\t */\r\n\tdescriptors: function(chart) {\r\n\t\tvar cache = chart.$plugins || (chart.$plugins = {});\r\n\t\tif (cache.id === this._cacheId) {\r\n\t\t\treturn cache.descriptors;\r\n\t\t}\r\n\r\n\t\tvar plugins = [];\r\n\t\tvar descriptors = [];\r\n\t\tvar config = (chart && chart.config) || {};\r\n\t\tvar options = (config.options && config.options.plugins) || {};\r\n\r\n\t\tthis._plugins.concat(config.plugins || []).forEach(function(plugin) {\r\n\t\t\tvar idx = plugins.indexOf(plugin);\r\n\t\t\tif (idx !== -1) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar id = plugin.id;\r\n\t\t\tvar opts = options[id];\r\n\t\t\tif (opts === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (opts === true) {\r\n\t\t\t\topts = helpers.clone(defaults.global.plugins[id]);\r\n\t\t\t}\r\n\r\n\t\t\tplugins.push(plugin);\r\n\t\t\tdescriptors.push({\r\n\t\t\t\tplugin: plugin,\r\n\t\t\t\toptions: opts || {}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tcache.descriptors = descriptors;\r\n\t\tcache.id = this._cacheId;\r\n\t\treturn descriptors;\r\n\t},\r\n\r\n\t/**\r\n\t * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\r\n\t * but in some cases, this reference can be changed by the user when updating options.\r\n\t * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\r\n\t * @private\r\n\t */\r\n\t_invalidate: function(chart) {\r\n\t\tdelete chart.$plugins;\r\n\t}\r\n};\r\n\r\n/**\r\n * Plugin extension hooks.\r\n * @interface IPlugin\r\n * @since 2.1.0\r\n */\r\n/**\r\n * @method IPlugin#beforeInit\r\n * @desc Called before initializing `chart`.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#afterInit\r\n * @desc Called after `chart` has been initialized and before the first update.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeUpdate\r\n * @desc Called before updating `chart`. If any plugin returns `false`, the update\r\n * is cancelled (and thus subsequent render(s)) until another `update` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart update.\r\n */\r\n/**\r\n * @method IPlugin#afterUpdate\r\n * @desc Called after `chart` has been updated and before rendering. Note that this\r\n * hook will not be called if the chart update has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeDatasetsUpdate\r\n * @desc Called before updating the `chart` datasets. If any plugin returns `false`,\r\n * the datasets update is cancelled until another `update` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} false to cancel the datasets update.\r\n * @since version 2.1.5\r\n*/\r\n/**\r\n * @method IPlugin#afterDatasetsUpdate\r\n * @desc Called after the `chart` datasets have been updated. Note that this hook\r\n * will not be called if the datasets update has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n * @since version 2.1.5\r\n */\r\n/**\r\n * @method IPlugin#beforeDatasetUpdate\r\n * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin\r\n * returns `false`, the datasets update is cancelled until another `update` is triggered.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Number} args.index - The dataset index.\r\n * @param {Object} args.meta - The dataset metadata.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\r\n */\r\n/**\r\n * @method IPlugin#afterDatasetUpdate\r\n * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note\r\n * that this hook will not be called if the datasets update has been previously cancelled.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Number} args.index - The dataset index.\r\n * @param {Object} args.meta - The dataset metadata.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeLayout\r\n * @desc Called before laying out `chart`. If any plugin returns `false`,\r\n * the layout update is cancelled until another `update` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart layout.\r\n */\r\n/**\r\n * @method IPlugin#afterLayout\r\n * @desc Called after the `chart` has been layed out. Note that this hook will not\r\n * be called if the layout update has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeRender\r\n * @desc Called before rendering `chart`. If any plugin returns `false`,\r\n * the rendering is cancelled until another `render` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart rendering.\r\n */\r\n/**\r\n * @method IPlugin#afterRender\r\n * @desc Called after the `chart` has been fully rendered (and animation completed). Note\r\n * that this hook will not be called if the rendering has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeDraw\r\n * @desc Called before drawing `chart` at every animation frame specified by the given\r\n * easing value. If any plugin returns `false`, the frame drawing is cancelled until\r\n * another `render` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart drawing.\r\n */\r\n/**\r\n * @method IPlugin#afterDraw\r\n * @desc Called after the `chart` has been drawn for the specific easing value. Note\r\n * that this hook will not be called if the drawing has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeDatasetsDraw\r\n * @desc Called before drawing the `chart` datasets. If any plugin returns `false`,\r\n * the datasets drawing is cancelled until another `render` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\r\n */\r\n/**\r\n * @method IPlugin#afterDatasetsDraw\r\n * @desc Called after the `chart` datasets have been drawn. Note that this hook\r\n * will not be called if the datasets drawing has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeDatasetDraw\r\n * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets\r\n * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing\r\n * is cancelled until another `render` is triggered.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Number} args.index - The dataset index.\r\n * @param {Object} args.meta - The dataset metadata.\r\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\r\n */\r\n/**\r\n * @method IPlugin#afterDatasetDraw\r\n * @desc Called after the `chart` datasets at the given `args.index` have been drawn\r\n * (datasets are drawn in the reverse order). Note that this hook will not be called\r\n * if the datasets drawing has been previously cancelled.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Number} args.index - The dataset index.\r\n * @param {Object} args.meta - The dataset metadata.\r\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeTooltipDraw\r\n * @desc Called before drawing the `tooltip`. If any plugin returns `false`,\r\n * the tooltip drawing is cancelled until another `render` is triggered.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Object} args.tooltip - The tooltip.\r\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart tooltip drawing.\r\n */\r\n/**\r\n * @method IPlugin#afterTooltipDraw\r\n * @desc Called after drawing the `tooltip`. Note that this hook will not\r\n * be called if the tooltip drawing has been previously cancelled.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Object} args.tooltip - The tooltip.\r\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeEvent\r\n * @desc Called before processing the specified `event`. If any plugin returns `false`,\r\n * the event will be discarded.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {IEvent} event - The event object.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#afterEvent\r\n * @desc Called after the `event` has been consumed. Note that this hook\r\n * will not be called if the `event` has been previously discarded.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {IEvent} event - The event object.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#resize\r\n * @desc Called after the chart as been resized.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Number} size - The new canvas display size (eq. canvas.style width & height).\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#destroy\r\n * @desc Called after the chart as been destroyed.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n\r\n},{\"26\":26,\"46\":46}],33:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\nvar Ticks = require(35);\r\n\r\ndefaults._set('scale', {\r\n\tdisplay: true,\r\n\tposition: 'left',\r\n\toffset: false,\r\n\r\n\t// grid line settings\r\n\tgridLines: {\r\n\t\tdisplay: true,\r\n\t\tcolor: 'rgba(0, 0, 0, 0.1)',\r\n\t\tlineWidth: 1,\r\n\t\tdrawBorder: true,\r\n\t\tdrawOnChartArea: true,\r\n\t\tdrawTicks: true,\r\n\t\ttickMarkLength: 10,\r\n\t\tzeroLineWidth: 1,\r\n\t\tzeroLineColor: 'rgba(0,0,0,0.25)',\r\n\t\tzeroLineBorderDash: [],\r\n\t\tzeroLineBorderDashOffset: 0.0,\r\n\t\toffsetGridLines: false,\r\n\t\tborderDash: [],\r\n\t\tborderDashOffset: 0.0\r\n\t},\r\n\r\n\t// scale label\r\n\tscaleLabel: {\r\n\t\t// display property\r\n\t\tdisplay: false,\r\n\r\n\t\t// actual label\r\n\t\tlabelString: '',\r\n\r\n\t\t// line height\r\n\t\tlineHeight: 1.2,\r\n\r\n\t\t// top/bottom padding\r\n\t\tpadding: {\r\n\t\t\ttop: 4,\r\n\t\t\tbottom: 4\r\n\t\t}\r\n\t},\r\n\r\n\t// label settings\r\n\tticks: {\r\n\t\tbeginAtZero: false,\r\n\t\tminRotation: 0,\r\n\t\tmaxRotation: 50,\r\n\t\tmirror: false,\r\n\t\tpadding: 0,\r\n\t\treverse: false,\r\n\t\tdisplay: true,\r\n\t\tautoSkip: true,\r\n\t\tautoSkipPadding: 0,\r\n\t\tlabelOffset: 0,\r\n\t\t// We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\r\n\t\tcallback: Ticks.formatters.values,\r\n\t\tminor: {},\r\n\t\tmajor: {}\r\n\t}\r\n});\r\n\r\nfunction labelsFromTicks(ticks) {\r\n\tvar labels = [];\r\n\tvar i, ilen;\r\n\r\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\tlabels.push(ticks[i].label);\r\n\t}\r\n\r\n\treturn labels;\r\n}\r\n\r\nfunction getLineValue(scale, index, offsetGridLines) {\r\n\tvar lineValue = scale.getPixelForTick(index);\r\n\r\n\tif (offsetGridLines) {\r\n\t\tif (index === 0) {\r\n\t\t\tlineValue -= (scale.getPixelForTick(1) - lineValue) / 2;\r\n\t\t} else {\r\n\t\t\tlineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2;\r\n\t\t}\r\n\t}\r\n\treturn lineValue;\r\n}\r\n\r\nfunction computeTextSize(context, tick, font) {\r\n\treturn helpers.isArray(tick) ?\r\n\t\thelpers.longestText(context, font, tick) :\r\n\t\tcontext.measureText(tick).width;\r\n}\r\n\r\nfunction parseFontOptions(options) {\r\n\tvar valueOrDefault = helpers.valueOrDefault;\r\n\tvar globalDefaults = defaults.global;\r\n\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\r\n\tvar style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle);\r\n\tvar family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily);\r\n\r\n\treturn {\r\n\t\tsize: size,\r\n\t\tstyle: style,\r\n\t\tfamily: family,\r\n\t\tfont: helpers.fontString(size, style, family)\r\n\t};\r\n}\r\n\r\nfunction parseLineHeight(options) {\r\n\treturn helpers.options.toLineHeight(\r\n\t\thelpers.valueOrDefault(options.lineHeight, 1.2),\r\n\t\thelpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize));\r\n}\r\n\r\nmodule.exports = Element.extend({\r\n\t/**\r\n\t * Get the padding needed for the scale\r\n\t * @method getPadding\r\n\t * @private\r\n\t * @returns {Padding} the necessary padding\r\n\t */\r\n\tgetPadding: function() {\r\n\t\tvar me = this;\r\n\t\treturn {\r\n\t\t\tleft: me.paddingLeft || 0,\r\n\t\t\ttop: me.paddingTop || 0,\r\n\t\t\tright: me.paddingRight || 0,\r\n\t\t\tbottom: me.paddingBottom || 0\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the scale tick objects ({label, major})\r\n\t * @since 2.7\r\n\t */\r\n\tgetTicks: function() {\r\n\t\treturn this._ticks;\r\n\t},\r\n\r\n\t// These methods are ordered by lifecyle. Utilities then follow.\r\n\t// Any function defined here is inherited by all scale types.\r\n\t// Any function can be extended by the scale type\r\n\r\n\tmergeTicksOptions: function() {\r\n\t\tvar ticks = this.options.ticks;\r\n\t\tif (ticks.minor === false) {\r\n\t\t\tticks.minor = {\r\n\t\t\t\tdisplay: false\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (ticks.major === false) {\r\n\t\t\tticks.major = {\r\n\t\t\t\tdisplay: false\r\n\t\t\t};\r\n\t\t}\r\n\t\tfor (var key in ticks) {\r\n\t\t\tif (key !== 'major' && key !== 'minor') {\r\n\t\t\t\tif (typeof ticks.minor[key] === 'undefined') {\r\n\t\t\t\t\tticks.minor[key] = ticks[key];\r\n\t\t\t\t}\r\n\t\t\t\tif (typeof ticks.major[key] === 'undefined') {\r\n\t\t\t\t\tticks.major[key] = ticks[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tbeforeUpdate: function() {\r\n\t\thelpers.callback(this.options.beforeUpdate, [this]);\r\n\t},\r\n\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\t\tvar i, ilen, labels, label, ticks, tick;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = helpers.extend({\r\n\t\t\tleft: 0,\r\n\t\t\tright: 0,\r\n\t\t\ttop: 0,\r\n\t\t\tbottom: 0\r\n\t\t}, margins);\r\n\t\tme.longestTextCache = me.longestTextCache || {};\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\r\n\t\t// Data min/max\r\n\t\tme.beforeDataLimits();\r\n\t\tme.determineDataLimits();\r\n\t\tme.afterDataLimits();\r\n\r\n\t\t// Ticks - `this.ticks` is now DEPRECATED!\r\n\t\t// Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\r\n\t\t// and must not be accessed directly from outside this class. `this.ticks` being\r\n\t\t// around for long time and not marked as private, we can't change its structure\r\n\t\t// without unexpected breaking changes. If you need to access the scale ticks,\r\n\t\t// use scale.getTicks() instead.\r\n\r\n\t\tme.beforeBuildTicks();\r\n\r\n\t\t// New implementations should return an array of objects but for BACKWARD COMPAT,\r\n\t\t// we still support no return (`this.ticks` internally set by calling this method).\r\n\t\tticks = me.buildTicks() || [];\r\n\r\n\t\tme.afterBuildTicks();\r\n\r\n\t\tme.beforeTickToLabelConversion();\r\n\r\n\t\t// New implementations should return the formatted tick labels but for BACKWARD\r\n\t\t// COMPAT, we still support no return (`this.ticks` internally changed by calling\r\n\t\t// this method and supposed to contain only string values).\r\n\t\tlabels = me.convertTicksToLabels(ticks) || me.ticks;\r\n\r\n\t\tme.afterTickToLabelConversion();\r\n\r\n\t\tme.ticks = labels; // BACKWARD COMPATIBILITY\r\n\r\n\t\t// IMPORTANT: from this point, we consider that `this.ticks` will NEVER change!\r\n\r\n\t\t// BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\r\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\r\n\t\t\tlabel = labels[i];\r\n\t\t\ttick = ticks[i];\r\n\t\t\tif (!tick) {\r\n\t\t\t\tticks.push(tick = {\r\n\t\t\t\t\tlabel: label,\r\n\t\t\t\t\tmajor: false\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\ttick.label = label;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme._ticks = ticks;\r\n\r\n\t\t// Tick Rotation\r\n\t\tme.beforeCalculateTickRotation();\r\n\t\tme.calculateTickRotation();\r\n\t\tme.afterCalculateTickRotation();\r\n\t\t// Fit\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\t\t//\r\n\t\tme.afterUpdate();\r\n\r\n\t\treturn me.minSize;\r\n\r\n\t},\r\n\tafterUpdate: function() {\r\n\t\thelpers.callback(this.options.afterUpdate, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: function() {\r\n\t\thelpers.callback(this.options.beforeSetDimensions, [this]);\r\n\t},\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\t},\r\n\tafterSetDimensions: function() {\r\n\t\thelpers.callback(this.options.afterSetDimensions, [this]);\r\n\t},\r\n\r\n\t// Data limits\r\n\tbeforeDataLimits: function() {\r\n\t\thelpers.callback(this.options.beforeDataLimits, [this]);\r\n\t},\r\n\tdetermineDataLimits: helpers.noop,\r\n\tafterDataLimits: function() {\r\n\t\thelpers.callback(this.options.afterDataLimits, [this]);\r\n\t},\r\n\r\n\t//\r\n\tbeforeBuildTicks: function() {\r\n\t\thelpers.callback(this.options.beforeBuildTicks, [this]);\r\n\t},\r\n\tbuildTicks: helpers.noop,\r\n\tafterBuildTicks: function() {\r\n\t\thelpers.callback(this.options.afterBuildTicks, [this]);\r\n\t},\r\n\r\n\tbeforeTickToLabelConversion: function() {\r\n\t\thelpers.callback(this.options.beforeTickToLabelConversion, [this]);\r\n\t},\r\n\tconvertTicksToLabels: function() {\r\n\t\tvar me = this;\r\n\t\t// Convert ticks to strings\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tme.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\r\n\t},\r\n\tafterTickToLabelConversion: function() {\r\n\t\thelpers.callback(this.options.afterTickToLabelConversion, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeCalculateTickRotation: function() {\r\n\t\thelpers.callback(this.options.beforeCalculateTickRotation, [this]);\r\n\t},\r\n\tcalculateTickRotation: function() {\r\n\t\tvar me = this;\r\n\t\tvar context = me.ctx;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar labels = labelsFromTicks(me._ticks);\r\n\r\n\t\t// Get the width of each grid by calculating the difference\r\n\t\t// between x offsets between 0 and 1.\r\n\t\tvar tickFont = parseFontOptions(tickOpts);\r\n\t\tcontext.font = tickFont.font;\r\n\r\n\t\tvar labelRotation = tickOpts.minRotation || 0;\r\n\r\n\t\tif (labels.length && me.options.display && me.isHorizontal()) {\r\n\t\t\tvar originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache);\r\n\t\t\tvar labelWidth = originalLabelWidth;\r\n\t\t\tvar cosRotation, sinRotation;\r\n\r\n\t\t\t// Allow 3 pixels x2 padding either side for label readability\r\n\t\t\tvar tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6;\r\n\r\n\t\t\t// Max label rotation can be set or default to 90 - also act as a loop counter\r\n\t\t\twhile (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) {\r\n\t\t\t\tvar angleRadians = helpers.toRadians(labelRotation);\r\n\t\t\t\tcosRotation = Math.cos(angleRadians);\r\n\t\t\t\tsinRotation = Math.sin(angleRadians);\r\n\r\n\t\t\t\tif (sinRotation * originalLabelWidth > me.maxHeight) {\r\n\t\t\t\t\t// go back one step\r\n\t\t\t\t\tlabelRotation--;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlabelRotation++;\r\n\t\t\t\tlabelWidth = cosRotation * originalLabelWidth;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.labelRotation = labelRotation;\r\n\t},\r\n\tafterCalculateTickRotation: function() {\r\n\t\thelpers.callback(this.options.afterCalculateTickRotation, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeFit: function() {\r\n\t\thelpers.callback(this.options.beforeFit, [this]);\r\n\t},\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\t// Reset\r\n\t\tvar minSize = me.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\r\n\t\tvar labels = labelsFromTicks(me._ticks);\r\n\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\t\tvar scaleLabelOpts = opts.scaleLabel;\r\n\t\tvar gridLineOpts = opts.gridLines;\r\n\t\tvar display = opts.display;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\tvar tickFont = parseFontOptions(tickOpts);\r\n\t\tvar tickMarkLength = opts.gridLines.tickMarkLength;\r\n\r\n\t\t// Width\r\n\t\tif (isHorizontal) {\r\n\t\t\t// subtract the margins to line up with the chartArea if we are a full width scale\r\n\t\t\tminSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth;\r\n\t\t} else {\r\n\t\t\tminSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\r\n\t\t}\r\n\r\n\t\t// height\r\n\t\tif (isHorizontal) {\r\n\t\t\tminSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\r\n\t\t} else {\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t}\r\n\r\n\t\t// Are we showing a title for the scale?\r\n\t\tif (scaleLabelOpts.display && display) {\r\n\t\t\tvar scaleLabelLineHeight = parseLineHeight(scaleLabelOpts);\r\n\t\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding);\r\n\t\t\tvar deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tminSize.height += deltaHeight;\r\n\t\t\t} else {\r\n\t\t\t\tminSize.width += deltaHeight;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Don't bother fitting the ticks if we are not showing them\r\n\t\tif (tickOpts.display && display) {\r\n\t\t\tvar largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache);\r\n\t\t\tvar tallestLabelHeightInLines = helpers.numberOfLabelLines(labels);\r\n\t\t\tvar lineSpace = tickFont.size * 0.5;\r\n\t\t\tvar tickPadding = me.options.ticks.padding;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\t// A horizontal axis is more constrained by the height.\r\n\t\t\t\tme.longestLabelWidth = largestTextWidth;\r\n\r\n\t\t\t\tvar angleRadians = helpers.toRadians(me.labelRotation);\r\n\t\t\t\tvar cosRotation = Math.cos(angleRadians);\r\n\t\t\t\tvar sinRotation = Math.sin(angleRadians);\r\n\r\n\t\t\t\t// TODO - improve this calculation\r\n\t\t\t\tvar labelHeight = (sinRotation * largestTextWidth)\r\n\t\t\t\t\t+ (tickFont.size * tallestLabelHeightInLines)\r\n\t\t\t\t\t+ (lineSpace * (tallestLabelHeightInLines - 1))\r\n\t\t\t\t\t+ lineSpace; // padding\r\n\r\n\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\r\n\r\n\t\t\t\tme.ctx.font = tickFont.font;\r\n\t\t\t\tvar firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font);\r\n\t\t\t\tvar lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font);\r\n\r\n\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\r\n\t\t\t\t// which means that the right padding is dominated by the font height\r\n\t\t\t\tif (me.labelRotation !== 0) {\r\n\t\t\t\t\tme.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges\r\n\t\t\t\t\tme.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges\r\n\t\t\t\t\tme.paddingRight = lastLabelWidth / 2 + 3;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// A vertical axis is more constrained by the width. Labels are the\r\n\t\t\t\t// dominant factor here, so get that length first and account for padding\r\n\t\t\t\tif (tickOpts.mirror) {\r\n\t\t\t\t\tlargestTextWidth = 0;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// use lineSpace for consistency with horizontal axis\r\n\t\t\t\t\t// tickPadding is not implemented for horizontal\r\n\t\t\t\t\tlargestTextWidth += tickPadding + lineSpace;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth);\r\n\r\n\t\t\t\tme.paddingTop = tickFont.size / 2;\r\n\t\t\t\tme.paddingBottom = tickFont.size / 2;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.handleMargins();\r\n\r\n\t\tme.width = minSize.width;\r\n\t\tme.height = minSize.height;\r\n\t},\r\n\r\n\t/**\r\n\t * Handle margins and padding interactions\r\n\t * @private\r\n\t */\r\n\thandleMargins: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.margins) {\r\n\t\t\tme.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0);\r\n\t\t\tme.paddingTop = Math.max(me.paddingTop - me.margins.top, 0);\r\n\t\t\tme.paddingRight = Math.max(me.paddingRight - me.margins.right, 0);\r\n\t\t\tme.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0);\r\n\t\t}\r\n\t},\r\n\r\n\tafterFit: function() {\r\n\t\thelpers.callback(this.options.afterFit, [this]);\r\n\t},\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\r\n\t},\r\n\tisFullWidth: function() {\r\n\t\treturn (this.options.fullWidth);\r\n\t},\r\n\r\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\r\n\tgetRightValue: function(rawValue) {\r\n\t\t// Null and undefined values first\r\n\t\tif (helpers.isNullOrUndef(rawValue)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\t// isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\r\n\t\tif (typeof rawValue === 'number' && !isFinite(rawValue)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\t// If it is in fact an object, dive in one more level\r\n\t\tif (rawValue) {\r\n\t\t\tif (this.isHorizontal()) {\r\n\t\t\t\tif (rawValue.x !== undefined) {\r\n\t\t\t\t\treturn this.getRightValue(rawValue.x);\r\n\t\t\t\t}\r\n\t\t\t} else if (rawValue.y !== undefined) {\r\n\t\t\t\treturn this.getRightValue(rawValue.y);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Value is good, return it\r\n\t\treturn rawValue;\r\n\t},\r\n\r\n\t/**\r\n\t * Used to get the value to display in the tooltip for the data at the given index\r\n\t * @param index\r\n\t * @param datasetIndex\r\n\t */\r\n\tgetLabelForIndex: helpers.noop,\r\n\r\n\t/**\r\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t * @param value\r\n\t * @param index\r\n\t * @param datasetIndex\r\n\t */\r\n\tgetPixelForValue: helpers.noop,\r\n\r\n\t/**\r\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t * @param pixel\r\n\t */\r\n\tgetValueForPixel: helpers.noop,\r\n\r\n\t/**\r\n\t * Returns the location of the tick at the given index\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar offset = me.options.offset;\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\r\n\t\t\tvar tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\r\n\t\t\tvar pixel = (tickWidth * index) + me.paddingLeft;\r\n\r\n\t\t\tif (offset) {\r\n\t\t\t\tpixel += tickWidth / 2;\r\n\t\t\t}\r\n\r\n\t\t\tvar finalVal = me.left + Math.round(pixel);\r\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\r\n\t\t\treturn finalVal;\r\n\t\t}\r\n\t\tvar innerHeight = me.height - (me.paddingTop + me.paddingBottom);\r\n\t\treturn me.top + (index * (innerHeight / (me._ticks.length - 1)));\r\n\t},\r\n\r\n\t/**\r\n\t * Utility for getting the pixel location of a percentage of scale\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetPixelForDecimal: function(decimal) {\r\n\t\tvar me = this;\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\r\n\t\t\tvar valueOffset = (innerWidth * decimal) + me.paddingLeft;\r\n\r\n\t\t\tvar finalVal = me.left + Math.round(valueOffset);\r\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\r\n\t\t\treturn finalVal;\r\n\t\t}\r\n\t\treturn me.top + (decimal * me.height);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the pixel for the minimum chart value\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetBasePixel: function() {\r\n\t\treturn this.getPixelForValue(this.getBaseValue());\r\n\t},\r\n\r\n\tgetBaseValue: function() {\r\n\t\tvar me = this;\r\n\t\tvar min = me.min;\r\n\t\tvar max = me.max;\r\n\r\n\t\treturn me.beginAtZero ? 0 :\r\n\t\t\tmin < 0 && max < 0 ? max :\r\n\t\t\tmin > 0 && max > 0 ? min :\r\n\t\t\t0;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a subset of ticks to be plotted to avoid overlapping labels.\r\n\t * @private\r\n\t */\r\n\t_autoSkip: function(ticks) {\r\n\t\tvar skipRatio;\r\n\t\tvar me = this;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tvar optionTicks = me.options.ticks.minor;\r\n\t\tvar tickCount = ticks.length;\r\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\r\n\t\tvar cosRotation = Math.cos(labelRotationRadians);\r\n\t\tvar longestRotatedLabel = me.longestLabelWidth * cosRotation;\r\n\t\tvar result = [];\r\n\t\tvar i, tick, shouldSkip;\r\n\r\n\t\t// figure out the maximum number of gridlines to show\r\n\t\tvar maxTicks;\r\n\t\tif (optionTicks.maxTicksLimit) {\r\n\t\t\tmaxTicks = optionTicks.maxTicksLimit;\r\n\t\t}\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\tskipRatio = false;\r\n\r\n\t\t\tif ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) {\r\n\t\t\t\tskipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight)));\r\n\t\t\t}\r\n\r\n\t\t\t// if they defined a max number of optionTicks,\r\n\t\t\t// increase skipRatio until that number is met\r\n\t\t\tif (maxTicks && tickCount > maxTicks) {\r\n\t\t\t\tskipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < tickCount; i++) {\r\n\t\t\ttick = ticks[i];\r\n\r\n\t\t\t// Since we always show the last tick,we need may need to hide the last shown one before\r\n\t\t\tshouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount);\r\n\t\t\tif (shouldSkip && i !== tickCount - 1) {\r\n\t\t\t\t// leave tick in place but make sure it's not displayed (#4635)\r\n\t\t\t\tdelete tick.label;\r\n\t\t\t}\r\n\t\t\tresult.push(tick);\r\n\t\t}\r\n\t\treturn result;\r\n\t},\r\n\r\n\t// Actually draw the scale on the canvas\r\n\t// @param {rectangle} chartArea : the area of the chart to draw full grid lines on\r\n\tdraw: function(chartArea) {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tif (!options.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar context = me.ctx;\r\n\t\tvar globalDefaults = defaults.global;\r\n\t\tvar optionTicks = options.ticks.minor;\r\n\t\tvar optionMajorTicks = options.ticks.major || optionTicks;\r\n\t\tvar gridLines = options.gridLines;\r\n\t\tvar scaleLabel = options.scaleLabel;\r\n\r\n\t\tvar isRotated = me.labelRotation !== 0;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\tvar ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks();\r\n\t\tvar tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor);\r\n\t\tvar tickFont = parseFontOptions(optionTicks);\r\n\t\tvar majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor);\r\n\t\tvar majorTickFont = parseFontOptions(optionMajorTicks);\r\n\r\n\t\tvar tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0;\r\n\r\n\t\tvar scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor);\r\n\t\tvar scaleLabelFont = parseFontOptions(scaleLabel);\r\n\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding);\r\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\r\n\r\n\t\tvar itemsToDraw = [];\r\n\r\n\t\tvar axisWidth = me.options.gridLines.lineWidth;\r\n\t\tvar xTickStart = options.position === 'right' ? me.left : me.right - axisWidth - tl;\r\n\t\tvar xTickEnd = options.position === 'right' ? me.left + tl : me.right;\r\n\t\tvar yTickStart = options.position === 'bottom' ? me.top + axisWidth : me.bottom - tl - axisWidth;\r\n\t\tvar yTickEnd = options.position === 'bottom' ? me.top + axisWidth + tl : me.bottom + axisWidth;\r\n\r\n\t\thelpers.each(ticks, function(tick, index) {\r\n\t\t\t// autoskipper skipped this tick (#4635)\r\n\t\t\tif (helpers.isNullOrUndef(tick.label)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar label = tick.label;\r\n\t\t\tvar lineWidth, lineColor, borderDash, borderDashOffset;\r\n\t\t\tif (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) {\r\n\t\t\t\t// Draw the first index specially\r\n\t\t\t\tlineWidth = gridLines.zeroLineWidth;\r\n\t\t\t\tlineColor = gridLines.zeroLineColor;\r\n\t\t\t\tborderDash = gridLines.zeroLineBorderDash;\r\n\t\t\t\tborderDashOffset = gridLines.zeroLineBorderDashOffset;\r\n\t\t\t} else {\r\n\t\t\t\tlineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index);\r\n\t\t\t\tlineColor = helpers.valueAtIndexOrDefault(gridLines.color, index);\r\n\t\t\t\tborderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash);\r\n\t\t\t\tborderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset);\r\n\t\t\t}\r\n\r\n\t\t\t// Common properties\r\n\t\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY;\r\n\t\t\tvar textAlign = 'middle';\r\n\t\t\tvar textBaseline = 'middle';\r\n\t\t\tvar tickPadding = optionTicks.padding;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tvar labelYOffset = tl + tickPadding;\r\n\r\n\t\t\t\tif (options.position === 'bottom') {\r\n\t\t\t\t\t// bottom\r\n\t\t\t\t\ttextBaseline = !isRotated ? 'top' : 'middle';\r\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'right';\r\n\t\t\t\t\tlabelY = me.top + labelYOffset;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// top\r\n\t\t\t\t\ttextBaseline = !isRotated ? 'bottom' : 'middle';\r\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'left';\r\n\t\t\t\t\tlabelY = me.bottom - labelYOffset;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\r\n\t\t\t\tif (xLineValue < me.left) {\r\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\r\n\t\t\t\t}\r\n\t\t\t\txLineValue += helpers.aliasPixel(lineWidth);\r\n\r\n\t\t\t\tlabelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option)\r\n\r\n\t\t\t\ttx1 = tx2 = x1 = x2 = xLineValue;\r\n\t\t\t\tty1 = yTickStart;\r\n\t\t\t\tty2 = yTickEnd;\r\n\t\t\t\ty1 = chartArea.top;\r\n\t\t\t\ty2 = chartArea.bottom + axisWidth;\r\n\t\t\t} else {\r\n\t\t\t\tvar isLeft = options.position === 'left';\r\n\t\t\t\tvar labelXOffset;\r\n\r\n\t\t\t\tif (optionTicks.mirror) {\r\n\t\t\t\t\ttextAlign = isLeft ? 'left' : 'right';\r\n\t\t\t\t\tlabelXOffset = tickPadding;\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttextAlign = isLeft ? 'right' : 'left';\r\n\t\t\t\t\tlabelXOffset = tl + tickPadding;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlabelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset;\r\n\r\n\t\t\t\tvar yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\r\n\t\t\t\tif (yLineValue < me.top) {\r\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\r\n\t\t\t\t}\r\n\t\t\t\tyLineValue += helpers.aliasPixel(lineWidth);\r\n\r\n\t\t\t\tlabelY = me.getPixelForTick(index) + optionTicks.labelOffset;\r\n\r\n\t\t\t\ttx1 = xTickStart;\r\n\t\t\t\ttx2 = xTickEnd;\r\n\t\t\t\tx1 = chartArea.left;\r\n\t\t\t\tx2 = chartArea.right + axisWidth;\r\n\t\t\t\tty1 = ty2 = y1 = y2 = yLineValue;\r\n\t\t\t}\r\n\r\n\t\t\titemsToDraw.push({\r\n\t\t\t\ttx1: tx1,\r\n\t\t\t\tty1: ty1,\r\n\t\t\t\ttx2: tx2,\r\n\t\t\t\tty2: ty2,\r\n\t\t\t\tx1: x1,\r\n\t\t\t\ty1: y1,\r\n\t\t\t\tx2: x2,\r\n\t\t\t\ty2: y2,\r\n\t\t\t\tlabelX: labelX,\r\n\t\t\t\tlabelY: labelY,\r\n\t\t\t\tglWidth: lineWidth,\r\n\t\t\t\tglColor: lineColor,\r\n\t\t\t\tglBorderDash: borderDash,\r\n\t\t\t\tglBorderDashOffset: borderDashOffset,\r\n\t\t\t\trotation: -1 * labelRotationRadians,\r\n\t\t\t\tlabel: label,\r\n\t\t\t\tmajor: tick.major,\r\n\t\t\t\ttextBaseline: textBaseline,\r\n\t\t\t\ttextAlign: textAlign\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t// Draw all of the tick labels, tick marks, and grid lines at the correct places\r\n\t\thelpers.each(itemsToDraw, function(itemToDraw) {\r\n\t\t\tif (gridLines.display) {\r\n\t\t\t\tcontext.save();\r\n\t\t\t\tcontext.lineWidth = itemToDraw.glWidth;\r\n\t\t\t\tcontext.strokeStyle = itemToDraw.glColor;\r\n\t\t\t\tif (context.setLineDash) {\r\n\t\t\t\t\tcontext.setLineDash(itemToDraw.glBorderDash);\r\n\t\t\t\t\tcontext.lineDashOffset = itemToDraw.glBorderDashOffset;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontext.beginPath();\r\n\r\n\t\t\t\tif (gridLines.drawTicks) {\r\n\t\t\t\t\tcontext.moveTo(itemToDraw.tx1, itemToDraw.ty1);\r\n\t\t\t\t\tcontext.lineTo(itemToDraw.tx2, itemToDraw.ty2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (gridLines.drawOnChartArea) {\r\n\t\t\t\t\tcontext.moveTo(itemToDraw.x1, itemToDraw.y1);\r\n\t\t\t\t\tcontext.lineTo(itemToDraw.x2, itemToDraw.y2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontext.stroke();\r\n\t\t\t\tcontext.restore();\r\n\t\t\t}\r\n\r\n\t\t\tif (optionTicks.display) {\r\n\t\t\t\t// Make sure we draw text in the correct color and font\r\n\t\t\t\tcontext.save();\r\n\t\t\t\tcontext.translate(itemToDraw.labelX, itemToDraw.labelY);\r\n\t\t\t\tcontext.rotate(itemToDraw.rotation);\r\n\t\t\t\tcontext.font = itemToDraw.major ? majorTickFont.font : tickFont.font;\r\n\t\t\t\tcontext.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor;\r\n\t\t\t\tcontext.textBaseline = itemToDraw.textBaseline;\r\n\t\t\t\tcontext.textAlign = itemToDraw.textAlign;\r\n\r\n\t\t\t\tvar label = itemToDraw.label;\r\n\t\t\t\tif (helpers.isArray(label)) {\r\n\t\t\t\t\tvar lineCount = label.length;\r\n\t\t\t\t\tvar lineHeight = tickFont.size * 1.5;\r\n\t\t\t\t\tvar y = me.isHorizontal() ? 0 : -lineHeight * (lineCount - 1) / 2;\r\n\r\n\t\t\t\t\tfor (var i = 0; i < lineCount; ++i) {\r\n\t\t\t\t\t\t// We just make sure the multiline element is a string here..\r\n\t\t\t\t\t\tcontext.fillText('' + label[i], 0, y);\r\n\t\t\t\t\t\t// apply same lineSpacing as calculated @ L#320\r\n\t\t\t\t\t\ty += lineHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontext.fillText(label, 0, 0);\r\n\t\t\t\t}\r\n\t\t\t\tcontext.restore();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (scaleLabel.display) {\r\n\t\t\t// Draw the scale label\r\n\t\t\tvar scaleLabelX;\r\n\t\t\tvar scaleLabelY;\r\n\t\t\tvar rotation = 0;\r\n\t\t\tvar halfLineHeight = parseLineHeight(scaleLabel) / 2;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tscaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width\r\n\t\t\t\tscaleLabelY = options.position === 'bottom'\r\n\t\t\t\t\t? me.bottom - halfLineHeight - scaleLabelPadding.bottom\r\n\t\t\t\t\t: me.top + halfLineHeight + scaleLabelPadding.top;\r\n\t\t\t} else {\r\n\t\t\t\tvar isLeft = options.position === 'left';\r\n\t\t\t\tscaleLabelX = isLeft\r\n\t\t\t\t\t? me.left + halfLineHeight + scaleLabelPadding.top\r\n\t\t\t\t\t: me.right - halfLineHeight - scaleLabelPadding.top;\r\n\t\t\t\tscaleLabelY = me.top + ((me.bottom - me.top) / 2);\r\n\t\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\r\n\t\t\t}\r\n\r\n\t\t\tcontext.save();\r\n\t\t\tcontext.translate(scaleLabelX, scaleLabelY);\r\n\t\t\tcontext.rotate(rotation);\r\n\t\t\tcontext.textAlign = 'center';\r\n\t\t\tcontext.textBaseline = 'middle';\r\n\t\t\tcontext.fillStyle = scaleLabelFontColor; // render in correct colour\r\n\t\t\tcontext.font = scaleLabelFont.font;\r\n\t\t\tcontext.fillText(scaleLabel.labelString, 0, 0);\r\n\t\t\tcontext.restore();\r\n\t\t}\r\n\r\n\t\tif (gridLines.drawBorder) {\r\n\t\t\t// Draw the line at the edge of the axis\r\n\t\t\tcontext.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0);\r\n\t\t\tcontext.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0);\r\n\t\t\tvar x1 = me.left;\r\n\t\t\tvar x2 = me.right + axisWidth;\r\n\t\t\tvar y1 = me.top;\r\n\t\t\tvar y2 = me.bottom + axisWidth;\r\n\r\n\t\t\tvar aliasPixel = helpers.aliasPixel(context.lineWidth);\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\ty1 = y2 = options.position === 'top' ? me.bottom : me.top;\r\n\t\t\t\ty1 += aliasPixel;\r\n\t\t\t\ty2 += aliasPixel;\r\n\t\t\t} else {\r\n\t\t\t\tx1 = x2 = options.position === 'left' ? me.right : me.left;\r\n\t\t\t\tx1 += aliasPixel;\r\n\t\t\t\tx2 += aliasPixel;\r\n\t\t\t}\r\n\r\n\t\t\tcontext.beginPath();\r\n\t\t\tcontext.moveTo(x1, y1);\r\n\t\t\tcontext.lineTo(x2, y2);\r\n\t\t\tcontext.stroke();\r\n\t\t}\r\n\t}\r\n});\r\n\r\n},{\"26\":26,\"27\":27,\"35\":35,\"46\":46}],34:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar layouts = require(31);\r\n\r\nmodule.exports = {\r\n\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\r\n\t// use the new chart options to grab the correct scale\r\n\tconstructors: {},\r\n\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\r\n\t// old browsers\r\n\r\n\t// Scale config defaults\r\n\tdefaults: {},\r\n\tregisterScaleType: function(type, scaleConstructor, scaleDefaults) {\r\n\t\tthis.constructors[type] = scaleConstructor;\r\n\t\tthis.defaults[type] = helpers.clone(scaleDefaults);\r\n\t},\r\n\tgetScaleConstructor: function(type) {\r\n\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\r\n\t},\r\n\tgetScaleDefaults: function(type) {\r\n\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\r\n\t\treturn this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {};\r\n\t},\r\n\tupdateScaleDefaults: function(type, additions) {\r\n\t\tvar me = this;\r\n\t\tif (me.defaults.hasOwnProperty(type)) {\r\n\t\t\tme.defaults[type] = helpers.extend(me.defaults[type], additions);\r\n\t\t}\r\n\t},\r\n\taddScalesToLayout: function(chart) {\r\n\t\t// Adds each scale to the chart.boxes array to be sized accordingly\r\n\t\thelpers.each(chart.scales, function(scale) {\r\n\t\t\t// Set ILayoutItem parameters for backwards compatibility\r\n\t\t\tscale.fullWidth = scale.options.fullWidth;\r\n\t\t\tscale.position = scale.options.position;\r\n\t\t\tscale.weight = scale.options.weight;\r\n\t\t\tlayouts.addBox(chart, scale);\r\n\t\t});\r\n\t}\r\n};\r\n\r\n},{\"26\":26,\"31\":31,\"46\":46}],35:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\n/**\r\n * Namespace to hold static tick generation functions\r\n * @namespace Chart.Ticks\r\n */\r\nmodule.exports = {\r\n\t/**\r\n\t * Namespace to hold formatters for different types of ticks\r\n\t * @namespace Chart.Ticks.formatters\r\n\t */\r\n\tformatters: {\r\n\t\t/**\r\n\t\t * Formatter for value labels\r\n\t\t * @method Chart.Ticks.formatters.values\r\n\t\t * @param value the value to display\r\n\t\t * @return {String|Array} the label to display\r\n\t\t */\r\n\t\tvalues: function(value) {\r\n\t\t\treturn helpers.isArray(value) ? value : '' + value;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Formatter for linear numeric ticks\r\n\t\t * @method Chart.Ticks.formatters.linear\r\n\t\t * @param tickValue {Number} the value to be formatted\r\n\t\t * @param index {Number} the position of the tickValue parameter in the ticks array\r\n\t\t * @param ticks {Array} the list of ticks being converted\r\n\t\t * @return {String} string representation of the tickValue parameter\r\n\t\t */\r\n\t\tlinear: function(tickValue, index, ticks) {\r\n\t\t\t// If we have lots of ticks, don't use the ones\r\n\t\t\tvar delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\r\n\r\n\t\t\t// If we have a number like 2.5 as the delta, figure out how many decimal places we need\r\n\t\t\tif (Math.abs(delta) > 1) {\r\n\t\t\t\tif (tickValue !== Math.floor(tickValue)) {\r\n\t\t\t\t\t// not an integer\r\n\t\t\t\t\tdelta = tickValue - Math.floor(tickValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar logDelta = helpers.log10(Math.abs(delta));\r\n\t\t\tvar tickString = '';\r\n\r\n\t\t\tif (tickValue !== 0) {\r\n\t\t\t\tvar maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\r\n\t\t\t\tif (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation\r\n\t\t\t\t\tvar logTick = helpers.log10(Math.abs(tickValue));\r\n\t\t\t\t\ttickString = tickValue.toExponential(Math.floor(logTick) - Math.floor(logDelta));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\r\n\t\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\r\n\t\t\t\t\ttickString = tickValue.toFixed(numDecimal);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\ttickString = '0'; // never show decimal places for 0\r\n\t\t\t}\r\n\r\n\t\t\treturn tickString;\r\n\t\t},\r\n\r\n\t\tlogarithmic: function(tickValue, index, ticks) {\r\n\t\t\tvar remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue))));\r\n\r\n\t\t\tif (tickValue === 0) {\r\n\t\t\t\treturn '0';\r\n\t\t\t} else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\r\n\t\t\t\treturn tickValue.toExponential();\r\n\t\t\t}\r\n\t\t\treturn '';\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"46\":46}],36:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('global', {\r\n\ttooltips: {\r\n\t\tenabled: true,\r\n\t\tcustom: null,\r\n\t\tmode: 'nearest',\r\n\t\tposition: 'average',\r\n\t\tintersect: true,\r\n\t\tbackgroundColor: 'rgba(0,0,0,0.8)',\r\n\t\ttitleFontStyle: 'bold',\r\n\t\ttitleSpacing: 2,\r\n\t\ttitleMarginBottom: 6,\r\n\t\ttitleFontColor: '#fff',\r\n\t\ttitleAlign: 'left',\r\n\t\tbodySpacing: 2,\r\n\t\tbodyFontColor: '#fff',\r\n\t\tbodyAlign: 'left',\r\n\t\tfooterFontStyle: 'bold',\r\n\t\tfooterSpacing: 2,\r\n\t\tfooterMarginTop: 6,\r\n\t\tfooterFontColor: '#fff',\r\n\t\tfooterAlign: 'left',\r\n\t\tyPadding: 6,\r\n\t\txPadding: 6,\r\n\t\tcaretPadding: 2,\r\n\t\tcaretSize: 5,\r\n\t\tcornerRadius: 6,\r\n\t\tmultiKeyBackground: '#fff',\r\n\t\tdisplayColors: true,\r\n\t\tborderColor: 'rgba(0,0,0,0)',\r\n\t\tborderWidth: 0,\r\n\t\tcallbacks: {\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeTitle: helpers.noop,\r\n\t\t\ttitle: function(tooltipItems, data) {\r\n\t\t\t\t// Pick first xLabel for now\r\n\t\t\t\tvar title = '';\r\n\t\t\t\tvar labels = data.labels;\r\n\t\t\t\tvar labelCount = labels ? labels.length : 0;\r\n\r\n\t\t\t\tif (tooltipItems.length > 0) {\r\n\t\t\t\t\tvar item = tooltipItems[0];\r\n\r\n\t\t\t\t\tif (item.xLabel) {\r\n\t\t\t\t\t\ttitle = item.xLabel;\r\n\t\t\t\t\t} else if (labelCount > 0 && item.index < labelCount) {\r\n\t\t\t\t\t\ttitle = labels[item.index];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn title;\r\n\t\t\t},\r\n\t\t\tafterTitle: helpers.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeBody: helpers.noop,\r\n\r\n\t\t\t// Args are: (tooltipItem, data)\r\n\t\t\tbeforeLabel: helpers.noop,\r\n\t\t\tlabel: function(tooltipItem, data) {\r\n\t\t\t\tvar label = data.datasets[tooltipItem.datasetIndex].label || '';\r\n\r\n\t\t\t\tif (label) {\r\n\t\t\t\t\tlabel += ': ';\r\n\t\t\t\t}\r\n\t\t\t\tlabel += tooltipItem.yLabel;\r\n\t\t\t\treturn label;\r\n\t\t\t},\r\n\t\t\tlabelColor: function(tooltipItem, chart) {\r\n\t\t\t\tvar meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\r\n\t\t\t\tvar activeElement = meta.data[tooltipItem.index];\r\n\t\t\t\tvar view = activeElement._view;\r\n\t\t\t\treturn {\r\n\t\t\t\t\tborderColor: view.borderColor,\r\n\t\t\t\t\tbackgroundColor: view.backgroundColor\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tlabelTextColor: function() {\r\n\t\t\t\treturn this._options.bodyFontColor;\r\n\t\t\t},\r\n\t\t\tafterLabel: helpers.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tafterBody: helpers.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeFooter: helpers.noop,\r\n\t\t\tfooter: helpers.noop,\r\n\t\t\tafterFooter: helpers.noop\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar positioners = {\r\n\t/**\r\n\t * Average mode places the tooltip at the average position of the elements shown\r\n\t * @function Chart.Tooltip.positioners.average\r\n\t * @param elements {ChartElement[]} the elements being displayed in the tooltip\r\n\t * @returns {Point} tooltip position\r\n\t */\r\n\taverage: function(elements) {\r\n\t\tif (!elements.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar i, len;\r\n\t\tvar x = 0;\r\n\t\tvar y = 0;\r\n\t\tvar count = 0;\r\n\r\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\r\n\t\t\tvar el = elements[i];\r\n\t\t\tif (el && el.hasValue()) {\r\n\t\t\t\tvar pos = el.tooltipPosition();\r\n\t\t\t\tx += pos.x;\r\n\t\t\t\ty += pos.y;\r\n\t\t\t\t++count;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tx: Math.round(x / count),\r\n\t\t\ty: Math.round(y / count)\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Gets the tooltip position nearest of the item nearest to the event position\r\n\t * @function Chart.Tooltip.positioners.nearest\r\n\t * @param elements {Chart.Element[]} the tooltip elements\r\n\t * @param eventPosition {Point} the position of the event in canvas coordinates\r\n\t * @returns {Point} the tooltip position\r\n\t */\r\n\tnearest: function(elements, eventPosition) {\r\n\t\tvar x = eventPosition.x;\r\n\t\tvar y = eventPosition.y;\r\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\r\n\t\tvar i, len, nearestElement;\r\n\r\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\r\n\t\t\tvar el = elements[i];\r\n\t\t\tif (el && el.hasValue()) {\r\n\t\t\t\tvar center = el.getCenterPoint();\r\n\t\t\t\tvar d = helpers.distanceBetweenPoints(eventPosition, center);\r\n\r\n\t\t\t\tif (d < minDistance) {\r\n\t\t\t\t\tminDistance = d;\r\n\t\t\t\t\tnearestElement = el;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (nearestElement) {\r\n\t\t\tvar tp = nearestElement.tooltipPosition();\r\n\t\t\tx = tp.x;\r\n\t\t\ty = tp.y;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tx: x,\r\n\t\t\ty: y\r\n\t\t};\r\n\t}\r\n};\r\n\r\n/**\r\n * Helper method to merge the opacity into a color\r\n */\r\nfunction mergeOpacity(colorString, opacity) {\r\n\tvar color = helpers.color(colorString);\r\n\treturn color.alpha(opacity * color.alpha()).rgbaString();\r\n}\r\n\r\n// Helper to push or concat based on if the 2nd parameter is an array or not\r\nfunction pushOrConcat(base, toPush) {\r\n\tif (toPush) {\r\n\t\tif (helpers.isArray(toPush)) {\r\n\t\t\t// base = base.concat(toPush);\r\n\t\t\tArray.prototype.push.apply(base, toPush);\r\n\t\t} else {\r\n\t\t\tbase.push(toPush);\r\n\t\t}\r\n\t}\r\n\r\n\treturn base;\r\n}\r\n\r\n/**\r\n * Returns array of strings split by newline\r\n * @param {String} value - The value to split by newline.\r\n * @returns {Array} value if newline present - Returned from String split() method\r\n * @function\r\n */\r\nfunction splitNewlines(str) {\r\n\tif ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\r\n\t\treturn str.split('\\n');\r\n\t}\r\n\treturn str;\r\n}\r\n\r\n\r\n// Private helper to create a tooltip item model\r\n// @param element : the chart element (point, arc, bar) to create the tooltip item for\r\n// @return : new tooltip item\r\nfunction createTooltipItem(element) {\r\n\tvar xScale = element._xScale;\r\n\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\r\n\tvar index = element._index;\r\n\tvar datasetIndex = element._datasetIndex;\r\n\r\n\treturn {\r\n\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tindex: index,\r\n\t\tdatasetIndex: datasetIndex,\r\n\t\tx: element._model.x,\r\n\t\ty: element._model.y\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the reset model for the tooltip\r\n * @param tooltipOpts {Object} the tooltip options\r\n */\r\nfunction getBaseModel(tooltipOpts) {\r\n\tvar globalDefaults = defaults.global;\r\n\tvar valueOrDefault = helpers.valueOrDefault;\r\n\r\n\treturn {\r\n\t\t// Positioning\r\n\t\txPadding: tooltipOpts.xPadding,\r\n\t\tyPadding: tooltipOpts.yPadding,\r\n\t\txAlign: tooltipOpts.xAlign,\r\n\t\tyAlign: tooltipOpts.yAlign,\r\n\r\n\t\t// Body\r\n\t\tbodyFontColor: tooltipOpts.bodyFontColor,\r\n\t\t_bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\r\n\t\t_bodyAlign: tooltipOpts.bodyAlign,\r\n\t\tbodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\r\n\t\tbodySpacing: tooltipOpts.bodySpacing,\r\n\r\n\t\t// Title\r\n\t\ttitleFontColor: tooltipOpts.titleFontColor,\r\n\t\t_titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\r\n\t\ttitleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\r\n\t\t_titleAlign: tooltipOpts.titleAlign,\r\n\t\ttitleSpacing: tooltipOpts.titleSpacing,\r\n\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\r\n\r\n\t\t// Footer\r\n\t\tfooterFontColor: tooltipOpts.footerFontColor,\r\n\t\t_footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\r\n\t\tfooterFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\r\n\t\t_footerAlign: tooltipOpts.footerAlign,\r\n\t\tfooterSpacing: tooltipOpts.footerSpacing,\r\n\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\r\n\r\n\t\t// Appearance\r\n\t\tcaretSize: tooltipOpts.caretSize,\r\n\t\tcornerRadius: tooltipOpts.cornerRadius,\r\n\t\tbackgroundColor: tooltipOpts.backgroundColor,\r\n\t\topacity: 0,\r\n\t\tlegendColorBackground: tooltipOpts.multiKeyBackground,\r\n\t\tdisplayColors: tooltipOpts.displayColors,\r\n\t\tborderColor: tooltipOpts.borderColor,\r\n\t\tborderWidth: tooltipOpts.borderWidth\r\n\t};\r\n}\r\n\r\n/**\r\n * Get the size of the tooltip\r\n */\r\nfunction getTooltipSize(tooltip, model) {\r\n\tvar ctx = tooltip._chart.ctx;\r\n\r\n\tvar height = model.yPadding * 2; // Tooltip Padding\r\n\tvar width = 0;\r\n\r\n\t// Count of all lines in the body\r\n\tvar body = model.body;\r\n\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\r\n\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\r\n\t}, 0);\r\n\tcombinedBodyLength += model.beforeBody.length + model.afterBody.length;\r\n\r\n\tvar titleLineCount = model.title.length;\r\n\tvar footerLineCount = model.footer.length;\r\n\tvar titleFontSize = model.titleFontSize;\r\n\tvar bodyFontSize = model.bodyFontSize;\r\n\tvar footerFontSize = model.footerFontSize;\r\n\r\n\theight += titleLineCount * titleFontSize; // Title Lines\r\n\theight += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\r\n\theight += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\r\n\theight += combinedBodyLength * bodyFontSize; // Body Lines\r\n\theight += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\r\n\theight += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\r\n\theight += footerLineCount * (footerFontSize); // Footer Lines\r\n\theight += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\r\n\r\n\t// Title width\r\n\tvar widthPadding = 0;\r\n\tvar maxLineWidth = function(line) {\r\n\t\twidth = Math.max(width, ctx.measureText(line).width + widthPadding);\r\n\t};\r\n\r\n\tctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\r\n\thelpers.each(model.title, maxLineWidth);\r\n\r\n\t// Body width\r\n\tctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\r\n\thelpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\r\n\r\n\t// Body lines may include some extra width due to the color box\r\n\twidthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\r\n\thelpers.each(body, function(bodyItem) {\r\n\t\thelpers.each(bodyItem.before, maxLineWidth);\r\n\t\thelpers.each(bodyItem.lines, maxLineWidth);\r\n\t\thelpers.each(bodyItem.after, maxLineWidth);\r\n\t});\r\n\r\n\t// Reset back to 0\r\n\twidthPadding = 0;\r\n\r\n\t// Footer width\r\n\tctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\r\n\thelpers.each(model.footer, maxLineWidth);\r\n\r\n\t// Add padding\r\n\twidth += 2 * model.xPadding;\r\n\r\n\treturn {\r\n\t\twidth: width,\r\n\t\theight: height\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the alignment of a tooltip given the size\r\n */\r\nfunction determineAlignment(tooltip, size) {\r\n\tvar model = tooltip._model;\r\n\tvar chart = tooltip._chart;\r\n\tvar chartArea = tooltip._chart.chartArea;\r\n\tvar xAlign = 'center';\r\n\tvar yAlign = 'center';\r\n\r\n\tif (model.y < size.height) {\r\n\t\tyAlign = 'top';\r\n\t} else if (model.y > (chart.height - size.height)) {\r\n\t\tyAlign = 'bottom';\r\n\t}\r\n\r\n\tvar lf, rf; // functions to determine left, right alignment\r\n\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\r\n\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\r\n\tvar midX = (chartArea.left + chartArea.right) / 2;\r\n\tvar midY = (chartArea.top + chartArea.bottom) / 2;\r\n\r\n\tif (yAlign === 'center') {\r\n\t\tlf = function(x) {\r\n\t\t\treturn x <= midX;\r\n\t\t};\r\n\t\trf = function(x) {\r\n\t\t\treturn x > midX;\r\n\t\t};\r\n\t} else {\r\n\t\tlf = function(x) {\r\n\t\t\treturn x <= (size.width / 2);\r\n\t\t};\r\n\t\trf = function(x) {\r\n\t\t\treturn x >= (chart.width - (size.width / 2));\r\n\t\t};\r\n\t}\r\n\r\n\tolf = function(x) {\r\n\t\treturn x + size.width + model.caretSize + model.caretPadding > chart.width;\r\n\t};\r\n\torf = function(x) {\r\n\t\treturn x - size.width - model.caretSize - model.caretPadding < 0;\r\n\t};\r\n\tyf = function(y) {\r\n\t\treturn y <= midY ? 'top' : 'bottom';\r\n\t};\r\n\r\n\tif (lf(model.x)) {\r\n\t\txAlign = 'left';\r\n\r\n\t\t// Is tooltip too wide and goes over the right side of the chart.?\r\n\t\tif (olf(model.x)) {\r\n\t\t\txAlign = 'center';\r\n\t\t\tyAlign = yf(model.y);\r\n\t\t}\r\n\t} else if (rf(model.x)) {\r\n\t\txAlign = 'right';\r\n\r\n\t\t// Is tooltip too wide and goes outside left edge of canvas?\r\n\t\tif (orf(model.x)) {\r\n\t\t\txAlign = 'center';\r\n\t\t\tyAlign = yf(model.y);\r\n\t\t}\r\n\t}\r\n\r\n\tvar opts = tooltip._options;\r\n\treturn {\r\n\t\txAlign: opts.xAlign ? opts.xAlign : xAlign,\r\n\t\tyAlign: opts.yAlign ? opts.yAlign : yAlign\r\n\t};\r\n}\r\n\r\n/**\r\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\r\n */\r\nfunction getBackgroundPoint(vm, size, alignment, chart) {\r\n\t// Background Position\r\n\tvar x = vm.x;\r\n\tvar y = vm.y;\r\n\r\n\tvar caretSize = vm.caretSize;\r\n\tvar caretPadding = vm.caretPadding;\r\n\tvar cornerRadius = vm.cornerRadius;\r\n\tvar xAlign = alignment.xAlign;\r\n\tvar yAlign = alignment.yAlign;\r\n\tvar paddingAndSize = caretSize + caretPadding;\r\n\tvar radiusAndPadding = cornerRadius + caretPadding;\r\n\r\n\tif (xAlign === 'right') {\r\n\t\tx -= size.width;\r\n\t} else if (xAlign === 'center') {\r\n\t\tx -= (size.width / 2);\r\n\t\tif (x + size.width > chart.width) {\r\n\t\t\tx = chart.width - size.width;\r\n\t\t}\r\n\t\tif (x < 0) {\r\n\t\t\tx = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tif (yAlign === 'top') {\r\n\t\ty += paddingAndSize;\r\n\t} else if (yAlign === 'bottom') {\r\n\t\ty -= size.height + paddingAndSize;\r\n\t} else {\r\n\t\ty -= (size.height / 2);\r\n\t}\r\n\r\n\tif (yAlign === 'center') {\r\n\t\tif (xAlign === 'left') {\r\n\t\t\tx += paddingAndSize;\r\n\t\t} else if (xAlign === 'right') {\r\n\t\t\tx -= paddingAndSize;\r\n\t\t}\r\n\t} else if (xAlign === 'left') {\r\n\t\tx -= radiusAndPadding;\r\n\t} else if (xAlign === 'right') {\r\n\t\tx += radiusAndPadding;\r\n\t}\r\n\r\n\treturn {\r\n\t\tx: x,\r\n\t\ty: y\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to build before and after body lines\r\n */\r\nfunction getBeforeAfterBodyLines(callback) {\r\n\treturn pushOrConcat([], splitNewlines(callback));\r\n}\r\n\r\nvar exports = module.exports = Element.extend({\r\n\tinitialize: function() {\r\n\t\tthis._model = getBaseModel(this._options);\r\n\t\tthis._lastActive = [];\r\n\t},\r\n\r\n\t// Get the title\r\n\t// Args are: (tooltipItem, data)\r\n\tgetTitle: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me._options;\r\n\t\tvar callbacks = opts.callbacks;\r\n\r\n\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments);\r\n\t\tvar title = callbacks.title.apply(me, arguments);\r\n\t\tvar afterTitle = callbacks.afterTitle.apply(me, arguments);\r\n\r\n\t\tvar lines = [];\r\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeTitle));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(title));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(afterTitle));\r\n\r\n\t\treturn lines;\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetBeforeBody: function() {\r\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetBody: function(tooltipItems, data) {\r\n\t\tvar me = this;\r\n\t\tvar callbacks = me._options.callbacks;\r\n\t\tvar bodyItems = [];\r\n\r\n\t\thelpers.each(tooltipItems, function(tooltipItem) {\r\n\t\t\tvar bodyItem = {\r\n\t\t\t\tbefore: [],\r\n\t\t\t\tlines: [],\r\n\t\t\t\tafter: []\r\n\t\t\t};\r\n\t\t\tpushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\r\n\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\r\n\t\t\tpushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\r\n\r\n\t\t\tbodyItems.push(bodyItem);\r\n\t\t});\r\n\r\n\t\treturn bodyItems;\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetAfterBody: function() {\r\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\r\n\t},\r\n\r\n\t// Get the footer and beforeFooter and afterFooter lines\r\n\t// Args are: (tooltipItem, data)\r\n\tgetFooter: function() {\r\n\t\tvar me = this;\r\n\t\tvar callbacks = me._options.callbacks;\r\n\r\n\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\r\n\t\tvar footer = callbacks.footer.apply(me, arguments);\r\n\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\r\n\r\n\t\tvar lines = [];\r\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeFooter));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(footer));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(afterFooter));\r\n\r\n\t\treturn lines;\r\n\t},\r\n\r\n\tupdate: function(changed) {\r\n\t\tvar me = this;\r\n\t\tvar opts = me._options;\r\n\r\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\r\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\r\n\t\t// which breaks any animations.\r\n\t\tvar existingModel = me._model;\r\n\t\tvar model = me._model = getBaseModel(opts);\r\n\t\tvar active = me._active;\r\n\r\n\t\tvar data = me._data;\r\n\r\n\t\t// In the case where active.length === 0 we need to keep these at existing values for good animations\r\n\t\tvar alignment = {\r\n\t\t\txAlign: existingModel.xAlign,\r\n\t\t\tyAlign: existingModel.yAlign\r\n\t\t};\r\n\t\tvar backgroundPoint = {\r\n\t\t\tx: existingModel.x,\r\n\t\t\ty: existingModel.y\r\n\t\t};\r\n\t\tvar tooltipSize = {\r\n\t\t\twidth: existingModel.width,\r\n\t\t\theight: existingModel.height\r\n\t\t};\r\n\t\tvar tooltipPosition = {\r\n\t\t\tx: existingModel.caretX,\r\n\t\t\ty: existingModel.caretY\r\n\t\t};\r\n\r\n\t\tvar i, len;\r\n\r\n\t\tif (active.length) {\r\n\t\t\tmodel.opacity = 1;\r\n\r\n\t\t\tvar labelColors = [];\r\n\t\t\tvar labelTextColors = [];\r\n\t\t\ttooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\r\n\r\n\t\t\tvar tooltipItems = [];\r\n\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\r\n\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\r\n\t\t\t}\r\n\r\n\t\t\t// If the user provided a filter function, use it to modify the tooltip items\r\n\t\t\tif (opts.filter) {\r\n\t\t\t\ttooltipItems = tooltipItems.filter(function(a) {\r\n\t\t\t\t\treturn opts.filter(a, data);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\r\n\t\t\tif (opts.itemSort) {\r\n\t\t\t\ttooltipItems = tooltipItems.sort(function(a, b) {\r\n\t\t\t\t\treturn opts.itemSort(a, b, data);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Determine colors for boxes\r\n\t\t\thelpers.each(tooltipItems, function(tooltipItem) {\r\n\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\r\n\t\t\t\tlabelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\r\n\t\t\t});\r\n\r\n\r\n\t\t\t// Build the Text Lines\r\n\t\t\tmodel.title = me.getTitle(tooltipItems, data);\r\n\t\t\tmodel.beforeBody = me.getBeforeBody(tooltipItems, data);\r\n\t\t\tmodel.body = me.getBody(tooltipItems, data);\r\n\t\t\tmodel.afterBody = me.getAfterBody(tooltipItems, data);\r\n\t\t\tmodel.footer = me.getFooter(tooltipItems, data);\r\n\r\n\t\t\t// Initial positioning and colors\r\n\t\t\tmodel.x = Math.round(tooltipPosition.x);\r\n\t\t\tmodel.y = Math.round(tooltipPosition.y);\r\n\t\t\tmodel.caretPadding = opts.caretPadding;\r\n\t\t\tmodel.labelColors = labelColors;\r\n\t\t\tmodel.labelTextColors = labelTextColors;\r\n\r\n\t\t\t// data points\r\n\t\t\tmodel.dataPoints = tooltipItems;\r\n\r\n\t\t\t// We need to determine alignment of the tooltip\r\n\t\t\ttooltipSize = getTooltipSize(this, model);\r\n\t\t\talignment = determineAlignment(this, tooltipSize);\r\n\t\t\t// Final Size and Position\r\n\t\t\tbackgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\r\n\t\t} else {\r\n\t\t\tmodel.opacity = 0;\r\n\t\t}\r\n\r\n\t\tmodel.xAlign = alignment.xAlign;\r\n\t\tmodel.yAlign = alignment.yAlign;\r\n\t\tmodel.x = backgroundPoint.x;\r\n\t\tmodel.y = backgroundPoint.y;\r\n\t\tmodel.width = tooltipSize.width;\r\n\t\tmodel.height = tooltipSize.height;\r\n\r\n\t\t// Point where the caret on the tooltip points to\r\n\t\tmodel.caretX = tooltipPosition.x;\r\n\t\tmodel.caretY = tooltipPosition.y;\r\n\r\n\t\tme._model = model;\r\n\r\n\t\tif (changed && opts.custom) {\r\n\t\t\topts.custom.call(me, model);\r\n\t\t}\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\tdrawCaret: function(tooltipPoint, size) {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\r\n\r\n\t\tctx.lineTo(caretPosition.x1, caretPosition.y1);\r\n\t\tctx.lineTo(caretPosition.x2, caretPosition.y2);\r\n\t\tctx.lineTo(caretPosition.x3, caretPosition.y3);\r\n\t},\r\n\tgetCaretPosition: function(tooltipPoint, size, vm) {\r\n\t\tvar x1, x2, x3, y1, y2, y3;\r\n\t\tvar caretSize = vm.caretSize;\r\n\t\tvar cornerRadius = vm.cornerRadius;\r\n\t\tvar xAlign = vm.xAlign;\r\n\t\tvar yAlign = vm.yAlign;\r\n\t\tvar ptX = tooltipPoint.x;\r\n\t\tvar ptY = tooltipPoint.y;\r\n\t\tvar width = size.width;\r\n\t\tvar height = size.height;\r\n\r\n\t\tif (yAlign === 'center') {\r\n\t\t\ty2 = ptY + (height / 2);\r\n\r\n\t\t\tif (xAlign === 'left') {\r\n\t\t\t\tx1 = ptX;\r\n\t\t\t\tx2 = x1 - caretSize;\r\n\t\t\t\tx3 = x1;\r\n\r\n\t\t\t\ty1 = y2 + caretSize;\r\n\t\t\t\ty3 = y2 - caretSize;\r\n\t\t\t} else {\r\n\t\t\t\tx1 = ptX + width;\r\n\t\t\t\tx2 = x1 + caretSize;\r\n\t\t\t\tx3 = x1;\r\n\r\n\t\t\t\ty1 = y2 - caretSize;\r\n\t\t\t\ty3 = y2 + caretSize;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (xAlign === 'left') {\r\n\t\t\t\tx2 = ptX + cornerRadius + (caretSize);\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t} else if (xAlign === 'right') {\r\n\t\t\t\tx2 = ptX + width - cornerRadius - caretSize;\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t} else {\r\n\t\t\t\tx2 = vm.caretX;\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t}\r\n\t\t\tif (yAlign === 'top') {\r\n\t\t\t\ty1 = ptY;\r\n\t\t\t\ty2 = y1 - caretSize;\r\n\t\t\t\ty3 = y1;\r\n\t\t\t} else {\r\n\t\t\t\ty1 = ptY + height;\r\n\t\t\t\ty2 = y1 + caretSize;\r\n\t\t\t\ty3 = y1;\r\n\t\t\t\t// invert drawing order\r\n\t\t\t\tvar tmp = x3;\r\n\t\t\t\tx3 = x1;\r\n\t\t\t\tx1 = tmp;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\r\n\t},\r\n\r\n\tdrawTitle: function(pt, vm, ctx, opacity) {\r\n\t\tvar title = vm.title;\r\n\r\n\t\tif (title.length) {\r\n\t\t\tctx.textAlign = vm._titleAlign;\r\n\t\t\tctx.textBaseline = 'top';\r\n\r\n\t\t\tvar titleFontSize = vm.titleFontSize;\r\n\t\t\tvar titleSpacing = vm.titleSpacing;\r\n\r\n\t\t\tctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity);\r\n\t\t\tctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\r\n\r\n\t\t\tvar i, len;\r\n\t\t\tfor (i = 0, len = title.length; i < len; ++i) {\r\n\t\t\t\tctx.fillText(title[i], pt.x, pt.y);\r\n\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\r\n\r\n\t\t\t\tif (i + 1 === title.length) {\r\n\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdrawBody: function(pt, vm, ctx, opacity) {\r\n\t\tvar bodyFontSize = vm.bodyFontSize;\r\n\t\tvar bodySpacing = vm.bodySpacing;\r\n\t\tvar body = vm.body;\r\n\r\n\t\tctx.textAlign = vm._bodyAlign;\r\n\t\tctx.textBaseline = 'top';\r\n\t\tctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\r\n\r\n\t\t// Before Body\r\n\t\tvar xLinePadding = 0;\r\n\t\tvar fillLineOfText = function(line) {\r\n\t\t\tctx.fillText(line, pt.x + xLinePadding, pt.y);\r\n\t\t\tpt.y += bodyFontSize + bodySpacing;\r\n\t\t};\r\n\r\n\t\t// Before body lines\r\n\t\tctx.fillStyle = mergeOpacity(vm.bodyFontColor, opacity);\r\n\t\thelpers.each(vm.beforeBody, fillLineOfText);\r\n\r\n\t\tvar drawColorBoxes = vm.displayColors;\r\n\t\txLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0;\r\n\r\n\t\t// Draw body lines now\r\n\t\thelpers.each(body, function(bodyItem, i) {\r\n\t\t\tvar textColor = mergeOpacity(vm.labelTextColors[i], opacity);\r\n\t\t\tctx.fillStyle = textColor;\r\n\t\t\thelpers.each(bodyItem.before, fillLineOfText);\r\n\r\n\t\t\thelpers.each(bodyItem.lines, function(line) {\r\n\t\t\t\t// Draw Legend-like boxes if needed\r\n\t\t\t\tif (drawColorBoxes) {\r\n\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\r\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity);\r\n\t\t\t\t\tctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\r\n\r\n\t\t\t\t\t// Border\r\n\t\t\t\t\tctx.lineWidth = 1;\r\n\t\t\t\t\tctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity);\r\n\t\t\t\t\tctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\r\n\r\n\t\t\t\t\t// Inner square\r\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity);\r\n\t\t\t\t\tctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\r\n\t\t\t\t\tctx.fillStyle = textColor;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfillLineOfText(line);\r\n\t\t\t});\r\n\r\n\t\t\thelpers.each(bodyItem.after, fillLineOfText);\r\n\t\t});\r\n\r\n\t\t// Reset back to 0 for after body\r\n\t\txLinePadding = 0;\r\n\r\n\t\t// After body lines\r\n\t\thelpers.each(vm.afterBody, fillLineOfText);\r\n\t\tpt.y -= bodySpacing; // Remove last body spacing\r\n\t},\r\n\r\n\tdrawFooter: function(pt, vm, ctx, opacity) {\r\n\t\tvar footer = vm.footer;\r\n\r\n\t\tif (footer.length) {\r\n\t\t\tpt.y += vm.footerMarginTop;\r\n\r\n\t\t\tctx.textAlign = vm._footerAlign;\r\n\t\t\tctx.textBaseline = 'top';\r\n\r\n\t\t\tctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity);\r\n\t\t\tctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\r\n\r\n\t\t\thelpers.each(footer, function(line) {\r\n\t\t\t\tctx.fillText(line, pt.x, pt.y);\r\n\t\t\t\tpt.y += vm.footerFontSize + vm.footerSpacing;\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\tdrawBackground: function(pt, vm, ctx, tooltipSize, opacity) {\r\n\t\tctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity);\r\n\t\tctx.strokeStyle = mergeOpacity(vm.borderColor, opacity);\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\t\tvar xAlign = vm.xAlign;\r\n\t\tvar yAlign = vm.yAlign;\r\n\t\tvar x = pt.x;\r\n\t\tvar y = pt.y;\r\n\t\tvar width = tooltipSize.width;\r\n\t\tvar height = tooltipSize.height;\r\n\t\tvar radius = vm.cornerRadius;\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.moveTo(x + radius, y);\r\n\t\tif (yAlign === 'top') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + width - radius, y);\r\n\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\r\n\t\tif (yAlign === 'center' && xAlign === 'right') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + width, y + height - radius);\r\n\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\r\n\t\tif (yAlign === 'bottom') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + radius, y + height);\r\n\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\r\n\t\tif (yAlign === 'center' && xAlign === 'left') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x, y + radius);\r\n\t\tctx.quadraticCurveTo(x, y, x + radius, y);\r\n\t\tctx.closePath();\r\n\r\n\t\tctx.fill();\r\n\r\n\t\tif (vm.borderWidth > 0) {\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm.opacity === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tooltipSize = {\r\n\t\t\twidth: vm.width,\r\n\t\t\theight: vm.height\r\n\t\t};\r\n\t\tvar pt = {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\r\n\t\t// IE11/Edge does not like very small opacities, so snap to 0\r\n\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\r\n\r\n\t\t// Truthy/falsey value for empty tooltip\r\n\t\tvar hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\r\n\r\n\t\tif (this._options.enabled && hasTooltipContent) {\r\n\t\t\t// Draw Background\r\n\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize, opacity);\r\n\r\n\t\t\t// Draw Title, Body, and Footer\r\n\t\t\tpt.x += vm.xPadding;\r\n\t\t\tpt.y += vm.yPadding;\r\n\r\n\t\t\t// Titles\r\n\t\t\tthis.drawTitle(pt, vm, ctx, opacity);\r\n\r\n\t\t\t// Body\r\n\t\t\tthis.drawBody(pt, vm, ctx, opacity);\r\n\r\n\t\t\t// Footer\r\n\t\t\tthis.drawFooter(pt, vm, ctx, opacity);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Handle an event\r\n\t * @private\r\n\t * @param {IEvent} event - The event to handle\r\n\t * @returns {Boolean} true if the tooltip changed\r\n\t */\r\n\thandleEvent: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar options = me._options;\r\n\t\tvar changed = false;\r\n\r\n\t\tme._lastActive = me._lastActive || [];\r\n\r\n\t\t// Find Active Elements for tooltips\r\n\t\tif (e.type === 'mouseout') {\r\n\t\t\tme._active = [];\r\n\t\t} else {\r\n\t\t\tme._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\r\n\t\t}\r\n\r\n\t\t// Remember Last Actives\r\n\t\tchanged = !helpers.arrayEquals(me._active, me._lastActive);\r\n\r\n\t\t// Only handle target event on tooltip change\r\n\t\tif (changed) {\r\n\t\t\tme._lastActive = me._active;\r\n\r\n\t\t\tif (options.enabled || options.custom) {\r\n\t\t\t\tme._eventPosition = {\r\n\t\t\t\t\tx: e.x,\r\n\t\t\t\t\ty: e.y\r\n\t\t\t\t};\r\n\r\n\t\t\t\tme.update(true);\r\n\t\t\t\tme.pivot();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n});\r\n\r\n/**\r\n * @namespace Chart.Tooltip.positioners\r\n */\r\nexports.positioners = positioners;\r\n\r\n\r\n},{\"26\":26,\"27\":27,\"46\":46}],37:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('global', {\r\n\telements: {\r\n\t\tarc: {\r\n\t\t\tbackgroundColor: defaults.global.defaultColor,\r\n\t\t\tborderColor: '#fff',\r\n\t\t\tborderWidth: 2\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = Element.extend({\r\n\tinLabelRange: function(mouseX) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tinRange: function(chartX, chartY) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\tvar pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY});\r\n\t\t\tvar\tangle = pointRelativePosition.angle;\r\n\t\t\tvar distance = pointRelativePosition.distance;\r\n\r\n\t\t\t// Sanitise angle range\r\n\t\t\tvar startAngle = vm.startAngle;\r\n\t\t\tvar endAngle = vm.endAngle;\r\n\t\t\twhile (endAngle < startAngle) {\r\n\t\t\t\tendAngle += 2.0 * Math.PI;\r\n\t\t\t}\r\n\t\t\twhile (angle > endAngle) {\r\n\t\t\t\tangle -= 2.0 * Math.PI;\r\n\t\t\t}\r\n\t\t\twhile (angle < startAngle) {\r\n\t\t\t\tangle += 2.0 * Math.PI;\r\n\t\t\t}\r\n\r\n\t\t\t// Check if within the range of the open/close angle\r\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\r\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\r\n\r\n\t\t\treturn (betweenAngles && withinRadius);\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\r\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\r\n\t\treturn {\r\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\r\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\r\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\r\n\r\n\t\treturn {\r\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\r\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar sA = vm.startAngle;\r\n\t\tvar eA = vm.endAngle;\r\n\r\n\t\tctx.beginPath();\r\n\r\n\t\tctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);\r\n\t\tctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);\r\n\r\n\t\tctx.closePath();\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\r\n\t\tctx.fill();\r\n\t\tctx.lineJoin = 'bevel';\r\n\r\n\t\tif (vm.borderWidth) {\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t}\r\n});\r\n\r\n},{\"26\":26,\"27\":27,\"46\":46}],38:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\n\r\nvar globalDefaults = defaults.global;\r\n\r\ndefaults._set('global', {\r\n\telements: {\r\n\t\tline: {\r\n\t\t\ttension: 0.4,\r\n\t\t\tbackgroundColor: globalDefaults.defaultColor,\r\n\t\t\tborderWidth: 3,\r\n\t\t\tborderColor: globalDefaults.defaultColor,\r\n\t\t\tborderCapStyle: 'butt',\r\n\t\t\tborderDash: [],\r\n\t\t\tborderDashOffset: 0.0,\r\n\t\t\tborderJoinStyle: 'miter',\r\n\t\t\tcapBezierPoints: true,\r\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = Element.extend({\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar vm = me._view;\r\n\t\tvar ctx = me._chart.ctx;\r\n\t\tvar spanGaps = vm.spanGaps;\r\n\t\tvar points = me._children.slice(); // clone array\r\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\r\n\t\tvar lastDrawnIndex = -1;\r\n\t\tvar index, current, previous, currentVM;\r\n\r\n\t\t// If we are looping, adding the first point again\r\n\t\tif (me._loop && points.length) {\r\n\t\t\tpoints.push(points[0]);\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\r\n\t\t// Stroke Line Options\r\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\r\n\r\n\t\t// IE 9 and 10 do not support line dash\r\n\t\tif (ctx.setLineDash) {\r\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\r\n\t\t}\r\n\r\n\t\tctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset;\r\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\r\n\t\tctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth;\r\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\r\n\r\n\t\t// Stroke Line\r\n\t\tctx.beginPath();\r\n\t\tlastDrawnIndex = -1;\r\n\r\n\t\tfor (index = 0; index < points.length; ++index) {\r\n\t\t\tcurrent = points[index];\r\n\t\t\tprevious = helpers.previousItem(points, index);\r\n\t\t\tcurrentVM = current._view;\r\n\r\n\t\t\t// First point moves to it's starting position no matter what\r\n\t\t\tif (index === 0) {\r\n\t\t\t\tif (!currentVM.skip) {\r\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\t\t\tlastDrawnIndex = index;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tprevious = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex];\r\n\r\n\t\t\t\tif (!currentVM.skip) {\r\n\t\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\r\n\t\t\t\t\t\t// There was a gap and this is the first point after the gap\r\n\t\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// Line to next point\r\n\t\t\t\t\t\thelpers.canvas.lineTo(ctx, previous._view, current._view);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlastDrawnIndex = index;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tctx.stroke();\r\n\t\tctx.restore();\r\n\t}\r\n});\r\n\r\n},{\"26\":26,\"27\":27,\"46\":46}],39:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\n\r\nvar defaultColor = defaults.global.defaultColor;\r\n\r\ndefaults._set('global', {\r\n\telements: {\r\n\t\tpoint: {\r\n\t\t\tradius: 3,\r\n\t\t\tpointStyle: 'circle',\r\n\t\t\tbackgroundColor: defaultColor,\r\n\t\t\tborderColor: defaultColor,\r\n\t\t\tborderWidth: 1,\r\n\t\t\t// Hover\r\n\t\t\thitRadius: 1,\r\n\t\t\thoverRadius: 4,\r\n\t\t\thoverBorderWidth: 1\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction xRange(mouseX) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nfunction yRange(mouseY) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nmodule.exports = Element.extend({\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\r\n\t},\r\n\r\n\tinLabelRange: xRange,\r\n\tinXRange: xRange,\r\n\tinYRange: yRange,\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tpadding: vm.radius + vm.borderWidth\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function(chartArea) {\r\n\t\tvar vm = this._view;\r\n\t\tvar model = this._model;\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar pointStyle = vm.pointStyle;\r\n\t\tvar rotation = vm.rotation;\r\n\t\tvar radius = vm.radius;\r\n\t\tvar x = vm.x;\r\n\t\tvar y = vm.y;\r\n\t\tvar errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.)\r\n\r\n\t\tif (vm.skip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Clipping for Points.\r\n\t\tif (chartArea === undefined || (model.x >= chartArea.left && chartArea.right * errMargin >= model.x && model.y >= chartArea.top && chartArea.bottom * errMargin >= model.y)) {\r\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\r\n\t\t\tctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth);\r\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\r\n\t\t\thelpers.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\r\n\t\t}\r\n\t}\r\n});\r\n\r\n},{\"26\":26,\"27\":27,\"46\":46}],40:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\n\r\ndefaults._set('global', {\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tbackgroundColor: defaults.global.defaultColor,\r\n\t\t\tborderColor: defaults.global.defaultColor,\r\n\t\t\tborderSkipped: 'bottom',\r\n\t\t\tborderWidth: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction isVertical(bar) {\r\n\treturn bar._view.width !== undefined;\r\n}\r\n\r\n/**\r\n * Helper function to get the bounds of the bar regardless of the orientation\r\n * @param bar {Chart.Element.Rectangle} the bar\r\n * @return {Bounds} bounds of the bar\r\n * @private\r\n */\r\nfunction getBarBounds(bar) {\r\n\tvar vm = bar._view;\r\n\tvar x1, x2, y1, y2;\r\n\r\n\tif (isVertical(bar)) {\r\n\t\t// vertical\r\n\t\tvar halfWidth = vm.width / 2;\r\n\t\tx1 = vm.x - halfWidth;\r\n\t\tx2 = vm.x + halfWidth;\r\n\t\ty1 = Math.min(vm.y, vm.base);\r\n\t\ty2 = Math.max(vm.y, vm.base);\r\n\t} else {\r\n\t\t// horizontal bar\r\n\t\tvar halfHeight = vm.height / 2;\r\n\t\tx1 = Math.min(vm.x, vm.base);\r\n\t\tx2 = Math.max(vm.x, vm.base);\r\n\t\ty1 = vm.y - halfHeight;\r\n\t\ty2 = vm.y + halfHeight;\r\n\t}\r\n\r\n\treturn {\r\n\t\tleft: x1,\r\n\t\ttop: y1,\r\n\t\tright: x2,\r\n\t\tbottom: y2\r\n\t};\r\n}\r\n\r\nmodule.exports = Element.extend({\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar left, right, top, bottom, signX, signY, borderSkipped;\r\n\t\tvar borderWidth = vm.borderWidth;\r\n\r\n\t\tif (!vm.horizontal) {\r\n\t\t\t// bar\r\n\t\t\tleft = vm.x - vm.width / 2;\r\n\t\t\tright = vm.x + vm.width / 2;\r\n\t\t\ttop = vm.y;\r\n\t\t\tbottom = vm.base;\r\n\t\t\tsignX = 1;\r\n\t\t\tsignY = bottom > top ? 1 : -1;\r\n\t\t\tborderSkipped = vm.borderSkipped || 'bottom';\r\n\t\t} else {\r\n\t\t\t// horizontal bar\r\n\t\t\tleft = vm.base;\r\n\t\t\tright = vm.x;\r\n\t\t\ttop = vm.y - vm.height / 2;\r\n\t\t\tbottom = vm.y + vm.height / 2;\r\n\t\t\tsignX = right > left ? 1 : -1;\r\n\t\t\tsignY = 1;\r\n\t\t\tborderSkipped = vm.borderSkipped || 'left';\r\n\t\t}\r\n\r\n\t\t// Canvas doesn't allow us to stroke inside the width so we can\r\n\t\t// adjust the sizes to fit if we're setting a stroke on the line\r\n\t\tif (borderWidth) {\r\n\t\t\t// borderWidth shold be less than bar width and bar height.\r\n\t\t\tvar barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\r\n\t\t\tborderWidth = borderWidth > barSize ? barSize : borderWidth;\r\n\t\t\tvar halfStroke = borderWidth / 2;\r\n\t\t\t// Adjust borderWidth when bar top position is near vm.base(zero).\r\n\t\t\tvar borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\r\n\t\t\tvar borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\r\n\t\t\tvar borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\r\n\t\t\tvar borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\r\n\t\t\t// not become a vertical line?\r\n\t\t\tif (borderLeft !== borderRight) {\r\n\t\t\t\ttop = borderTop;\r\n\t\t\t\tbottom = borderBottom;\r\n\t\t\t}\r\n\t\t\t// not become a horizontal line?\r\n\t\t\tif (borderTop !== borderBottom) {\r\n\t\t\t\tleft = borderLeft;\r\n\t\t\t\tright = borderRight;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\t\tctx.lineWidth = borderWidth;\r\n\r\n\t\t// Corner points, from bottom-left to bottom-right clockwise\r\n\t\t// | 1 2 |\r\n\t\t// | 0 3 |\r\n\t\tvar corners = [\r\n\t\t\t[left, bottom],\r\n\t\t\t[left, top],\r\n\t\t\t[right, top],\r\n\t\t\t[right, bottom]\r\n\t\t];\r\n\r\n\t\t// Find first (starting) corner with fallback to 'bottom'\r\n\t\tvar borders = ['bottom', 'left', 'top', 'right'];\r\n\t\tvar startCorner = borders.indexOf(borderSkipped, 0);\r\n\t\tif (startCorner === -1) {\r\n\t\t\tstartCorner = 0;\r\n\t\t}\r\n\r\n\t\tfunction cornerAt(index) {\r\n\t\t\treturn corners[(startCorner + index) % 4];\r\n\t\t}\r\n\r\n\t\t// Draw rectangle from 'startCorner'\r\n\t\tvar corner = cornerAt(0);\r\n\t\tctx.moveTo(corner[0], corner[1]);\r\n\r\n\t\tfor (var i = 1; i < 4; i++) {\r\n\t\t\tcorner = cornerAt(i);\r\n\t\t\tctx.lineTo(corner[0], corner[1]);\r\n\t\t}\r\n\r\n\t\tctx.fill();\r\n\t\tif (borderWidth) {\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t},\r\n\r\n\theight: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm.base - vm.y;\r\n\t},\r\n\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\tvar inRange = false;\r\n\r\n\t\tif (this._view) {\r\n\t\t\tvar bounds = getBarBounds(this);\r\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom;\r\n\t\t}\r\n\r\n\t\treturn inRange;\r\n\t},\r\n\r\n\tinLabelRange: function(mouseX, mouseY) {\r\n\t\tvar me = this;\r\n\t\tif (!me._view) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar inRange = false;\r\n\t\tvar bounds = getBarBounds(me);\r\n\r\n\t\tif (isVertical(me)) {\r\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right;\r\n\t\t} else {\r\n\t\t\tinRange = mouseY >= bounds.top && mouseY <= bounds.bottom;\r\n\t\t}\r\n\r\n\t\treturn inRange;\r\n\t},\r\n\r\n\tinXRange: function(mouseX) {\r\n\t\tvar bounds = getBarBounds(this);\r\n\t\treturn mouseX >= bounds.left && mouseX <= bounds.right;\r\n\t},\r\n\r\n\tinYRange: function(mouseY) {\r\n\t\tvar bounds = getBarBounds(this);\r\n\t\treturn mouseY >= bounds.top && mouseY <= bounds.bottom;\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar x, y;\r\n\t\tif (isVertical(this)) {\r\n\t\t\tx = vm.x;\r\n\t\t\ty = (vm.y + vm.base) / 2;\r\n\t\t} else {\r\n\t\t\tx = (vm.x + vm.base) / 2;\r\n\t\t\ty = vm.y;\r\n\t\t}\r\n\r\n\t\treturn {x: x, y: y};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm.width * Math.abs(vm.y - vm.base);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t}\r\n});\r\n\r\n},{\"26\":26,\"27\":27}],41:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = {};\r\nmodule.exports.Arc = require(37);\r\nmodule.exports.Line = require(38);\r\nmodule.exports.Point = require(39);\r\nmodule.exports.Rectangle = require(40);\r\n\r\n},{\"37\":37,\"38\":38,\"39\":39,\"40\":40}],42:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(43);\r\n\r\n/**\r\n * @namespace Chart.helpers.canvas\r\n */\r\nvar exports = module.exports = {\r\n\t/**\r\n\t * Clears the entire canvas associated to the given `chart`.\r\n\t * @param {Chart} chart - The chart for which to clear the canvas.\r\n\t */\r\n\tclear: function(chart) {\r\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\r\n\t},\r\n\r\n\t/**\r\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\r\n\t * given size (width, height) and the same `radius` for all corners.\r\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\r\n\t * @param {Number} x - The x axis of the coordinate for the rectangle starting point.\r\n\t * @param {Number} y - The y axis of the coordinate for the rectangle starting point.\r\n\t * @param {Number} width - The rectangle's width.\r\n\t * @param {Number} height - The rectangle's height.\r\n\t * @param {Number} radius - The rounded amount (in pixels) for the four corners.\r\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\r\n\t */\r\n\troundedRect: function(ctx, x, y, width, height, radius) {\r\n\t\tif (radius) {\r\n\t\t\t// NOTE(SB) `epsilon` helps to prevent minor artifacts appearing\r\n\t\t\t// on Chrome when `r` is exactly half the height or the width.\r\n\t\t\tvar epsilon = 0.0000001;\r\n\t\t\tvar r = Math.min(radius, (height / 2) - epsilon, (width / 2) - epsilon);\r\n\r\n\t\t\tctx.moveTo(x + r, y);\r\n\t\t\tctx.lineTo(x + width - r, y);\r\n\t\t\tctx.arcTo(x + width, y, x + width, y + r, r);\r\n\t\t\tctx.lineTo(x + width, y + height - r);\r\n\t\t\tctx.arcTo(x + width, y + height, x + width - r, y + height, r);\r\n\t\t\tctx.lineTo(x + r, y + height);\r\n\t\t\tctx.arcTo(x, y + height, x, y + height - r, r);\r\n\t\t\tctx.lineTo(x, y + r);\r\n\t\t\tctx.arcTo(x, y, x + r, y, r);\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t} else {\r\n\t\t\tctx.rect(x, y, width, height);\r\n\t\t}\r\n\t},\r\n\r\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\r\n\t\tvar type, edgeLength, xOffset, yOffset, height, size;\r\n\t\trotation = rotation || 0;\r\n\r\n\t\tif (style && typeof style === 'object') {\r\n\t\t\ttype = style.toString();\r\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\r\n\t\t\t\tctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isNaN(radius) || radius <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.translate(x, y);\r\n\t\tctx.rotate(rotation * Math.PI / 180);\r\n\t\tctx.beginPath();\r\n\r\n\t\tswitch (style) {\r\n\t\t// Default includes circle\r\n\t\tdefault:\r\n\t\t\tctx.arc(0, 0, radius, 0, Math.PI * 2);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'triangle':\r\n\t\t\tedgeLength = 3 * radius / Math.sqrt(3);\r\n\t\t\theight = edgeLength * Math.sqrt(3) / 2;\r\n\t\t\tctx.moveTo(-edgeLength / 2, height / 3);\r\n\t\t\tctx.lineTo(edgeLength / 2, height / 3);\r\n\t\t\tctx.lineTo(0, -2 * height / 3);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rect':\r\n\t\t\tsize = 1 / Math.SQRT2 * radius;\r\n\t\t\tctx.rect(-size, -size, 2 * size, 2 * size);\r\n\t\t\tbreak;\r\n\t\tcase 'rectRounded':\r\n\t\t\tvar offset = radius / Math.SQRT2;\r\n\t\t\tvar leftX = -offset;\r\n\t\t\tvar topY = -offset;\r\n\t\t\tvar sideSize = Math.SQRT2 * radius;\r\n\r\n\t\t\t// NOTE(SB) the rounded rect implementation changed to use `arcTo`\r\n\t\t\t// instead of `quadraticCurveTo` since it generates better results\r\n\t\t\t// when rect is almost a circle. 0.425 (instead of 0.5) produces\r\n\t\t\t// results visually closer to the previous impl.\r\n\t\t\tthis.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius * 0.425);\r\n\t\t\tbreak;\r\n\t\tcase 'rectRot':\r\n\t\t\tsize = 1 / Math.SQRT2 * radius;\r\n\t\t\tctx.moveTo(-size, 0);\r\n\t\t\tctx.lineTo(0, size);\r\n\t\t\tctx.lineTo(size, 0);\r\n\t\t\tctx.lineTo(0, -size);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'cross':\r\n\t\t\tctx.moveTo(0, radius);\r\n\t\t\tctx.lineTo(0, -radius);\r\n\t\t\tctx.moveTo(-radius, 0);\r\n\t\t\tctx.lineTo(radius, 0);\r\n\t\t\tbreak;\r\n\t\tcase 'crossRot':\r\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\r\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\r\n\t\t\tctx.moveTo(-xOffset, -yOffset);\r\n\t\t\tctx.lineTo(xOffset, yOffset);\r\n\t\t\tctx.moveTo(-xOffset, yOffset);\r\n\t\t\tctx.lineTo(xOffset, -yOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'star':\r\n\t\t\tctx.moveTo(0, radius);\r\n\t\t\tctx.lineTo(0, -radius);\r\n\t\t\tctx.moveTo(-radius, 0);\r\n\t\t\tctx.lineTo(radius, 0);\r\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\r\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\r\n\t\t\tctx.moveTo(-xOffset, -yOffset);\r\n\t\t\tctx.lineTo(xOffset, yOffset);\r\n\t\t\tctx.moveTo(-xOffset, yOffset);\r\n\t\t\tctx.lineTo(xOffset, -yOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'line':\r\n\t\t\tctx.moveTo(-radius, 0);\r\n\t\t\tctx.lineTo(radius, 0);\r\n\t\t\tbreak;\r\n\t\tcase 'dash':\r\n\t\t\tctx.moveTo(0, 0);\r\n\t\t\tctx.lineTo(radius, 0);\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tctx.fill();\r\n\t\tctx.stroke();\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tclipArea: function(ctx, area) {\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\r\n\t\tctx.clip();\r\n\t},\r\n\r\n\tunclipArea: function(ctx) {\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tlineTo: function(ctx, previous, target, flip) {\r\n\t\tif (target.steppedLine) {\r\n\t\t\tif ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) {\r\n\t\t\t\tctx.lineTo(previous.x, target.y);\r\n\t\t\t} else {\r\n\t\t\t\tctx.lineTo(target.x, previous.y);\r\n\t\t\t}\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!target.tension) {\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.bezierCurveTo(\r\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\r\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\r\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\r\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\r\n\t\t\ttarget.x,\r\n\t\t\ttarget.y);\r\n\t}\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\r\n * @namespace Chart.helpers.clear\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.clear = exports.clear;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\r\n * @namespace Chart.helpers.drawRoundedRectangle\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.drawRoundedRectangle = function(ctx) {\r\n\tctx.beginPath();\r\n\texports.roundedRect.apply(exports, arguments);\r\n};\r\n\r\n},{\"43\":43}],43:[function(require,module,exports){\r\n'use strict';\r\n\r\n/**\r\n * @namespace Chart.helpers\r\n */\r\nvar helpers = {\r\n\t/**\r\n\t * An empty function that can be used, for example, for optional callback.\r\n\t */\r\n\tnoop: function() {},\r\n\r\n\t/**\r\n\t * Returns a unique id, sequentially generated from a global variable.\r\n\t * @returns {Number}\r\n\t * @function\r\n\t */\r\n\tuid: (function() {\r\n\t\tvar id = 0;\r\n\t\treturn function() {\r\n\t\t\treturn id++;\r\n\t\t};\r\n\t}()),\r\n\r\n\t/**\r\n\t * Returns true if `value` is neither null nor undefined, else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {Boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisNullOrUndef: function(value) {\r\n\t\treturn value === null || typeof value === 'undefined';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an array, else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {Boolean}\r\n\t * @function\r\n\t */\r\n\tisArray: Array.isArray ? Array.isArray : function(value) {\r\n\t\treturn Object.prototype.toString.call(value) === '[object Array]';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an object (excluding null), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {Boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisObject: function(value) {\r\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns `value` if defined, else returns `defaultValue`.\r\n\t * @param {*} value - The value to return if defined.\r\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueOrDefault: function(value, defaultValue) {\r\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\r\n\t * @param {Array} value - The array to lookup for value at `index`.\r\n\t * @param {Number} index - The index in `value` to lookup for value.\r\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\r\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\r\n\t},\r\n\r\n\t/**\r\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\r\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\r\n\t * @param {Function} fn - The function to call.\r\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\r\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @returns {*}\r\n\t */\r\n\tcallback: function(fn, args, thisArg) {\r\n\t\tif (fn && typeof fn.call === 'function') {\r\n\t\t\treturn fn.apply(thisArg, args);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Note(SB) for performance sake, this method should only be used when loopable type\r\n\t * is unknown or in none intensive code (not called often and small loopable). Else\r\n\t * it's preferable to use a regular for() loop and save extra function calls.\r\n\t * @param {Object|Array} loopable - The object or array to be iterated.\r\n\t * @param {Function} fn - The function to call for each item.\r\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @param {Boolean} [reverse] - If true, iterates backward on the loopable.\r\n\t */\r\n\teach: function(loopable, fn, thisArg, reverse) {\r\n\t\tvar i, len, keys;\r\n\t\tif (helpers.isArray(loopable)) {\r\n\t\t\tlen = loopable.length;\r\n\t\t\tif (reverse) {\r\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (helpers.isObject(loopable)) {\r\n\t\t\tkeys = Object.keys(loopable);\r\n\t\t\tlen = keys.length;\r\n\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\r\n\t * @see http://stackoverflow.com/a/14853974\r\n\t * @param {Array} a0 - The array to compare\r\n\t * @param {Array} a1 - The array to compare\r\n\t * @returns {Boolean}\r\n\t */\r\n\tarrayEquals: function(a0, a1) {\r\n\t\tvar i, ilen, v0, v1;\r\n\r\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\r\n\t\t\tv0 = a0[i];\r\n\t\t\tv1 = a1[i];\r\n\r\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\r\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} else if (v0 !== v1) {\r\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\r\n\t * @param {*} source - The value to clone.\r\n\t * @returns {*}\r\n\t */\r\n\tclone: function(source) {\r\n\t\tif (helpers.isArray(source)) {\r\n\t\t\treturn source.map(helpers.clone);\r\n\t\t}\r\n\r\n\t\tif (helpers.isObject(source)) {\r\n\t\t\tvar target = {};\r\n\t\t\tvar keys = Object.keys(source);\r\n\t\t\tvar klen = keys.length;\r\n\t\t\tvar k = 0;\r\n\r\n\t\t\tfor (; k < klen; ++k) {\r\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\r\n\t\t\t}\r\n\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\treturn source;\r\n\t},\r\n\r\n\t/**\r\n\t * The default merger when Chart.helpers.merge is called without merger option.\r\n\t * Note(SB): this method is also used by configMerge and scaleMerge as fallback.\r\n\t * @private\r\n\t */\r\n\t_merger: function(key, target, source, options) {\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.merge(tval, sval, options);\r\n\t\t} else {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Merges source[key] in target[key] only if target[key] is undefined.\r\n\t * @private\r\n\t */\r\n\t_mergerIf: function(key, target, source) {\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.mergeIf(tval, sval);\r\n\t\t} else if (!target.hasOwnProperty(key)) {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {Object} target - The target object in which all sources are merged into.\r\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\r\n\t * @param {Object} [options] - Merging options:\r\n\t * @param {Function} [options.merger] - The merge method (key, target, source, options)\r\n\t * @returns {Object} The `target` object.\r\n\t */\r\n\tmerge: function(target, source, options) {\r\n\t\tvar sources = helpers.isArray(source) ? source : [source];\r\n\t\tvar ilen = sources.length;\r\n\t\tvar merge, i, keys, klen, k;\r\n\r\n\t\tif (!helpers.isObject(target)) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\toptions = options || {};\r\n\t\tmerge = options.merger || helpers._merger;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!helpers.isObject(source)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tkeys = Object.keys(source);\r\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\r\n\t\t\t\tmerge(keys[k], target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {Object} target - The target object in which all sources are merged into.\r\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\r\n\t * @returns {Object} The `target` object.\r\n\t */\r\n\tmergeIf: function(target, source) {\r\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\r\n\t},\r\n\r\n\t/**\r\n\t * Applies the contents of two or more objects together into the first object.\r\n\t * @param {Object} target - The target object in which all objects are merged into.\r\n\t * @param {Object} arg1 - Object containing additional properties to merge in target.\r\n\t * @param {Object} argN - Additional objects containing properties to merge in target.\r\n\t * @returns {Object} The `target` object.\r\n\t */\r\n\textend: function(target) {\r\n\t\tvar setFn = function(value, key) {\r\n\t\t\ttarget[key] = value;\r\n\t\t};\r\n\t\tfor (var i = 1, ilen = arguments.length; i < ilen; ++i) {\r\n\t\t\thelpers.each(arguments[i], setFn);\r\n\t\t}\r\n\t\treturn target;\r\n\t},\r\n\r\n\t/**\r\n\t * Basic javascript inheritance based on the model created in Backbone.js\r\n\t */\r\n\tinherits: function(extensions) {\r\n\t\tvar me = this;\r\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\r\n\t\t\treturn me.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tvar Surrogate = function() {\r\n\t\t\tthis.constructor = ChartElement;\r\n\t\t};\r\n\r\n\t\tSurrogate.prototype = me.prototype;\r\n\t\tChartElement.prototype = new Surrogate();\r\n\t\tChartElement.extend = helpers.inherits;\r\n\r\n\t\tif (extensions) {\r\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\r\n\t\t}\r\n\r\n\t\tChartElement.__super__ = me.prototype;\r\n\t\treturn ChartElement;\r\n\t}\r\n};\r\n\r\nmodule.exports = helpers;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.callback instead.\r\n * @function Chart.helpers.callCallback\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.callCallback = helpers.callback;\r\n\r\n/**\r\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\r\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\r\n * @function Chart.helpers.indexOf\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.indexOf = function(array, item, fromIndex) {\r\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\r\n};\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\r\n * @function Chart.helpers.getValueOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueOrDefault = helpers.valueOrDefault;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\r\n * @function Chart.helpers.getValueAtIndexOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\r\n\r\n},{}],44:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(43);\r\n\r\n/**\r\n * Easing functions adapted from Robert Penner's easing equations.\r\n * @namespace Chart.helpers.easingEffects\r\n * @see http://www.robertpenner.com/easing/\r\n */\r\nvar effects = {\r\n\tlinear: function(t) {\r\n\t\treturn t;\r\n\t},\r\n\r\n\teaseInQuad: function(t) {\r\n\t\treturn t * t;\r\n\t},\r\n\r\n\teaseOutQuad: function(t) {\r\n\t\treturn -t * (t - 2);\r\n\t},\r\n\r\n\teaseInOutQuad: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\r\n\t},\r\n\r\n\teaseInCubic: function(t) {\r\n\t\treturn t * t * t;\r\n\t},\r\n\r\n\teaseOutCubic: function(t) {\r\n\t\treturn (t = t - 1) * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutCubic: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\r\n\t},\r\n\r\n\teaseInQuart: function(t) {\r\n\t\treturn t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuart: function(t) {\r\n\t\treturn -((t = t - 1) * t * t * t - 1);\r\n\t},\r\n\r\n\teaseInOutQuart: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\r\n\t},\r\n\r\n\teaseInQuint: function(t) {\r\n\t\treturn t * t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuint: function(t) {\r\n\t\treturn (t = t - 1) * t * t * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutQuint: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\r\n\t},\r\n\r\n\teaseInSine: function(t) {\r\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\r\n\t},\r\n\r\n\teaseOutSine: function(t) {\r\n\t\treturn Math.sin(t * (Math.PI / 2));\r\n\t},\r\n\r\n\teaseInOutSine: function(t) {\r\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\r\n\t},\r\n\r\n\teaseInExpo: function(t) {\r\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\r\n\t},\r\n\r\n\teaseOutExpo: function(t) {\r\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\r\n\t},\r\n\r\n\teaseInOutExpo: function(t) {\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\r\n\t\t}\r\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\r\n\t},\r\n\r\n\teaseInCirc: function(t) {\r\n\t\tif (t >= 1) {\r\n\t\t\treturn t;\r\n\t\t}\r\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\r\n\t},\r\n\r\n\teaseOutCirc: function(t) {\r\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\r\n\t},\r\n\r\n\teaseInOutCirc: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\r\n\t\t}\r\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\r\n\t},\r\n\r\n\teaseInElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t},\r\n\r\n\teaseOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\r\n\t},\r\n\r\n\teaseInOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif ((t /= 0.5) === 2) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.45;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\tif (t < 1) {\r\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\r\n\t},\r\n\teaseInBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn t * t * ((s + 1) * t - s);\r\n\t},\r\n\r\n\teaseOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\r\n\t},\r\n\r\n\teaseInOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\r\n\t},\r\n\r\n\teaseInBounce: function(t) {\r\n\t\treturn 1 - effects.easeOutBounce(1 - t);\r\n\t},\r\n\r\n\teaseOutBounce: function(t) {\r\n\t\tif (t < (1 / 2.75)) {\r\n\t\t\treturn 7.5625 * t * t;\r\n\t\t}\r\n\t\tif (t < (2 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\r\n\t\t}\r\n\t\tif (t < (2.5 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\r\n\t\t}\r\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\r\n\t},\r\n\r\n\teaseInOutBounce: function(t) {\r\n\t\tif (t < 0.5) {\r\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\r\n\t\t}\r\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\r\n\t}\r\n};\r\n\r\nmodule.exports = {\r\n\teffects: effects\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\r\n * @function Chart.helpers.easingEffects\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.easingEffects = effects;\r\n\r\n},{\"43\":43}],45:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(43);\r\n\r\n/**\r\n * @alias Chart.helpers.options\r\n * @namespace\r\n */\r\nmodule.exports = {\r\n\t/**\r\n\t * Converts the given line height `value` in pixels for a specific font `size`.\r\n\t * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\r\n\t * @param {Number} size - The font size (in pixels) used to resolve relative `value`.\r\n\t * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid).\r\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoLineHeight: function(value, size) {\r\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\r\n\t\tif (!matches || matches[1] === 'normal') {\r\n\t\t\treturn size * 1.2;\r\n\t\t}\r\n\r\n\t\tvalue = +matches[2];\r\n\r\n\t\tswitch (matches[3]) {\r\n\t\tcase 'px':\r\n\t\t\treturn value;\r\n\t\tcase '%':\r\n\t\t\tvalue /= 100;\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn size * value;\r\n\t},\r\n\r\n\t/**\r\n\t * Converts the given value into a padding object with pre-computed width/height.\r\n\t * @param {Number|Object} value - If a number, set the value to all TRBL component,\r\n\t * else, if and object, use defined properties and sets undefined ones to 0.\r\n\t * @returns {Object} The padding values (top, right, bottom, left, width, height)\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoPadding: function(value) {\r\n\t\tvar t, r, b, l;\r\n\r\n\t\tif (helpers.isObject(value)) {\r\n\t\t\tt = +value.top || 0;\r\n\t\t\tr = +value.right || 0;\r\n\t\t\tb = +value.bottom || 0;\r\n\t\t\tl = +value.left || 0;\r\n\t\t} else {\r\n\t\t\tt = r = b = l = +value || 0;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop: t,\r\n\t\t\tright: r,\r\n\t\t\tbottom: b,\r\n\t\t\tleft: l,\r\n\t\t\theight: t + b,\r\n\t\t\twidth: l + r\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\r\n\t * @param {Array[]} inputs - An array of values, falling back to the last value.\r\n\t * @param {Object} [context] - If defined and the current value is a function, the value\r\n\t * is called with `context` as first argument and the result becomes the new input.\r\n\t * @param {Number} [index] - If defined and the current value is an array, the value\r\n\t * at `index` become the new input.\r\n\t * @since 2.7.0\r\n\t */\r\n\tresolve: function(inputs, context, index) {\r\n\t\tvar i, ilen, value;\r\n\r\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\r\n\t\t\tvalue = inputs[i];\r\n\t\t\tif (value === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (context !== undefined && typeof value === 'function') {\r\n\t\t\t\tvalue = value(context);\r\n\t\t\t}\r\n\t\t\tif (index !== undefined && helpers.isArray(value)) {\r\n\t\t\t\tvalue = value[index];\r\n\t\t\t}\r\n\t\t\tif (value !== undefined) {\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"43\":43}],46:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = require(43);\r\nmodule.exports.easing = require(44);\r\nmodule.exports.canvas = require(42);\r\nmodule.exports.options = require(45);\r\n\r\n},{\"42\":42,\"43\":43,\"44\":44,\"45\":45}],47:[function(require,module,exports){\r\n/**\r\n * Platform fallback implementation (minimal).\r\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\r\n */\r\n\r\nmodule.exports = {\r\n\tacquireContext: function(item) {\r\n\t\tif (item && item.canvas) {\r\n\t\t\t// Support for any object associated to a canvas (including a context2d)\r\n\t\t\titem = item.canvas;\r\n\t\t}\r\n\r\n\t\treturn item && item.getContext('2d') || null;\r\n\t}\r\n};\r\n\r\n},{}],48:[function(require,module,exports){\r\n/**\r\n * Chart.Platform implementation for targeting a web browser\r\n */\r\n\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\nvar EXPANDO_KEY = '$chartjs';\r\nvar CSS_PREFIX = 'chartjs-';\r\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\r\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\r\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\r\n\r\n/**\r\n * DOM event types -> Chart.js event types.\r\n * Note: only events with different types are mapped.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\r\n */\r\nvar EVENT_TYPES = {\r\n\ttouchstart: 'mousedown',\r\n\ttouchmove: 'mousemove',\r\n\ttouchend: 'mouseup',\r\n\tpointerenter: 'mouseenter',\r\n\tpointerdown: 'mousedown',\r\n\tpointermove: 'mousemove',\r\n\tpointerup: 'mouseup',\r\n\tpointerleave: 'mouseout',\r\n\tpointerout: 'mouseout'\r\n};\r\n\r\n/**\r\n * The \"used\" size is the final value of a dimension property after all calculations have\r\n * been performed. This method uses the computed style of `element` but returns undefined\r\n * if the computed style is not expressed in pixels. That can happen in some cases where\r\n * `element` has a size relative to its parent and this last one is not yet displayed,\r\n * for example because of `display: none` on a parent node.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\r\n * @returns {Number} Size in pixels or undefined if unknown.\r\n */\r\nfunction readUsedSize(element, property) {\r\n\tvar value = helpers.getStyle(element, property);\r\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\r\n\treturn matches ? Number(matches[1]) : undefined;\r\n}\r\n\r\n/**\r\n * Initializes the canvas style and render size without modifying the canvas display size,\r\n * since responsiveness is handled by the controller.resize() method. The config is used\r\n * to determine the aspect ratio to apply in case no explicit height has been specified.\r\n */\r\nfunction initCanvas(canvas, config) {\r\n\tvar style = canvas.style;\r\n\r\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\r\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\r\n\tvar renderHeight = canvas.getAttribute('height');\r\n\tvar renderWidth = canvas.getAttribute('width');\r\n\r\n\t// Chart.js modifies some canvas values that we want to restore on destroy\r\n\tcanvas[EXPANDO_KEY] = {\r\n\t\tinitial: {\r\n\t\t\theight: renderHeight,\r\n\t\t\twidth: renderWidth,\r\n\t\t\tstyle: {\r\n\t\t\t\tdisplay: style.display,\r\n\t\t\t\theight: style.height,\r\n\t\t\t\twidth: style.width\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Force canvas to display as block to avoid extra space caused by inline\r\n\t// elements, which would interfere with the responsive resize process.\r\n\t// https://github.com/chartjs/Chart.js/issues/2538\r\n\tstyle.display = style.display || 'block';\r\n\r\n\tif (renderWidth === null || renderWidth === '') {\r\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\r\n\t\tif (displayWidth !== undefined) {\r\n\t\t\tcanvas.width = displayWidth;\r\n\t\t}\r\n\t}\r\n\r\n\tif (renderHeight === null || renderHeight === '') {\r\n\t\tif (canvas.style.height === '') {\r\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\r\n\t\t\t// which one can be specified by the user but also by charts as default option\r\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\r\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\r\n\t\t} else {\r\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\r\n\t\t\tif (displayWidth !== undefined) {\r\n\t\t\t\tcanvas.height = displayHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn canvas;\r\n}\r\n\r\n/**\r\n * Detects support for options object argument in addEventListener.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\r\n * @private\r\n */\r\nvar supportsEventListenerOptions = (function() {\r\n\tvar supports = false;\r\n\ttry {\r\n\t\tvar options = Object.defineProperty({}, 'passive', {\r\n\t\t\tget: function() {\r\n\t\t\t\tsupports = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\twindow.addEventListener('e', null, options);\r\n\t} catch (e) {\r\n\t\t// continue regardless of error\r\n\t}\r\n\treturn supports;\r\n}());\r\n\r\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\r\n// https://github.com/chartjs/Chart.js/issues/4287\r\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\r\n\r\nfunction addEventListener(node, type, listener) {\r\n\tnode.addEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction removeEventListener(node, type, listener) {\r\n\tnode.removeEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction createEvent(type, chart, x, y, nativeEvent) {\r\n\treturn {\r\n\t\ttype: type,\r\n\t\tchart: chart,\r\n\t\tnative: nativeEvent || null,\r\n\t\tx: x !== undefined ? x : null,\r\n\t\ty: y !== undefined ? y : null,\r\n\t};\r\n}\r\n\r\nfunction fromNativeEvent(event, chart) {\r\n\tvar type = EVENT_TYPES[event.type] || event.type;\r\n\tvar pos = helpers.getRelativePosition(event, chart);\r\n\treturn createEvent(type, chart, pos.x, pos.y, event);\r\n}\r\n\r\nfunction throttled(fn, thisArg) {\r\n\tvar ticking = false;\r\n\tvar args = [];\r\n\r\n\treturn function() {\r\n\t\targs = Array.prototype.slice.call(arguments);\r\n\t\tthisArg = thisArg || this;\r\n\r\n\t\tif (!ticking) {\r\n\t\t\tticking = true;\r\n\t\t\thelpers.requestAnimFrame.call(window, function() {\r\n\t\t\t\tticking = false;\r\n\t\t\t\tfn.apply(thisArg, args);\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n}\r\n\r\n// Implementation based on https://github.com/marcj/css-element-queries\r\nfunction createResizer(handler) {\r\n\tvar resizer = document.createElement('div');\r\n\tvar cls = CSS_PREFIX + 'size-monitor';\r\n\tvar maxSize = 1000000;\r\n\tvar style =\r\n\t\t'position:absolute;' +\r\n\t\t'left:0;' +\r\n\t\t'top:0;' +\r\n\t\t'right:0;' +\r\n\t\t'bottom:0;' +\r\n\t\t'overflow:hidden;' +\r\n\t\t'pointer-events:none;' +\r\n\t\t'visibility:hidden;' +\r\n\t\t'z-index:-1;';\r\n\r\n\tresizer.style.cssText = style;\r\n\tresizer.className = cls;\r\n\tresizer.innerHTML =\r\n\t\t'
' +\r\n\t\t\t'
' +\r\n\t\t\t'
' +\r\n\t\t'
' +\r\n\t\t'
' +\r\n\t\t\t'
' +\r\n\t\t\t'
' +\r\n\t\t'
';\r\n\r\n\tvar expand = resizer.childNodes[0];\r\n\tvar shrink = resizer.childNodes[1];\r\n\r\n\tresizer._reset = function() {\r\n\t\texpand.scrollLeft = maxSize;\r\n\t\texpand.scrollTop = maxSize;\r\n\t\tshrink.scrollLeft = maxSize;\r\n\t\tshrink.scrollTop = maxSize;\r\n\t};\r\n\tvar onScroll = function() {\r\n\t\tresizer._reset();\r\n\t\thandler();\r\n\t};\r\n\r\n\taddEventListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\r\n\taddEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\r\n\r\n\treturn resizer;\r\n}\r\n\r\n// https://davidwalsh.name/detect-node-insertion\r\nfunction watchForRender(node, handler) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\tvar proxy = expando.renderProxy = function(e) {\r\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\r\n\t\t\thandler();\r\n\t\t}\r\n\t};\r\n\r\n\thelpers.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\taddEventListener(node, type, proxy);\r\n\t});\r\n\r\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\r\n\t// is removed then added back immediately (same animation frame?). Accessing the\r\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\r\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\r\n\t// https://github.com/chartjs/Chart.js/issues/4737\r\n\texpando.reflow = !!node.offsetParent;\r\n\r\n\tnode.classList.add(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction unwatchForRender(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar proxy = expando.renderProxy;\r\n\r\n\tif (proxy) {\r\n\t\thelpers.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\t\tremoveEventListener(node, type, proxy);\r\n\t\t});\r\n\r\n\t\tdelete expando.renderProxy;\r\n\t}\r\n\r\n\tnode.classList.remove(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction addResizeListener(node, listener, chart) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\r\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\r\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\treturn listener(createEvent('resize', chart));\r\n\t\t}\r\n\t}));\r\n\r\n\t// The resizer needs to be attached to the node parent, so we first need to be\r\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\r\n\twatchForRender(node, function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\tvar container = node.parentNode;\r\n\t\t\tif (container && container !== resizer.parentNode) {\r\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\r\n\t\t\t}\r\n\r\n\t\t\t// The container size might have changed, let's reset the resizer state.\r\n\t\t\tresizer._reset();\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction removeResizeListener(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar resizer = expando.resizer;\r\n\r\n\tdelete expando.resizer;\r\n\tunwatchForRender(node);\r\n\r\n\tif (resizer && resizer.parentNode) {\r\n\t\tresizer.parentNode.removeChild(resizer);\r\n\t}\r\n}\r\n\r\nfunction injectCSS(platform, css) {\r\n\t// http://stackoverflow.com/q/3922139\r\n\tvar style = platform._style || document.createElement('style');\r\n\tif (!platform._style) {\r\n\t\tplatform._style = style;\r\n\t\tcss = '/* Chart.js */\\n' + css;\r\n\t\tstyle.setAttribute('type', 'text/css');\r\n\t\tdocument.getElementsByTagName('head')[0].appendChild(style);\r\n\t}\r\n\r\n\tstyle.appendChild(document.createTextNode(css));\r\n}\r\n\r\nmodule.exports = {\r\n\t/**\r\n\t * This property holds whether this platform is enabled for the current environment.\r\n\t * Currently used by platform.js to select the proper implementation.\r\n\t * @private\r\n\t */\r\n\t_enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\r\n\r\n\tinitialize: function() {\r\n\t\tvar keyframes = 'from{opacity:0.99}to{opacity:1}';\r\n\r\n\t\tinjectCSS(this,\r\n\t\t\t// DOM rendering detection\r\n\t\t\t// https://davidwalsh.name/detect-node-insertion\r\n\t\t\t'@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\r\n\t\t\t'@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\r\n\t\t\t'.' + CSS_RENDER_MONITOR + '{' +\r\n\t\t\t\t'-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\r\n\t\t\t\t'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\r\n\t\t\t'}'\r\n\t\t);\r\n\t},\r\n\r\n\tacquireContext: function(item, config) {\r\n\t\tif (typeof item === 'string') {\r\n\t\t\titem = document.getElementById(item);\r\n\t\t} else if (item.length) {\r\n\t\t\t// Support for array based queries (such as jQuery)\r\n\t\t\titem = item[0];\r\n\t\t}\r\n\r\n\t\tif (item && item.canvas) {\r\n\t\t\t// Support for any object associated to a canvas (including a context2d)\r\n\t\t\titem = item.canvas;\r\n\t\t}\r\n\r\n\t\t// To prevent canvas fingerprinting, some add-ons undefine the getContext\r\n\t\t// method, for example: https://github.com/kkapsner/CanvasBlocker\r\n\t\t// https://github.com/chartjs/Chart.js/issues/2807\r\n\t\tvar context = item && item.getContext && item.getContext('2d');\r\n\r\n\t\t// `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\r\n\t\t// inside an iframe or when running in a protected environment. We could guess the\r\n\t\t// types from their toString() value but let's keep things flexible and assume it's\r\n\t\t// a sufficient condition if the item has a context2D which has item as `canvas`.\r\n\t\t// https://github.com/chartjs/Chart.js/issues/3887\r\n\t\t// https://github.com/chartjs/Chart.js/issues/4102\r\n\t\t// https://github.com/chartjs/Chart.js/issues/4152\r\n\t\tif (context && context.canvas === item) {\r\n\t\t\tinitCanvas(item, config);\r\n\t\t\treturn context;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\treleaseContext: function(context) {\r\n\t\tvar canvas = context.canvas;\r\n\t\tif (!canvas[EXPANDO_KEY]) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar initial = canvas[EXPANDO_KEY].initial;\r\n\t\t['height', 'width'].forEach(function(prop) {\r\n\t\t\tvar value = initial[prop];\r\n\t\t\tif (helpers.isNullOrUndef(value)) {\r\n\t\t\t\tcanvas.removeAttribute(prop);\r\n\t\t\t} else {\r\n\t\t\t\tcanvas.setAttribute(prop, value);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers.each(initial.style || {}, function(value, key) {\r\n\t\t\tcanvas.style[key] = value;\r\n\t\t});\r\n\r\n\t\t// The canvas render size might have been changed (and thus the state stack discarded),\r\n\t\t// we can't use save() and restore() to restore the initial state. So make sure that at\r\n\t\t// least the canvas context is reset to the default state by setting the canvas width.\r\n\t\t// https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\r\n\t\tcanvas.width = canvas.width;\r\n\r\n\t\tdelete canvas[EXPANDO_KEY];\r\n\t},\r\n\r\n\taddEventListener: function(chart, type, listener) {\r\n\t\tvar canvas = chart.canvas;\r\n\t\tif (type === 'resize') {\r\n\t\t\t// Note: the resize event is not supported on all browsers.\r\n\t\t\taddResizeListener(canvas, listener, chart);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\r\n\t\tvar proxies = expando.proxies || (expando.proxies = {});\r\n\t\tvar proxy = proxies[chart.id + '_' + type] = function(event) {\r\n\t\t\tlistener(fromNativeEvent(event, chart));\r\n\t\t};\r\n\r\n\t\taddEventListener(canvas, type, proxy);\r\n\t},\r\n\r\n\tremoveEventListener: function(chart, type, listener) {\r\n\t\tvar canvas = chart.canvas;\r\n\t\tif (type === 'resize') {\r\n\t\t\t// Note: the resize event is not supported on all browsers.\r\n\t\t\tremoveResizeListener(canvas, listener);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar expando = listener[EXPANDO_KEY] || {};\r\n\t\tvar proxies = expando.proxies || {};\r\n\t\tvar proxy = proxies[chart.id + '_' + type];\r\n\t\tif (!proxy) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tremoveEventListener(canvas, type, proxy);\r\n\t}\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use EventTarget.addEventListener instead.\r\n * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\r\n * @function Chart.helpers.addEvent\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.addEvent = addEventListener;\r\n\r\n/**\r\n * Provided for backward compatibility, use EventTarget.removeEventListener instead.\r\n * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\r\n * @function Chart.helpers.removeEvent\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.removeEvent = removeEventListener;\r\n\r\n},{\"46\":46}],49:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\nvar basic = require(47);\r\nvar dom = require(48);\r\n\r\n// @TODO Make possible to select another platform at build time.\r\nvar implementation = dom._enabled ? dom : basic;\r\n\r\n/**\r\n * @namespace Chart.platform\r\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\r\n * @since 2.4.0\r\n */\r\nmodule.exports = helpers.extend({\r\n\t/**\r\n\t * @since 2.7.0\r\n\t */\r\n\tinitialize: function() {},\r\n\r\n\t/**\r\n\t * Called at chart construction time, returns a context2d instance implementing\r\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\r\n\t * @param {*} item - The native item from which to acquire context (platform specific)\r\n\t * @param {Object} options - The chart options\r\n\t * @returns {CanvasRenderingContext2D} context2d instance\r\n\t */\r\n\tacquireContext: function() {},\r\n\r\n\t/**\r\n\t * Called at chart destruction time, releases any resources associated to the context\r\n\t * previously returned by the acquireContext() method.\r\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\r\n\t * @returns {Boolean} true if the method succeeded, else false\r\n\t */\r\n\treleaseContext: function() {},\r\n\r\n\t/**\r\n\t * Registers the specified listener on the given chart.\r\n\t * @param {Chart} chart - Chart from which to listen for event\r\n\t * @param {String} type - The ({@link IEvent}) type to listen for\r\n\t * @param {Function} listener - Receives a notification (an object that implements\r\n\t * the {@link IEvent} interface) when an event of the specified type occurs.\r\n\t */\r\n\taddEventListener: function() {},\r\n\r\n\t/**\r\n\t * Removes the specified listener previously registered with addEventListener.\r\n\t * @param {Chart} chart -Chart from which to remove the listener\r\n\t * @param {String} type - The ({@link IEvent}) type to remove\r\n\t * @param {Function} listener - The listener function to remove from the event target.\r\n\t */\r\n\tremoveEventListener: function() {}\r\n\r\n}, implementation);\r\n\r\n/**\r\n * @interface IPlatform\r\n * Allows abstracting platform dependencies away from the chart\r\n * @borrows Chart.platform.acquireContext as acquireContext\r\n * @borrows Chart.platform.releaseContext as releaseContext\r\n * @borrows Chart.platform.addEventListener as addEventListener\r\n * @borrows Chart.platform.removeEventListener as removeEventListener\r\n */\r\n\r\n/**\r\n * @interface IEvent\r\n * @prop {String} type - The event type name, possible values are:\r\n * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout',\r\n * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize'\r\n * @prop {*} native - The original native event (null for emulated events, e.g. 'resize')\r\n * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events)\r\n * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events)\r\n */\r\n\r\n},{\"46\":46,\"47\":47,\"48\":48}],50:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = {};\r\nmodule.exports.filler = require(51);\r\nmodule.exports.legend = require(52);\r\nmodule.exports.title = require(53);\r\n\r\n},{\"51\":51,\"52\":52,\"53\":53}],51:[function(require,module,exports){\r\n/**\r\n * Plugin based on discussion from the following Chart.js issues:\r\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\r\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\r\n */\r\n\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('global', {\r\n\tplugins: {\r\n\t\tfiller: {\r\n\t\t\tpropagate: true\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar mappers = {\r\n\tdataset: function(source) {\r\n\t\tvar index = source.fill;\r\n\t\tvar chart = source.chart;\r\n\t\tvar meta = chart.getDatasetMeta(index);\r\n\t\tvar visible = meta && chart.isDatasetVisible(index);\r\n\t\tvar points = (visible && meta.dataset._children) || [];\r\n\t\tvar length = points.length || 0;\r\n\r\n\t\treturn !length ? null : function(point, i) {\r\n\t\t\treturn (i < length && points[i]._view) || null;\r\n\t\t};\r\n\t},\r\n\r\n\tboundary: function(source) {\r\n\t\tvar boundary = source.boundary;\r\n\t\tvar x = boundary ? boundary.x : null;\r\n\t\tvar y = boundary ? boundary.y : null;\r\n\r\n\t\treturn function(point) {\r\n\t\t\treturn {\r\n\t\t\t\tx: x === null ? point.x : x,\r\n\t\t\t\ty: y === null ? point.y : y,\r\n\t\t\t};\r\n\t\t};\r\n\t}\r\n};\r\n\r\n// @todo if (fill[0] === '#')\r\nfunction decodeFill(el, index, count) {\r\n\tvar model = el._model || {};\r\n\tvar fill = model.fill;\r\n\tvar target;\r\n\r\n\tif (fill === undefined) {\r\n\t\tfill = !!model.backgroundColor;\r\n\t}\r\n\r\n\tif (fill === false || fill === null) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tif (fill === true) {\r\n\t\treturn 'origin';\r\n\t}\r\n\r\n\ttarget = parseFloat(fill, 10);\r\n\tif (isFinite(target) && Math.floor(target) === target) {\r\n\t\tif (fill[0] === '-' || fill[0] === '+') {\r\n\t\t\ttarget = index + target;\r\n\t\t}\r\n\r\n\t\tif (target === index || target < 0 || target >= count) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t}\r\n\r\n\tswitch (fill) {\r\n\t// compatibility\r\n\tcase 'bottom':\r\n\t\treturn 'start';\r\n\tcase 'top':\r\n\t\treturn 'end';\r\n\tcase 'zero':\r\n\t\treturn 'origin';\r\n\t// supported boundaries\r\n\tcase 'origin':\r\n\tcase 'start':\r\n\tcase 'end':\r\n\t\treturn fill;\r\n\t// invalid fill values\r\n\tdefault:\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction computeBoundary(source) {\r\n\tvar model = source.el._model || {};\r\n\tvar scale = source.el._scale || {};\r\n\tvar fill = source.fill;\r\n\tvar target = null;\r\n\tvar horizontal;\r\n\r\n\tif (isFinite(fill)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\t// Backward compatibility: until v3, we still need to support boundary values set on\r\n\t// the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\r\n\t// controllers might still use it (e.g. the Smith chart).\r\n\r\n\tif (fill === 'start') {\r\n\t\ttarget = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\r\n\t} else if (fill === 'end') {\r\n\t\ttarget = model.scaleTop === undefined ? scale.top : model.scaleTop;\r\n\t} else if (model.scaleZero !== undefined) {\r\n\t\ttarget = model.scaleZero;\r\n\t} else if (scale.getBasePosition) {\r\n\t\ttarget = scale.getBasePosition();\r\n\t} else if (scale.getBasePixel) {\r\n\t\ttarget = scale.getBasePixel();\r\n\t}\r\n\r\n\tif (target !== undefined && target !== null) {\r\n\t\tif (target.x !== undefined && target.y !== undefined) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\tif (typeof target === 'number' && isFinite(target)) {\r\n\t\t\thorizontal = scale.isHorizontal();\r\n\t\t\treturn {\r\n\t\t\t\tx: horizontal ? target : null,\r\n\t\t\t\ty: horizontal ? null : target\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n\r\nfunction resolveTarget(sources, index, propagate) {\r\n\tvar source = sources[index];\r\n\tvar fill = source.fill;\r\n\tvar visited = [index];\r\n\tvar target;\r\n\r\n\tif (!propagate) {\r\n\t\treturn fill;\r\n\t}\r\n\r\n\twhile (fill !== false && visited.indexOf(fill) === -1) {\r\n\t\tif (!isFinite(fill)) {\r\n\t\t\treturn fill;\r\n\t\t}\r\n\r\n\t\ttarget = sources[fill];\r\n\t\tif (!target) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (target.visible) {\r\n\t\t\treturn fill;\r\n\t\t}\r\n\r\n\t\tvisited.push(fill);\r\n\t\tfill = target.fill;\r\n\t}\r\n\r\n\treturn false;\r\n}\r\n\r\nfunction createMapper(source) {\r\n\tvar fill = source.fill;\r\n\tvar type = 'dataset';\r\n\r\n\tif (fill === false) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (!isFinite(fill)) {\r\n\t\ttype = 'boundary';\r\n\t}\r\n\r\n\treturn mappers[type](source);\r\n}\r\n\r\nfunction isDrawable(point) {\r\n\treturn point && !point.skip;\r\n}\r\n\r\nfunction drawArea(ctx, curve0, curve1, len0, len1) {\r\n\tvar i;\r\n\r\n\tif (!len0 || !len1) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// building first area curve (normal)\r\n\tctx.moveTo(curve0[0].x, curve0[0].y);\r\n\tfor (i = 1; i < len0; ++i) {\r\n\t\thelpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\r\n\t}\r\n\r\n\t// joining the two area curves\r\n\tctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\r\n\r\n\t// building opposite area curve (reverse)\r\n\tfor (i = len1 - 1; i > 0; --i) {\r\n\t\thelpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\r\n\t}\r\n}\r\n\r\nfunction doFill(ctx, points, mapper, view, color, loop) {\r\n\tvar count = points.length;\r\n\tvar span = view.spanGaps;\r\n\tvar curve0 = [];\r\n\tvar curve1 = [];\r\n\tvar len0 = 0;\r\n\tvar len1 = 0;\r\n\tvar i, ilen, index, p0, p1, d0, d1;\r\n\r\n\tctx.beginPath();\r\n\r\n\tfor (i = 0, ilen = (count + !!loop); i < ilen; ++i) {\r\n\t\tindex = i % count;\r\n\t\tp0 = points[index]._view;\r\n\t\tp1 = mapper(p0, index, view);\r\n\t\td0 = isDrawable(p0);\r\n\t\td1 = isDrawable(p1);\r\n\r\n\t\tif (d0 && d1) {\r\n\t\t\tlen0 = curve0.push(p0);\r\n\t\t\tlen1 = curve1.push(p1);\r\n\t\t} else if (len0 && len1) {\r\n\t\t\tif (!span) {\r\n\t\t\t\tdrawArea(ctx, curve0, curve1, len0, len1);\r\n\t\t\t\tlen0 = len1 = 0;\r\n\t\t\t\tcurve0 = [];\r\n\t\t\t\tcurve1 = [];\r\n\t\t\t} else {\r\n\t\t\t\tif (d0) {\r\n\t\t\t\t\tcurve0.push(p0);\r\n\t\t\t\t}\r\n\t\t\t\tif (d1) {\r\n\t\t\t\t\tcurve1.push(p1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdrawArea(ctx, curve0, curve1, len0, len1);\r\n\r\n\tctx.closePath();\r\n\tctx.fillStyle = color;\r\n\tctx.fill();\r\n}\r\n\r\nmodule.exports = {\r\n\tid: 'filler',\r\n\r\n\tafterDatasetsUpdate: function(chart, options) {\r\n\t\tvar count = (chart.data.datasets || []).length;\r\n\t\tvar propagate = options.propagate;\r\n\t\tvar sources = [];\r\n\t\tvar meta, i, el, source;\r\n\r\n\t\tfor (i = 0; i < count; ++i) {\r\n\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\tel = meta.dataset;\r\n\t\t\tsource = null;\r\n\r\n\t\t\tif (el && el._model && el instanceof elements.Line) {\r\n\t\t\t\tsource = {\r\n\t\t\t\t\tvisible: chart.isDatasetVisible(i),\r\n\t\t\t\t\tfill: decodeFill(el, i, count),\r\n\t\t\t\t\tchart: chart,\r\n\t\t\t\t\tel: el\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tmeta.$filler = source;\r\n\t\t\tsources.push(source);\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < count; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!source) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tsource.fill = resolveTarget(sources, i, propagate);\r\n\t\t\tsource.boundary = computeBoundary(source);\r\n\t\t\tsource.mapper = createMapper(source);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeDatasetDraw: function(chart, args) {\r\n\t\tvar meta = args.meta.$filler;\r\n\t\tif (!meta) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar ctx = chart.ctx;\r\n\t\tvar el = meta.el;\r\n\t\tvar view = el._view;\r\n\t\tvar points = el._children || [];\r\n\t\tvar mapper = meta.mapper;\r\n\t\tvar color = view.backgroundColor || defaults.global.defaultColor;\r\n\r\n\t\tif (mapper && color && points.length) {\r\n\t\t\thelpers.canvas.clipArea(ctx, chart.chartArea);\r\n\t\t\tdoFill(ctx, points, mapper, view, color, el._loop);\r\n\t\t\thelpers.canvas.unclipArea(ctx);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],52:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\nvar layouts = require(31);\r\n\r\nvar noop = helpers.noop;\r\n\r\ndefaults._set('global', {\r\n\tlegend: {\r\n\t\tdisplay: true,\r\n\t\tposition: 'top',\r\n\t\tfullWidth: true,\r\n\t\treverse: false,\r\n\t\tweight: 1000,\r\n\r\n\t\t// a callback that will handle\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.datasetIndex;\r\n\t\t\tvar ci = this.chart;\r\n\t\t\tvar meta = ci.getDatasetMeta(index);\r\n\r\n\t\t\t// See controller.isDatasetVisible comment\r\n\t\t\tmeta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\r\n\r\n\t\t\t// We hid a dataset ... rerender the chart\r\n\t\t\tci.update();\r\n\t\t},\r\n\r\n\t\tonHover: null,\r\n\r\n\t\tlabels: {\r\n\t\t\tboxWidth: 40,\r\n\t\t\tpadding: 10,\r\n\t\t\t// Generates labels shown in the legend\r\n\t\t\t// Valid properties to return:\r\n\t\t\t// text : text to display\r\n\t\t\t// fillStyle : fill of coloured box\r\n\t\t\t// strokeStyle: stroke of coloured box\r\n\t\t\t// hidden : if this legend item refers to a hidden item\r\n\t\t\t// lineCap : cap style for line\r\n\t\t\t// lineDash\r\n\t\t\t// lineDashOffset :\r\n\t\t\t// lineJoin :\r\n\t\t\t// lineWidth :\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\treturn helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttext: dataset.label,\r\n\t\t\t\t\t\tfillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]),\r\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(i),\r\n\t\t\t\t\t\tlineCap: dataset.borderCapStyle,\r\n\t\t\t\t\t\tlineDash: dataset.borderDash,\r\n\t\t\t\t\t\tlineDashOffset: dataset.borderDashOffset,\r\n\t\t\t\t\t\tlineJoin: dataset.borderJoinStyle,\r\n\t\t\t\t\t\tlineWidth: dataset.borderWidth,\r\n\t\t\t\t\t\tstrokeStyle: dataset.borderColor,\r\n\t\t\t\t\t\tpointStyle: dataset.pointStyle,\r\n\r\n\t\t\t\t\t\t// Below is extra data used for toggling the datasets\r\n\t\t\t\t\t\tdatasetIndex: i\r\n\t\t\t\t\t};\r\n\t\t\t\t}, this) : [];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tlegendCallback: function(chart) {\r\n\t\tvar text = [];\r\n\t\ttext.push('
    ');\r\n\t\tfor (var i = 0; i < chart.data.datasets.length; i++) {\r\n\t\t\ttext.push('
  • ');\r\n\t\t\tif (chart.data.datasets[i].label) {\r\n\t\t\t\ttext.push(chart.data.datasets[i].label);\r\n\t\t\t}\r\n\t\t\ttext.push('
  • ');\r\n\t\t}\r\n\t\ttext.push('
');\r\n\t\treturn text.join('');\r\n\t}\r\n});\r\n\r\n/**\r\n * Helper function to get the box width based on the usePointStyle option\r\n * @param labelopts {Object} the label options on the legend\r\n * @param fontSize {Number} the label font size\r\n * @return {Number} width of the color box area\r\n */\r\nfunction getBoxWidth(labelOpts, fontSize) {\r\n\treturn labelOpts.usePointStyle ?\r\n\t\tfontSize * Math.SQRT2 :\r\n\t\tlabelOpts.boxWidth;\r\n}\r\n\r\n/**\r\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\r\n */\r\nvar Legend = Element.extend({\r\n\r\n\tinitialize: function(config) {\r\n\t\thelpers.extend(this, config);\r\n\r\n\t\t// Contains hit boxes for each dataset (in dataset order)\r\n\t\tthis.legendHitBoxes = [];\r\n\r\n\t\t// Are we in doughnut mode which has a different data type\r\n\t\tthis.doughnutMode = false;\r\n\t},\r\n\r\n\t// These methods are ordered by lifecycle. Utilities then follow.\r\n\t// Any function defined here is inherited by all legend types.\r\n\t// Any function can be extended by the legend type\r\n\r\n\tbeforeUpdate: noop,\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = margins;\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\t\t// Labels\r\n\t\tme.beforeBuildLabels();\r\n\t\tme.buildLabels();\r\n\t\tme.afterBuildLabels();\r\n\r\n\t\t// Fit\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\t\t//\r\n\t\tme.afterUpdate();\r\n\r\n\t\treturn me.minSize;\r\n\t},\r\n\tafterUpdate: noop,\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: noop,\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\r\n\t\t// Reset minSize\r\n\t\tme.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\t},\r\n\tafterSetDimensions: noop,\r\n\r\n\t//\r\n\r\n\tbeforeBuildLabels: noop,\r\n\tbuildLabels: function() {\r\n\t\tvar me = this;\r\n\t\tvar labelOpts = me.options.labels || {};\r\n\t\tvar legendItems = helpers.callback(labelOpts.generateLabels, [me.chart], me) || [];\r\n\r\n\t\tif (labelOpts.filter) {\r\n\t\t\tlegendItems = legendItems.filter(function(item) {\r\n\t\t\t\treturn labelOpts.filter(item, me.chart.data);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (me.options.reverse) {\r\n\t\t\tlegendItems.reverse();\r\n\t\t}\r\n\r\n\t\tme.legendItems = legendItems;\r\n\t},\r\n\tafterBuildLabels: noop,\r\n\r\n\t//\r\n\r\n\tbeforeFit: noop,\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar labelOpts = opts.labels;\r\n\t\tvar display = opts.display;\r\n\r\n\t\tvar ctx = me.ctx;\r\n\r\n\t\tvar globalDefault = defaults.global;\r\n\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\r\n\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\r\n\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\r\n\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\r\n\r\n\t\t// Reset hit boxes\r\n\t\tvar hitboxes = me.legendHitBoxes = [];\r\n\r\n\t\tvar minSize = me.minSize;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\tminSize.width = me.maxWidth; // fill all the width\r\n\t\t\tminSize.height = display ? 10 : 0;\r\n\t\t} else {\r\n\t\t\tminSize.width = display ? 10 : 0;\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t}\r\n\r\n\t\t// Increase sizes here\r\n\t\tif (display) {\r\n\t\t\tctx.font = labelFont;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\t// Labels\r\n\r\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\r\n\t\t\t\tvar lineWidths = me.lineWidths = [0];\r\n\t\t\t\tvar totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0;\r\n\r\n\t\t\t\tctx.textAlign = 'left';\r\n\t\t\t\tctx.textBaseline = 'top';\r\n\r\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\r\n\r\n\t\t\t\t\tif (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) {\r\n\t\t\t\t\t\ttotalHeight += fontSize + (labelOpts.padding);\r\n\t\t\t\t\t\tlineWidths[lineWidths.length] = me.left;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\r\n\t\t\t\t\thitboxes[i] = {\r\n\t\t\t\t\t\tleft: 0,\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\twidth: width,\r\n\t\t\t\t\t\theight: fontSize\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tminSize.height += totalHeight;\r\n\r\n\t\t\t} else {\r\n\t\t\t\tvar vPadding = labelOpts.padding;\r\n\t\t\t\tvar columnWidths = me.columnWidths = [];\r\n\t\t\t\tvar totalWidth = labelOpts.padding;\r\n\t\t\t\tvar currentColWidth = 0;\r\n\t\t\t\tvar currentColHeight = 0;\r\n\t\t\t\tvar itemHeight = fontSize + vPadding;\r\n\r\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\r\n\r\n\t\t\t\t\t// If too tall, go to new column\r\n\t\t\t\t\tif (currentColHeight + itemHeight > minSize.height) {\r\n\t\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\r\n\t\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\r\n\r\n\t\t\t\t\t\tcurrentColWidth = 0;\r\n\t\t\t\t\t\tcurrentColHeight = 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Get max width\r\n\t\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\r\n\t\t\t\t\tcurrentColHeight += itemHeight;\r\n\r\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\r\n\t\t\t\t\thitboxes[i] = {\r\n\t\t\t\t\t\tleft: 0,\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\twidth: itemWidth,\r\n\t\t\t\t\t\theight: fontSize\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\r\n\t\t\t\ttotalWidth += currentColWidth;\r\n\t\t\t\tcolumnWidths.push(currentColWidth);\r\n\t\t\t\tminSize.width += totalWidth;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.width = minSize.width;\r\n\t\tme.height = minSize.height;\r\n\t},\r\n\tafterFit: noop,\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\r\n\t},\r\n\r\n\t// Actually draw the legend on the canvas\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar labelOpts = opts.labels;\r\n\t\tvar globalDefault = defaults.global;\r\n\t\tvar lineDefault = globalDefault.elements.line;\r\n\t\tvar legendWidth = me.width;\r\n\t\tvar lineWidths = me.lineWidths;\r\n\r\n\t\tif (opts.display) {\r\n\t\t\tvar ctx = me.ctx;\r\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\t\t\tvar fontColor = valueOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor);\r\n\t\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\r\n\t\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\r\n\t\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\r\n\t\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\r\n\t\t\tvar cursor;\r\n\r\n\t\t\t// Canvas setup\r\n\t\t\tctx.textAlign = 'left';\r\n\t\t\tctx.textBaseline = 'middle';\r\n\t\t\tctx.lineWidth = 0.5;\r\n\t\t\tctx.strokeStyle = fontColor; // for strikethrough effect\r\n\t\t\tctx.fillStyle = fontColor; // render in correct colour\r\n\t\t\tctx.font = labelFont;\r\n\r\n\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\tvar hitboxes = me.legendHitBoxes;\r\n\r\n\t\t\t// current position\r\n\t\t\tvar drawLegendBox = function(x, y, legendItem) {\r\n\t\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Set the ctx for the box\r\n\t\t\t\tctx.save();\r\n\r\n\t\t\t\tctx.fillStyle = valueOrDefault(legendItem.fillStyle, globalDefault.defaultColor);\r\n\t\t\t\tctx.lineCap = valueOrDefault(legendItem.lineCap, lineDefault.borderCapStyle);\r\n\t\t\t\tctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset);\r\n\t\t\t\tctx.lineJoin = valueOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle);\r\n\t\t\t\tctx.lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth);\r\n\t\t\t\tctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, globalDefault.defaultColor);\r\n\t\t\t\tvar isLineWidthZero = (valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth) === 0);\r\n\r\n\t\t\t\tif (ctx.setLineDash) {\r\n\t\t\t\t\t// IE 9 and 10 do not support line dash\r\n\t\t\t\t\tctx.setLineDash(valueOrDefault(legendItem.lineDash, lineDefault.borderDash));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (opts.labels && opts.labels.usePointStyle) {\r\n\t\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\r\n\t\t\t\t\t// x and y to be center of figure (instead of top left)\r\n\t\t\t\t\tvar radius = fontSize * Math.SQRT2 / 2;\r\n\t\t\t\t\tvar offSet = radius / Math.SQRT2;\r\n\t\t\t\t\tvar centerX = x + offSet;\r\n\t\t\t\t\tvar centerY = y + offSet;\r\n\r\n\t\t\t\t\t// Draw pointStyle as legend symbol\r\n\t\t\t\t\thelpers.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Draw box as legend symbol\r\n\t\t\t\t\tif (!isLineWidthZero) {\r\n\t\t\t\t\t\tctx.strokeRect(x, y, boxWidth, fontSize);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tctx.fillRect(x, y, boxWidth, fontSize);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tctx.restore();\r\n\t\t\t};\r\n\t\t\tvar fillText = function(x, y, legendItem, textWidth) {\r\n\t\t\t\tvar halfFontSize = fontSize / 2;\r\n\t\t\t\tvar xLeft = boxWidth + halfFontSize + x;\r\n\t\t\t\tvar yMiddle = y + halfFontSize;\r\n\r\n\t\t\t\tctx.fillText(legendItem.text, xLeft, yMiddle);\r\n\r\n\t\t\t\tif (legendItem.hidden) {\r\n\t\t\t\t\t// Strikethrough the text if hidden\r\n\t\t\t\t\tctx.beginPath();\r\n\t\t\t\t\tctx.lineWidth = 2;\r\n\t\t\t\t\tctx.moveTo(xLeft, yMiddle);\r\n\t\t\t\t\tctx.lineTo(xLeft + textWidth, yMiddle);\r\n\t\t\t\t\tctx.stroke();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t// Horizontal\r\n\t\t\tvar isHorizontal = me.isHorizontal();\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tcursor = {\r\n\t\t\t\t\tx: me.left + ((legendWidth - lineWidths[0]) / 2),\r\n\t\t\t\t\ty: me.top + labelOpts.padding,\r\n\t\t\t\t\tline: 0\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\tcursor = {\r\n\t\t\t\t\tx: me.left + labelOpts.padding,\r\n\t\t\t\t\ty: me.top + labelOpts.padding,\r\n\t\t\t\t\tline: 0\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tvar itemHeight = fontSize + labelOpts.padding;\r\n\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\tvar textWidth = ctx.measureText(legendItem.text).width;\r\n\t\t\t\tvar width = boxWidth + (fontSize / 2) + textWidth;\r\n\t\t\t\tvar x = cursor.x;\r\n\t\t\t\tvar y = cursor.y;\r\n\r\n\t\t\t\tif (isHorizontal) {\r\n\t\t\t\t\tif (x + width >= legendWidth) {\r\n\t\t\t\t\t\ty = cursor.y += itemHeight;\r\n\t\t\t\t\t\tcursor.line++;\r\n\t\t\t\t\t\tx = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (y + itemHeight > me.bottom) {\r\n\t\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\r\n\t\t\t\t\ty = cursor.y = me.top + labelOpts.padding;\r\n\t\t\t\t\tcursor.line++;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdrawLegendBox(x, y, legendItem);\r\n\r\n\t\t\t\thitboxes[i].left = x;\r\n\t\t\t\thitboxes[i].top = y;\r\n\r\n\t\t\t\t// Fill the actual label\r\n\t\t\t\tfillText(x, y, legendItem, textWidth);\r\n\r\n\t\t\t\tif (isHorizontal) {\r\n\t\t\t\t\tcursor.x += width + (labelOpts.padding);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcursor.y += itemHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Handle an event\r\n\t * @private\r\n\t * @param {IEvent} event - The event to handle\r\n\t * @return {Boolean} true if a change occured\r\n\t */\r\n\thandleEvent: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar type = e.type === 'mouseup' ? 'click' : e.type;\r\n\t\tvar changed = false;\r\n\r\n\t\tif (type === 'mousemove') {\r\n\t\t\tif (!opts.onHover) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t} else if (type === 'click') {\r\n\t\t\tif (!opts.onClick) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Chart event already has relative position in it\r\n\t\tvar x = e.x;\r\n\t\tvar y = e.y;\r\n\r\n\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\r\n\t\t\t// See if we are touching one of the dataset boxes\r\n\t\t\tvar lh = me.legendHitBoxes;\r\n\t\t\tfor (var i = 0; i < lh.length; ++i) {\r\n\t\t\t\tvar hitBox = lh[i];\r\n\r\n\t\t\t\tif (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\r\n\t\t\t\t\t// Touching an element\r\n\t\t\t\t\tif (type === 'click') {\r\n\t\t\t\t\t\t// use e.native for backwards compatibility\r\n\t\t\t\t\t\topts.onClick.call(me, e.native, me.legendItems[i]);\r\n\t\t\t\t\t\tchanged = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t} else if (type === 'mousemove') {\r\n\t\t\t\t\t\t// use e.native for backwards compatibility\r\n\t\t\t\t\t\topts.onHover.call(me, e.native, me.legendItems[i]);\r\n\t\t\t\t\t\tchanged = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n});\r\n\r\nfunction createNewLegendAndAttach(chart, legendOpts) {\r\n\tvar legend = new Legend({\r\n\t\tctx: chart.ctx,\r\n\t\toptions: legendOpts,\r\n\t\tchart: chart\r\n\t});\r\n\r\n\tlayouts.configure(chart, legend, legendOpts);\r\n\tlayouts.addBox(chart, legend);\r\n\tchart.legend = legend;\r\n}\r\n\r\nmodule.exports = {\r\n\tid: 'legend',\r\n\r\n\t/**\r\n\t * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\r\n\t * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\r\n\t * the plugin, which one will be re-exposed in the chart.js file.\r\n\t * https://github.com/chartjs/Chart.js/pull/2640\r\n\t * @private\r\n\t */\r\n\t_element: Legend,\r\n\r\n\tbeforeInit: function(chart) {\r\n\t\tvar legendOpts = chart.options.legend;\r\n\r\n\t\tif (legendOpts) {\r\n\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeUpdate: function(chart) {\r\n\t\tvar legendOpts = chart.options.legend;\r\n\t\tvar legend = chart.legend;\r\n\r\n\t\tif (legendOpts) {\r\n\t\t\thelpers.mergeIf(legendOpts, defaults.global.legend);\r\n\r\n\t\t\tif (legend) {\r\n\t\t\t\tlayouts.configure(chart, legend, legendOpts);\r\n\t\t\t\tlegend.options = legendOpts;\r\n\t\t\t} else {\r\n\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\r\n\t\t\t}\r\n\t\t} else if (legend) {\r\n\t\t\tlayouts.removeBox(chart, legend);\r\n\t\t\tdelete chart.legend;\r\n\t\t}\r\n\t},\r\n\r\n\tafterEvent: function(chart, e) {\r\n\t\tvar legend = chart.legend;\r\n\t\tif (legend) {\r\n\t\t\tlegend.handleEvent(e);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"26\":26,\"27\":27,\"31\":31,\"46\":46}],53:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\nvar layouts = require(31);\r\n\r\nvar noop = helpers.noop;\r\n\r\ndefaults._set('global', {\r\n\ttitle: {\r\n\t\tdisplay: false,\r\n\t\tfontStyle: 'bold',\r\n\t\tfullWidth: true,\r\n\t\tlineHeight: 1.2,\r\n\t\tpadding: 10,\r\n\t\tposition: 'top',\r\n\t\ttext: '',\r\n\t\tweight: 2000 // by default greater than legend (1000) to be above\r\n\t}\r\n});\r\n\r\n/**\r\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\r\n */\r\nvar Title = Element.extend({\r\n\tinitialize: function(config) {\r\n\t\tvar me = this;\r\n\t\thelpers.extend(me, config);\r\n\r\n\t\t// Contains hit boxes for each dataset (in dataset order)\r\n\t\tme.legendHitBoxes = [];\r\n\t},\r\n\r\n\t// These methods are ordered by lifecycle. Utilities then follow.\r\n\r\n\tbeforeUpdate: noop,\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = margins;\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\t\t// Labels\r\n\t\tme.beforeBuildLabels();\r\n\t\tme.buildLabels();\r\n\t\tme.afterBuildLabels();\r\n\r\n\t\t// Fit\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\t\t//\r\n\t\tme.afterUpdate();\r\n\r\n\t\treturn me.minSize;\r\n\r\n\t},\r\n\tafterUpdate: noop,\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: noop,\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\r\n\t\t// Reset minSize\r\n\t\tme.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\t},\r\n\tafterSetDimensions: noop,\r\n\r\n\t//\r\n\r\n\tbeforeBuildLabels: noop,\r\n\tbuildLabels: noop,\r\n\tafterBuildLabels: noop,\r\n\r\n\t//\r\n\r\n\tbeforeFit: noop,\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\t\tvar opts = me.options;\r\n\t\tvar display = opts.display;\r\n\t\tvar fontSize = valueOrDefault(opts.fontSize, defaults.global.defaultFontSize);\r\n\t\tvar minSize = me.minSize;\r\n\t\tvar lineCount = helpers.isArray(opts.text) ? opts.text.length : 1;\r\n\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\r\n\t\tvar textSize = display ? (lineCount * lineHeight) + (opts.padding * 2) : 0;\r\n\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tminSize.width = me.maxWidth; // fill all the width\r\n\t\t\tminSize.height = textSize;\r\n\t\t} else {\r\n\t\t\tminSize.width = textSize;\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t}\r\n\r\n\t\tme.width = minSize.width;\r\n\t\tme.height = minSize.height;\r\n\r\n\t},\r\n\tafterFit: noop,\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\tvar pos = this.options.position;\r\n\t\treturn pos === 'top' || pos === 'bottom';\r\n\t},\r\n\r\n\t// Actually draw the title block on the canvas\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\t\tvar opts = me.options;\r\n\t\tvar globalDefaults = defaults.global;\r\n\r\n\t\tif (opts.display) {\r\n\t\t\tvar fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize);\r\n\t\t\tvar fontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle);\r\n\t\t\tvar fontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily);\r\n\t\t\tvar titleFont = helpers.fontString(fontSize, fontStyle, fontFamily);\r\n\t\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\r\n\t\t\tvar offset = lineHeight / 2 + opts.padding;\r\n\t\t\tvar rotation = 0;\r\n\t\t\tvar top = me.top;\r\n\t\t\tvar left = me.left;\r\n\t\t\tvar bottom = me.bottom;\r\n\t\t\tvar right = me.right;\r\n\t\t\tvar maxWidth, titleX, titleY;\r\n\r\n\t\t\tctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour\r\n\t\t\tctx.font = titleFont;\r\n\r\n\t\t\t// Horizontal\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\r\n\t\t\t\ttitleY = top + offset;\r\n\t\t\t\tmaxWidth = right - left;\r\n\t\t\t} else {\r\n\t\t\t\ttitleX = opts.position === 'left' ? left + offset : right - offset;\r\n\t\t\t\ttitleY = top + ((bottom - top) / 2);\r\n\t\t\t\tmaxWidth = bottom - top;\r\n\t\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\r\n\t\t\t}\r\n\r\n\t\t\tctx.save();\r\n\t\t\tctx.translate(titleX, titleY);\r\n\t\t\tctx.rotate(rotation);\r\n\t\t\tctx.textAlign = 'center';\r\n\t\t\tctx.textBaseline = 'middle';\r\n\r\n\t\t\tvar text = opts.text;\r\n\t\t\tif (helpers.isArray(text)) {\r\n\t\t\t\tvar y = 0;\r\n\t\t\t\tfor (var i = 0; i < text.length; ++i) {\r\n\t\t\t\t\tctx.fillText(text[i], 0, y, maxWidth);\r\n\t\t\t\t\ty += lineHeight;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tctx.fillText(text, 0, 0, maxWidth);\r\n\t\t\t}\r\n\r\n\t\t\tctx.restore();\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction createNewTitleBlockAndAttach(chart, titleOpts) {\r\n\tvar title = new Title({\r\n\t\tctx: chart.ctx,\r\n\t\toptions: titleOpts,\r\n\t\tchart: chart\r\n\t});\r\n\r\n\tlayouts.configure(chart, title, titleOpts);\r\n\tlayouts.addBox(chart, title);\r\n\tchart.titleBlock = title;\r\n}\r\n\r\nmodule.exports = {\r\n\tid: 'title',\r\n\r\n\t/**\r\n\t * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\r\n\t * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\r\n\t * the plugin, which one will be re-exposed in the chart.js file.\r\n\t * https://github.com/chartjs/Chart.js/pull/2640\r\n\t * @private\r\n\t */\r\n\t_element: Title,\r\n\r\n\tbeforeInit: function(chart) {\r\n\t\tvar titleOpts = chart.options.title;\r\n\r\n\t\tif (titleOpts) {\r\n\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeUpdate: function(chart) {\r\n\t\tvar titleOpts = chart.options.title;\r\n\t\tvar titleBlock = chart.titleBlock;\r\n\r\n\t\tif (titleOpts) {\r\n\t\t\thelpers.mergeIf(titleOpts, defaults.global.title);\r\n\r\n\t\t\tif (titleBlock) {\r\n\t\t\t\tlayouts.configure(chart, titleBlock, titleOpts);\r\n\t\t\t\ttitleBlock.options = titleOpts;\r\n\t\t\t} else {\r\n\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\r\n\t\t\t}\r\n\t\t} else if (titleBlock) {\r\n\t\t\tlayouts.removeBox(chart, titleBlock);\r\n\t\t\tdelete chart.titleBlock;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"26\":26,\"27\":27,\"31\":31,\"46\":46}],54:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar Scale = require(33);\r\nvar scaleService = require(34);\r\n\r\nmodule.exports = function() {\r\n\r\n\t// Default config for a category scale\r\n\tvar defaultConfig = {\r\n\t\tposition: 'bottom'\r\n\t};\r\n\r\n\tvar DatasetScale = Scale.extend({\r\n\t\t/**\r\n\t\t* Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those\r\n\t\t* else fall back to data.labels\r\n\t\t* @private\r\n\t\t*/\r\n\t\tgetLabels: function() {\r\n\t\t\tvar data = this.chart.data;\r\n\t\t\treturn this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels;\r\n\t\t},\r\n\r\n\t\tdetermineDataLimits: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar labels = me.getLabels();\r\n\t\t\tme.minIndex = 0;\r\n\t\t\tme.maxIndex = labels.length - 1;\r\n\t\t\tvar findIndex;\r\n\r\n\t\t\tif (me.options.ticks.min !== undefined) {\r\n\t\t\t\t// user specified min value\r\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.min);\r\n\t\t\t\tme.minIndex = findIndex !== -1 ? findIndex : me.minIndex;\r\n\t\t\t}\r\n\r\n\t\t\tif (me.options.ticks.max !== undefined) {\r\n\t\t\t\t// user specified max value\r\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.max);\r\n\t\t\t\tme.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex;\r\n\t\t\t}\r\n\r\n\t\t\tme.min = labels[me.minIndex];\r\n\t\t\tme.max = labels[me.maxIndex];\r\n\t\t},\r\n\r\n\t\tbuildTicks: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar labels = me.getLabels();\r\n\t\t\t// If we are viewing some subset of labels, slice the original array\r\n\t\t\tme.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1);\r\n\t\t},\r\n\r\n\t\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar data = me.chart.data;\r\n\t\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\t\tif (data.yLabels && !isHorizontal) {\r\n\t\t\t\treturn me.getRightValue(data.datasets[datasetIndex].data[index]);\r\n\t\t\t}\r\n\t\t\treturn me.ticks[index - me.minIndex];\r\n\t\t},\r\n\r\n\t\t// Used to get data value locations. Value can either be an index or a numerical value\r\n\t\tgetPixelForValue: function(value, index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar offset = me.options.offset;\r\n\t\t\t// 1 is added because we need the length but we have the indexes\r\n\t\t\tvar offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1);\r\n\r\n\t\t\t// If value is a data object, then index is the index in the data array,\r\n\t\t\t// not the index of the scale. We need to change that.\r\n\t\t\tvar valueCategory;\r\n\t\t\tif (value !== undefined && value !== null) {\r\n\t\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\r\n\t\t\t}\r\n\t\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\r\n\t\t\t\tvar labels = me.getLabels();\r\n\t\t\t\tvalue = valueCategory || value;\r\n\t\t\t\tvar idx = labels.indexOf(value);\r\n\t\t\t\tindex = idx !== -1 ? idx : index;\r\n\t\t\t}\r\n\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tvar valueWidth = me.width / offsetAmt;\r\n\t\t\t\tvar widthOffset = (valueWidth * (index - me.minIndex));\r\n\r\n\t\t\t\tif (offset) {\r\n\t\t\t\t\twidthOffset += (valueWidth / 2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn me.left + Math.round(widthOffset);\r\n\t\t\t}\r\n\t\t\tvar valueHeight = me.height / offsetAmt;\r\n\t\t\tvar heightOffset = (valueHeight * (index - me.minIndex));\r\n\r\n\t\t\tif (offset) {\r\n\t\t\t\theightOffset += (valueHeight / 2);\r\n\t\t\t}\r\n\r\n\t\t\treturn me.top + Math.round(heightOffset);\r\n\t\t},\r\n\t\tgetPixelForTick: function(index) {\r\n\t\t\treturn this.getPixelForValue(this.ticks[index], index + this.minIndex, null);\r\n\t\t},\r\n\t\tgetValueForPixel: function(pixel) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar offset = me.options.offset;\r\n\t\t\tvar value;\r\n\t\t\tvar offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\r\n\t\t\tvar horz = me.isHorizontal();\r\n\t\t\tvar valueDimension = (horz ? me.width : me.height) / offsetAmt;\r\n\r\n\t\t\tpixel -= horz ? me.left : me.top;\r\n\r\n\t\t\tif (offset) {\r\n\t\t\t\tpixel -= (valueDimension / 2);\r\n\t\t\t}\r\n\r\n\t\t\tif (pixel <= 0) {\r\n\t\t\t\tvalue = 0;\r\n\t\t\t} else {\r\n\t\t\t\tvalue = Math.round(pixel / valueDimension);\r\n\t\t\t}\r\n\r\n\t\t\treturn value + me.minIndex;\r\n\t\t},\r\n\t\tgetBasePixel: function() {\r\n\t\t\treturn this.bottom;\r\n\t\t}\r\n\t});\r\n\r\n\tscaleService.registerScaleType('category', DatasetScale, defaultConfig);\r\n};\r\n\r\n},{\"33\":33,\"34\":34}],55:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar scaleService = require(34);\r\nvar Ticks = require(35);\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tvar defaultConfig = {\r\n\t\tposition: 'left',\r\n\t\tticks: {\r\n\t\t\tcallback: Ticks.formatters.linear\r\n\t\t}\r\n\t};\r\n\r\n\tvar LinearScale = Chart.LinearScaleBase.extend({\r\n\r\n\t\tdetermineDataLimits: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar data = chart.data;\r\n\t\t\tvar datasets = data.datasets;\r\n\t\t\tvar isHorizontal = me.isHorizontal();\r\n\t\t\tvar DEFAULT_MIN = 0;\r\n\t\t\tvar DEFAULT_MAX = 1;\r\n\r\n\t\t\tfunction IDMatches(meta) {\r\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\r\n\t\t\t}\r\n\r\n\t\t\t// First Calculate the range\r\n\t\t\tme.min = null;\r\n\t\t\tme.max = null;\r\n\r\n\t\t\tvar hasStacks = opts.stacked;\r\n\t\t\tif (hasStacks === undefined) {\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tif (hasStacks) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\r\n\t\t\t\t\t\tmeta.stack !== undefined) {\r\n\t\t\t\t\t\thasStacks = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (opts.stacked || hasStacks) {\r\n\t\t\t\tvar valuesPerStack = {};\r\n\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tvar key = [\r\n\t\t\t\t\t\tmeta.type,\r\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\r\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\r\n\t\t\t\t\t\tmeta.stack\r\n\t\t\t\t\t].join('.');\r\n\r\n\t\t\t\t\tif (valuesPerStack[key] === undefined) {\r\n\t\t\t\t\t\tvaluesPerStack[key] = {\r\n\t\t\t\t\t\t\tpositiveValues: [],\r\n\t\t\t\t\t\t\tnegativeValues: []\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Store these per type\r\n\t\t\t\t\tvar positiveValues = valuesPerStack[key].positiveValues;\r\n\t\t\t\t\tvar negativeValues = valuesPerStack[key].negativeValues;\r\n\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tpositiveValues[index] = positiveValues[index] || 0;\r\n\t\t\t\t\t\t\tnegativeValues[index] = negativeValues[index] || 0;\r\n\r\n\t\t\t\t\t\t\tif (opts.relativePoints) {\r\n\t\t\t\t\t\t\t\tpositiveValues[index] = 100;\r\n\t\t\t\t\t\t\t} else if (value < 0) {\r\n\t\t\t\t\t\t\t\tnegativeValues[index] += value;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tpositiveValues[index] += value;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\r\n\t\t\t\t\tvar values = valuesForType.positiveValues.concat(valuesForType.negativeValues);\r\n\t\t\t\t\tvar minVal = helpers.min(values);\r\n\t\t\t\t\tvar maxVal = helpers.max(values);\r\n\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\r\n\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\r\n\t\t\t\t});\r\n\r\n\t\t\t} else {\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (me.min === null) {\r\n\t\t\t\t\t\t\t\tme.min = value;\r\n\t\t\t\t\t\t\t} else if (value < me.min) {\r\n\t\t\t\t\t\t\t\tme.min = value;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (me.max === null) {\r\n\t\t\t\t\t\t\t\tme.max = value;\r\n\t\t\t\t\t\t\t} else if (value > me.max) {\r\n\t\t\t\t\t\t\t\tme.max = value;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tme.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\r\n\t\t\tme.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\r\n\r\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\r\n\t\t\tthis.handleTickRangeOptions();\r\n\t\t},\r\n\t\tgetTickLimit: function() {\r\n\t\t\tvar maxTicks;\r\n\t\t\tvar me = this;\r\n\t\t\tvar tickOpts = me.options.ticks;\r\n\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50));\r\n\t\t\t} else {\r\n\t\t\t\t// The factor of 2 used to scale the font size has been experimentally determined.\r\n\t\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize);\r\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize)));\r\n\t\t\t}\r\n\r\n\t\t\treturn maxTicks;\r\n\t\t},\r\n\t\t// Called after the ticks are built. We need\r\n\t\thandleDirectionalChanges: function() {\r\n\t\t\tif (!this.isHorizontal()) {\r\n\t\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\r\n\t\t\t\tthis.ticks.reverse();\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t\t},\r\n\t\t// Utils\r\n\t\tgetPixelForValue: function(value) {\r\n\t\t\t// This must be called after fit has been run so that\r\n\t\t\t// this.left, this.top, this.right, and this.bottom have been defined\r\n\t\t\tvar me = this;\r\n\t\t\tvar start = me.start;\r\n\r\n\t\t\tvar rightValue = +me.getRightValue(value);\r\n\t\t\tvar pixel;\r\n\t\t\tvar range = me.end - start;\r\n\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tpixel = me.left + (me.width / range * (rightValue - start));\r\n\t\t\t} else {\r\n\t\t\t\tpixel = me.bottom - (me.height / range * (rightValue - start));\r\n\t\t\t}\r\n\t\t\treturn pixel;\r\n\t\t},\r\n\t\tgetValueForPixel: function(pixel) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar isHorizontal = me.isHorizontal();\r\n\t\t\tvar innerDimension = isHorizontal ? me.width : me.height;\r\n\t\t\tvar offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension;\r\n\t\t\treturn me.start + ((me.end - me.start) * offset);\r\n\t\t},\r\n\t\tgetPixelForTick: function(index) {\r\n\t\t\treturn this.getPixelForValue(this.ticksAsNumbers[index]);\r\n\t\t}\r\n\t});\r\n\r\n\tscaleService.registerScaleType('linear', LinearScale, defaultConfig);\r\n};\r\n\r\n},{\"26\":26,\"34\":34,\"35\":35,\"46\":46}],56:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\nvar Scale = require(33);\r\n\r\n/**\r\n * Generate a set of linear ticks\r\n * @param generationOptions the options used to generate the ticks\r\n * @param dataRange the range of the data\r\n * @returns {Array} array of tick values\r\n */\r\nfunction generateTicks(generationOptions, dataRange) {\r\n\tvar ticks = [];\r\n\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\r\n\t// \"nice number\" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\r\n\t// for details.\r\n\r\n\tvar factor;\r\n\tvar precision;\r\n\tvar spacing;\r\n\r\n\tif (generationOptions.stepSize && generationOptions.stepSize > 0) {\r\n\t\tspacing = generationOptions.stepSize;\r\n\t} else {\r\n\t\tvar niceRange = helpers.niceNum(dataRange.max - dataRange.min, false);\r\n\t\tspacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true);\r\n\r\n\t\tprecision = generationOptions.precision;\r\n\t\tif (precision !== undefined) {\r\n\t\t\t// If the user specified a precision, round to that number of decimal places\r\n\t\t\tfactor = Math.pow(10, precision);\r\n\t\t\tspacing = Math.ceil(spacing * factor) / factor;\r\n\t\t}\r\n\t}\r\n\tvar niceMin = Math.floor(dataRange.min / spacing) * spacing;\r\n\tvar niceMax = Math.ceil(dataRange.max / spacing) * spacing;\r\n\r\n\t// If min, max and stepSize is set and they make an evenly spaced scale use it.\r\n\tif (!helpers.isNullOrUndef(generationOptions.min) && !helpers.isNullOrUndef(generationOptions.max) && generationOptions.stepSize) {\r\n\t\t// If very close to our whole number, use it.\r\n\t\tif (helpers.almostWhole((generationOptions.max - generationOptions.min) / generationOptions.stepSize, spacing / 1000)) {\r\n\t\t\tniceMin = generationOptions.min;\r\n\t\t\tniceMax = generationOptions.max;\r\n\t\t}\r\n\t}\r\n\r\n\tvar numSpaces = (niceMax - niceMin) / spacing;\r\n\t// If very close to our rounded value, use it.\r\n\tif (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\r\n\t\tnumSpaces = Math.round(numSpaces);\r\n\t} else {\r\n\t\tnumSpaces = Math.ceil(numSpaces);\r\n\t}\r\n\r\n\tprecision = 1;\r\n\tif (spacing < 1) {\r\n\t\tprecision = Math.pow(10, 1 - Math.floor(helpers.log10(spacing)));\r\n\t\tniceMin = Math.round(niceMin * precision) / precision;\r\n\t\tniceMax = Math.round(niceMax * precision) / precision;\r\n\t}\r\n\tticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin);\r\n\tfor (var j = 1; j < numSpaces; ++j) {\r\n\t\tticks.push(Math.round((niceMin + j * spacing) * precision) / precision);\r\n\t}\r\n\tticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax);\r\n\r\n\treturn ticks;\r\n}\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tvar noop = helpers.noop;\r\n\r\n\tChart.LinearScaleBase = Scale.extend({\r\n\t\tgetRightValue: function(value) {\r\n\t\t\tif (typeof value === 'string') {\r\n\t\t\t\treturn +value;\r\n\t\t\t}\r\n\t\t\treturn Scale.prototype.getRightValue.call(this, value);\r\n\t\t},\r\n\r\n\t\thandleTickRangeOptions: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\r\n\t\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\r\n\t\t\t// axis, they can manually override it\r\n\t\t\tif (tickOpts.beginAtZero) {\r\n\t\t\t\tvar minSign = helpers.sign(me.min);\r\n\t\t\t\tvar maxSign = helpers.sign(me.max);\r\n\r\n\t\t\t\tif (minSign < 0 && maxSign < 0) {\r\n\t\t\t\t\t// move the top up to 0\r\n\t\t\t\t\tme.max = 0;\r\n\t\t\t\t} else if (minSign > 0 && maxSign > 0) {\r\n\t\t\t\t\t// move the bottom down to 0\r\n\t\t\t\t\tme.min = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\r\n\t\t\tvar setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\r\n\r\n\t\t\tif (tickOpts.min !== undefined) {\r\n\t\t\t\tme.min = tickOpts.min;\r\n\t\t\t} else if (tickOpts.suggestedMin !== undefined) {\r\n\t\t\t\tif (me.min === null) {\r\n\t\t\t\t\tme.min = tickOpts.suggestedMin;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (tickOpts.max !== undefined) {\r\n\t\t\t\tme.max = tickOpts.max;\r\n\t\t\t} else if (tickOpts.suggestedMax !== undefined) {\r\n\t\t\t\tif (me.max === null) {\r\n\t\t\t\t\tme.max = tickOpts.suggestedMax;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (setMin !== setMax) {\r\n\t\t\t\t// We set the min or the max but not both.\r\n\t\t\t\t// So ensure that our range is good\r\n\t\t\t\t// Inverted or 0 length range can happen when\r\n\t\t\t\t// ticks.min is set, and no datasets are visible\r\n\t\t\t\tif (me.min >= me.max) {\r\n\t\t\t\t\tif (setMin) {\r\n\t\t\t\t\t\tme.max = me.min + 1;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tme.min = me.max - 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (me.min === me.max) {\r\n\t\t\t\tme.max++;\r\n\r\n\t\t\t\tif (!tickOpts.beginAtZero) {\r\n\t\t\t\t\tme.min--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetTickLimit: noop,\r\n\t\thandleDirectionalChanges: noop,\r\n\r\n\t\tbuildTicks: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\t\t// Figure out what the max number of ticks we can support it is based on the size of\r\n\t\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\r\n\t\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\r\n\t\t\t// the graph. Make sure we always have at least 2 ticks\r\n\t\t\tvar maxTicks = me.getTickLimit();\r\n\t\t\tmaxTicks = Math.max(2, maxTicks);\r\n\r\n\t\t\tvar numericGeneratorOptions = {\r\n\t\t\t\tmaxTicks: maxTicks,\r\n\t\t\t\tmin: tickOpts.min,\r\n\t\t\t\tmax: tickOpts.max,\r\n\t\t\t\tprecision: tickOpts.precision,\r\n\t\t\t\tstepSize: helpers.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\r\n\t\t\t};\r\n\t\t\tvar ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\r\n\r\n\t\t\tme.handleDirectionalChanges();\r\n\r\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\r\n\t\t\t// range of the scale\r\n\t\t\tme.max = helpers.max(ticks);\r\n\t\t\tme.min = helpers.min(ticks);\r\n\r\n\t\t\tif (tickOpts.reverse) {\r\n\t\t\t\tticks.reverse();\r\n\r\n\t\t\t\tme.start = me.max;\r\n\t\t\t\tme.end = me.min;\r\n\t\t\t} else {\r\n\t\t\t\tme.start = me.min;\r\n\t\t\t\tme.end = me.max;\r\n\t\t\t}\r\n\t\t},\r\n\t\tconvertTicksToLabels: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tme.ticksAsNumbers = me.ticks.slice();\r\n\t\t\tme.zeroLineIndex = me.ticks.indexOf(0);\r\n\r\n\t\t\tScale.prototype.convertTicksToLabels.call(me);\r\n\t\t}\r\n\t});\r\n};\r\n\r\n},{\"33\":33,\"46\":46}],57:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\nvar Scale = require(33);\r\nvar scaleService = require(34);\r\nvar Ticks = require(35);\r\n\r\n/**\r\n * Generate a set of logarithmic ticks\r\n * @param generationOptions the options used to generate the ticks\r\n * @param dataRange the range of the data\r\n * @returns {Array} array of tick values\r\n */\r\nfunction generateTicks(generationOptions, dataRange) {\r\n\tvar ticks = [];\r\n\tvar valueOrDefault = helpers.valueOrDefault;\r\n\r\n\t// Figure out what the max number of ticks we can support it is based on the size of\r\n\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\r\n\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\r\n\t// the graph\r\n\tvar tickVal = valueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min))));\r\n\r\n\tvar endExp = Math.floor(helpers.log10(dataRange.max));\r\n\tvar endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\r\n\tvar exp, significand;\r\n\r\n\tif (tickVal === 0) {\r\n\t\texp = Math.floor(helpers.log10(dataRange.minNotZero));\r\n\t\tsignificand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\r\n\r\n\t\tticks.push(tickVal);\r\n\t\ttickVal = significand * Math.pow(10, exp);\r\n\t} else {\r\n\t\texp = Math.floor(helpers.log10(tickVal));\r\n\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp));\r\n\t}\r\n\tvar precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\r\n\r\n\tdo {\r\n\t\tticks.push(tickVal);\r\n\r\n\t\t++significand;\r\n\t\tif (significand === 10) {\r\n\t\t\tsignificand = 1;\r\n\t\t\t++exp;\r\n\t\t\tprecision = exp >= 0 ? 1 : precision;\r\n\t\t}\r\n\r\n\t\ttickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\r\n\t} while (exp < endExp || (exp === endExp && significand < endSignificand));\r\n\r\n\tvar lastTick = valueOrDefault(generationOptions.max, tickVal);\r\n\tticks.push(lastTick);\r\n\r\n\treturn ticks;\r\n}\r\n\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tvar defaultConfig = {\r\n\t\tposition: 'left',\r\n\r\n\t\t// label settings\r\n\t\tticks: {\r\n\t\t\tcallback: Ticks.formatters.logarithmic\r\n\t\t}\r\n\t};\r\n\r\n\tvar LogarithmicScale = Scale.extend({\r\n\t\tdetermineDataLimits: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar data = chart.data;\r\n\t\t\tvar datasets = data.datasets;\r\n\t\t\tvar isHorizontal = me.isHorizontal();\r\n\t\t\tfunction IDMatches(meta) {\r\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\r\n\t\t\t}\r\n\r\n\t\t\t// Calculate Range\r\n\t\t\tme.min = null;\r\n\t\t\tme.max = null;\r\n\t\t\tme.minNotZero = null;\r\n\r\n\t\t\tvar hasStacks = opts.stacked;\r\n\t\t\tif (hasStacks === undefined) {\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tif (hasStacks) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\r\n\t\t\t\t\t\tmeta.stack !== undefined) {\r\n\t\t\t\t\t\thasStacks = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (opts.stacked || hasStacks) {\r\n\t\t\t\tvar valuesPerStack = {};\r\n\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tvar key = [\r\n\t\t\t\t\t\tmeta.type,\r\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\r\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\r\n\t\t\t\t\t\tmeta.stack\r\n\t\t\t\t\t].join('.');\r\n\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\t\tif (valuesPerStack[key] === undefined) {\r\n\t\t\t\t\t\t\tvaluesPerStack[key] = [];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\t\t\tvar values = valuesPerStack[key];\r\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\r\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvalues[index] = values[index] || 0;\r\n\t\t\t\t\t\t\tvalues[index] += value;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\r\n\t\t\t\t\tif (valuesForType.length > 0) {\r\n\t\t\t\t\t\tvar minVal = helpers.min(valuesForType);\r\n\t\t\t\t\t\tvar maxVal = helpers.max(valuesForType);\r\n\t\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\r\n\t\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t} else {\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\r\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (me.min === null) {\r\n\t\t\t\t\t\t\t\tme.min = value;\r\n\t\t\t\t\t\t\t} else if (value < me.min) {\r\n\t\t\t\t\t\t\t\tme.min = value;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (me.max === null) {\r\n\t\t\t\t\t\t\t\tme.max = value;\r\n\t\t\t\t\t\t\t} else if (value > me.max) {\r\n\t\t\t\t\t\t\t\tme.max = value;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) {\r\n\t\t\t\t\t\t\t\tme.minNotZero = value;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Common base implementation to handle ticks.min, ticks.max\r\n\t\t\tthis.handleTickRangeOptions();\r\n\t\t},\r\n\t\thandleTickRangeOptions: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\t\t\tvar DEFAULT_MIN = 1;\r\n\t\t\tvar DEFAULT_MAX = 10;\r\n\r\n\t\t\tme.min = valueOrDefault(tickOpts.min, me.min);\r\n\t\t\tme.max = valueOrDefault(tickOpts.max, me.max);\r\n\r\n\t\t\tif (me.min === me.max) {\r\n\t\t\t\tif (me.min !== 0 && me.min !== null) {\r\n\t\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1);\r\n\t\t\t\t\tme.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.min = DEFAULT_MIN;\r\n\t\t\t\t\tme.max = DEFAULT_MAX;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (me.min === null) {\r\n\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.max)) - 1);\r\n\t\t\t}\r\n\t\t\tif (me.max === null) {\r\n\t\t\t\tme.max = me.min !== 0\r\n\t\t\t\t\t? Math.pow(10, Math.floor(helpers.log10(me.min)) + 1)\r\n\t\t\t\t\t: DEFAULT_MAX;\r\n\t\t\t}\r\n\t\t\tif (me.minNotZero === null) {\r\n\t\t\t\tif (me.min > 0) {\r\n\t\t\t\t\tme.minNotZero = me.min;\r\n\t\t\t\t} else if (me.max < 1) {\r\n\t\t\t\t\tme.minNotZero = Math.pow(10, Math.floor(helpers.log10(me.max)));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.minNotZero = DEFAULT_MIN;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tbuildTicks: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\t\t\tvar reverse = !me.isHorizontal();\r\n\r\n\t\t\tvar generationOptions = {\r\n\t\t\t\tmin: tickOpts.min,\r\n\t\t\t\tmax: tickOpts.max\r\n\t\t\t};\r\n\t\t\tvar ticks = me.ticks = generateTicks(generationOptions, me);\r\n\r\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\r\n\t\t\t// range of the scale\r\n\t\t\tme.max = helpers.max(ticks);\r\n\t\t\tme.min = helpers.min(ticks);\r\n\r\n\t\t\tif (tickOpts.reverse) {\r\n\t\t\t\treverse = !reverse;\r\n\t\t\t\tme.start = me.max;\r\n\t\t\t\tme.end = me.min;\r\n\t\t\t} else {\r\n\t\t\t\tme.start = me.min;\r\n\t\t\t\tme.end = me.max;\r\n\t\t\t}\r\n\t\t\tif (reverse) {\r\n\t\t\t\tticks.reverse();\r\n\t\t\t}\r\n\t\t},\r\n\t\tconvertTicksToLabels: function() {\r\n\t\t\tthis.tickValues = this.ticks.slice();\r\n\r\n\t\t\tScale.prototype.convertTicksToLabels.call(this);\r\n\t\t},\r\n\t\t// Get the correct tooltip label\r\n\t\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t\t},\r\n\t\tgetPixelForTick: function(index) {\r\n\t\t\treturn this.getPixelForValue(this.tickValues[index]);\r\n\t\t},\r\n\t\t/**\r\n\t\t * Returns the value of the first tick.\r\n\t\t * @param {Number} value - The minimum not zero value.\r\n\t\t * @return {Number} The first tick value.\r\n\t\t * @private\r\n\t\t */\r\n\t\t_getFirstTickValue: function(value) {\r\n\t\t\tvar exp = Math.floor(helpers.log10(value));\r\n\t\t\tvar significand = Math.floor(value / Math.pow(10, exp));\r\n\r\n\t\t\treturn significand * Math.pow(10, exp);\r\n\t\t},\r\n\t\tgetPixelForValue: function(value) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar reverse = me.options.ticks.reverse;\r\n\t\t\tvar log10 = helpers.log10;\r\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\r\n\t\t\tvar offset = 0;\r\n\t\t\tvar innerDimension, pixel, start, end, sign;\r\n\r\n\t\t\tvalue = +me.getRightValue(value);\r\n\t\t\tif (reverse) {\r\n\t\t\t\tstart = me.end;\r\n\t\t\t\tend = me.start;\r\n\t\t\t\tsign = -1;\r\n\t\t\t} else {\r\n\t\t\t\tstart = me.start;\r\n\t\t\t\tend = me.end;\r\n\t\t\t\tsign = 1;\r\n\t\t\t}\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tinnerDimension = me.width;\r\n\t\t\t\tpixel = reverse ? me.right : me.left;\r\n\t\t\t} else {\r\n\t\t\t\tinnerDimension = me.height;\r\n\t\t\t\tsign *= -1; // invert, since the upper-left corner of the canvas is at pixel (0, 0)\r\n\t\t\t\tpixel = reverse ? me.top : me.bottom;\r\n\t\t\t}\r\n\t\t\tif (value !== start) {\r\n\t\t\t\tif (start === 0) { // include zero tick\r\n\t\t\t\t\toffset = helpers.getValueOrDefault(\r\n\t\t\t\t\t\tme.options.ticks.fontSize,\r\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\r\n\t\t\t\t\t);\r\n\t\t\t\t\tinnerDimension -= offset;\r\n\t\t\t\t\tstart = firstTickValue;\r\n\t\t\t\t}\r\n\t\t\t\tif (value !== 0) {\r\n\t\t\t\t\toffset += innerDimension / (log10(end) - log10(start)) * (log10(value) - log10(start));\r\n\t\t\t\t}\r\n\t\t\t\tpixel += sign * offset;\r\n\t\t\t}\r\n\t\t\treturn pixel;\r\n\t\t},\r\n\t\tgetValueForPixel: function(pixel) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar reverse = me.options.ticks.reverse;\r\n\t\t\tvar log10 = helpers.log10;\r\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\r\n\t\t\tvar innerDimension, start, end, value;\r\n\r\n\t\t\tif (reverse) {\r\n\t\t\t\tstart = me.end;\r\n\t\t\t\tend = me.start;\r\n\t\t\t} else {\r\n\t\t\t\tstart = me.start;\r\n\t\t\t\tend = me.end;\r\n\t\t\t}\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tinnerDimension = me.width;\r\n\t\t\t\tvalue = reverse ? me.right - pixel : pixel - me.left;\r\n\t\t\t} else {\r\n\t\t\t\tinnerDimension = me.height;\r\n\t\t\t\tvalue = reverse ? pixel - me.top : me.bottom - pixel;\r\n\t\t\t}\r\n\t\t\tif (value !== start) {\r\n\t\t\t\tif (start === 0) { // include zero tick\r\n\t\t\t\t\tvar offset = helpers.getValueOrDefault(\r\n\t\t\t\t\t\tme.options.ticks.fontSize,\r\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\r\n\t\t\t\t\t);\r\n\t\t\t\t\tvalue -= offset;\r\n\t\t\t\t\tinnerDimension -= offset;\r\n\t\t\t\t\tstart = firstTickValue;\r\n\t\t\t\t}\r\n\t\t\t\tvalue *= log10(end) - log10(start);\r\n\t\t\t\tvalue /= innerDimension;\r\n\t\t\t\tvalue = Math.pow(10, log10(start) + value);\r\n\t\t\t}\r\n\t\t\treturn value;\r\n\t\t}\r\n\t});\r\n\r\n\tscaleService.registerScaleType('logarithmic', LogarithmicScale, defaultConfig);\r\n};\r\n\r\n},{\"33\":33,\"34\":34,\"35\":35,\"46\":46}],58:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar scaleService = require(34);\r\nvar Ticks = require(35);\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tvar globalDefaults = defaults.global;\r\n\r\n\tvar defaultConfig = {\r\n\t\tdisplay: true,\r\n\r\n\t\t// Boolean - Whether to animate scaling the chart from the centre\r\n\t\tanimate: true,\r\n\t\tposition: 'chartArea',\r\n\r\n\t\tangleLines: {\r\n\t\t\tdisplay: true,\r\n\t\t\tcolor: 'rgba(0, 0, 0, 0.1)',\r\n\t\t\tlineWidth: 1\r\n\t\t},\r\n\r\n\t\tgridLines: {\r\n\t\t\tcircular: false\r\n\t\t},\r\n\r\n\t\t// label settings\r\n\t\tticks: {\r\n\t\t\t// Boolean - Show a backdrop to the scale label\r\n\t\t\tshowLabelBackdrop: true,\r\n\r\n\t\t\t// String - The colour of the label backdrop\r\n\t\t\tbackdropColor: 'rgba(255,255,255,0.75)',\r\n\r\n\t\t\t// Number - The backdrop padding above & below the label in pixels\r\n\t\t\tbackdropPaddingY: 2,\r\n\r\n\t\t\t// Number - The backdrop padding to the side of the label in pixels\r\n\t\t\tbackdropPaddingX: 2,\r\n\r\n\t\t\tcallback: Ticks.formatters.linear\r\n\t\t},\r\n\r\n\t\tpointLabels: {\r\n\t\t\t// Boolean - if true, show point labels\r\n\t\t\tdisplay: true,\r\n\r\n\t\t\t// Number - Point label font size in pixels\r\n\t\t\tfontSize: 10,\r\n\r\n\t\t\t// Function - Used to convert point labels\r\n\t\t\tcallback: function(label) {\r\n\t\t\t\treturn label;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tfunction getValueCount(scale) {\r\n\t\tvar opts = scale.options;\r\n\t\treturn opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0;\r\n\t}\r\n\r\n\tfunction getPointLabelFontOptions(scale) {\r\n\t\tvar pointLabelOptions = scale.options.pointLabels;\r\n\t\tvar fontSize = helpers.valueOrDefault(pointLabelOptions.fontSize, globalDefaults.defaultFontSize);\r\n\t\tvar fontStyle = helpers.valueOrDefault(pointLabelOptions.fontStyle, globalDefaults.defaultFontStyle);\r\n\t\tvar fontFamily = helpers.valueOrDefault(pointLabelOptions.fontFamily, globalDefaults.defaultFontFamily);\r\n\t\tvar font = helpers.fontString(fontSize, fontStyle, fontFamily);\r\n\r\n\t\treturn {\r\n\t\t\tsize: fontSize,\r\n\t\t\tstyle: fontStyle,\r\n\t\t\tfamily: fontFamily,\r\n\t\t\tfont: font\r\n\t\t};\r\n\t}\r\n\r\n\tfunction measureLabelSize(ctx, fontSize, label) {\r\n\t\tif (helpers.isArray(label)) {\r\n\t\t\treturn {\r\n\t\t\t\tw: helpers.longestText(ctx, ctx.font, label),\r\n\t\t\t\th: (label.length * fontSize) + ((label.length - 1) * 1.5 * fontSize)\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tw: ctx.measureText(label).width,\r\n\t\t\th: fontSize\r\n\t\t};\r\n\t}\r\n\r\n\tfunction determineLimits(angle, pos, size, min, max) {\r\n\t\tif (angle === min || angle === max) {\r\n\t\t\treturn {\r\n\t\t\t\tstart: pos - (size / 2),\r\n\t\t\t\tend: pos + (size / 2)\r\n\t\t\t};\r\n\t\t} else if (angle < min || angle > max) {\r\n\t\t\treturn {\r\n\t\t\t\tstart: pos - size - 5,\r\n\t\t\t\tend: pos\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tstart: pos,\r\n\t\t\tend: pos + size + 5\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Helper function to fit a radial linear scale with point labels\r\n\t */\r\n\tfunction fitWithPointLabels(scale) {\r\n\t\t/*\r\n\t\t * Right, this is really confusing and there is a lot of maths going on here\r\n\t\t * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\r\n\t\t *\r\n\t\t * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\r\n\t\t *\r\n\t\t * Solution:\r\n\t\t *\r\n\t\t * We assume the radius of the polygon is half the size of the canvas at first\r\n\t\t * at each index we check if the text overlaps.\r\n\t\t *\r\n\t\t * Where it does, we store that angle and that index.\r\n\t\t *\r\n\t\t * After finding the largest index and angle we calculate how much we need to remove\r\n\t\t * from the shape radius to move the point inwards by that x.\r\n\t\t *\r\n\t\t * We average the left and right distances to get the maximum shape radius that can fit in the box\r\n\t\t * along with labels.\r\n\t\t *\r\n\t\t * Once we have that, we can find the centre point for the chart, by taking the x text protrusion\r\n\t\t * on each side, removing that from the size, halving it and adding the left x protrusion width.\r\n\t\t *\r\n\t\t * This will mean we have a shape fitted to the canvas, as large as it can be with the labels\r\n\t\t * and position it in the most space efficient manner\r\n\t\t *\r\n\t\t * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\r\n\t\t */\r\n\r\n\t\tvar plFont = getPointLabelFontOptions(scale);\r\n\r\n\t\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\r\n\t\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\r\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\r\n\t\tvar furthestLimits = {\r\n\t\t\tr: scale.width,\r\n\t\t\tl: 0,\r\n\t\t\tt: scale.height,\r\n\t\t\tb: 0\r\n\t\t};\r\n\t\tvar furthestAngles = {};\r\n\t\tvar i, textSize, pointPosition;\r\n\r\n\t\tscale.ctx.font = plFont.font;\r\n\t\tscale._pointLabelSizes = [];\r\n\r\n\t\tvar valueCount = getValueCount(scale);\r\n\t\tfor (i = 0; i < valueCount; i++) {\r\n\t\t\tpointPosition = scale.getPointPosition(i, largestPossibleRadius);\r\n\t\t\ttextSize = measureLabelSize(scale.ctx, plFont.size, scale.pointLabels[i] || '');\r\n\t\t\tscale._pointLabelSizes[i] = textSize;\r\n\r\n\t\t\t// Add quarter circle to make degree 0 mean top of circle\r\n\t\t\tvar angleRadians = scale.getIndexAngle(i);\r\n\t\t\tvar angle = helpers.toDegrees(angleRadians) % 360;\r\n\t\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\r\n\t\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\r\n\r\n\t\t\tif (hLimits.start < furthestLimits.l) {\r\n\t\t\t\tfurthestLimits.l = hLimits.start;\r\n\t\t\t\tfurthestAngles.l = angleRadians;\r\n\t\t\t}\r\n\r\n\t\t\tif (hLimits.end > furthestLimits.r) {\r\n\t\t\t\tfurthestLimits.r = hLimits.end;\r\n\t\t\t\tfurthestAngles.r = angleRadians;\r\n\t\t\t}\r\n\r\n\t\t\tif (vLimits.start < furthestLimits.t) {\r\n\t\t\t\tfurthestLimits.t = vLimits.start;\r\n\t\t\t\tfurthestAngles.t = angleRadians;\r\n\t\t\t}\r\n\r\n\t\t\tif (vLimits.end > furthestLimits.b) {\r\n\t\t\t\tfurthestLimits.b = vLimits.end;\r\n\t\t\t\tfurthestAngles.b = angleRadians;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tscale.setReductions(largestPossibleRadius, furthestLimits, furthestAngles);\r\n\t}\r\n\r\n\t/**\r\n\t * Helper function to fit a radial linear scale with no point labels\r\n\t */\r\n\tfunction fit(scale) {\r\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\r\n\t\tscale.drawingArea = Math.round(largestPossibleRadius);\r\n\t\tscale.setCenterPoint(0, 0, 0, 0);\r\n\t}\r\n\r\n\tfunction getTextAlignForAngle(angle) {\r\n\t\tif (angle === 0 || angle === 180) {\r\n\t\t\treturn 'center';\r\n\t\t} else if (angle < 180) {\r\n\t\t\treturn 'left';\r\n\t\t}\r\n\r\n\t\treturn 'right';\r\n\t}\r\n\r\n\tfunction fillText(ctx, text, position, fontSize) {\r\n\t\tif (helpers.isArray(text)) {\r\n\t\t\tvar y = position.y;\r\n\t\t\tvar spacing = 1.5 * fontSize;\r\n\r\n\t\t\tfor (var i = 0; i < text.length; ++i) {\r\n\t\t\t\tctx.fillText(text[i], position.x, y);\r\n\t\t\t\ty += spacing;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tctx.fillText(text, position.x, position.y);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\r\n\t\tif (angle === 90 || angle === 270) {\r\n\t\t\tposition.y -= (textSize.h / 2);\r\n\t\t} else if (angle > 270 || angle < 90) {\r\n\t\t\tposition.y -= textSize.h;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction drawPointLabels(scale) {\r\n\t\tvar ctx = scale.ctx;\r\n\t\tvar opts = scale.options;\r\n\t\tvar angleLineOpts = opts.angleLines;\r\n\t\tvar pointLabelOpts = opts.pointLabels;\r\n\r\n\t\tctx.lineWidth = angleLineOpts.lineWidth;\r\n\t\tctx.strokeStyle = angleLineOpts.color;\r\n\r\n\t\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\r\n\r\n\t\t// Point Label Font\r\n\t\tvar plFont = getPointLabelFontOptions(scale);\r\n\r\n\t\tctx.textBaseline = 'top';\r\n\r\n\t\tfor (var i = getValueCount(scale) - 1; i >= 0; i--) {\r\n\t\t\tif (angleLineOpts.display) {\r\n\t\t\t\tvar outerPosition = scale.getPointPosition(i, outerDistance);\r\n\t\t\t\tctx.beginPath();\r\n\t\t\t\tctx.moveTo(scale.xCenter, scale.yCenter);\r\n\t\t\t\tctx.lineTo(outerPosition.x, outerPosition.y);\r\n\t\t\t\tctx.stroke();\r\n\t\t\t\tctx.closePath();\r\n\t\t\t}\r\n\r\n\t\t\tif (pointLabelOpts.display) {\r\n\t\t\t\t// Extra 3px out for some label spacing\r\n\t\t\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + 5);\r\n\r\n\t\t\t\t// Keep this in loop since we may support array properties here\r\n\t\t\t\tvar pointLabelFontColor = helpers.valueAtIndexOrDefault(pointLabelOpts.fontColor, i, globalDefaults.defaultFontColor);\r\n\t\t\t\tctx.font = plFont.font;\r\n\t\t\t\tctx.fillStyle = pointLabelFontColor;\r\n\r\n\t\t\t\tvar angleRadians = scale.getIndexAngle(i);\r\n\t\t\t\tvar angle = helpers.toDegrees(angleRadians);\r\n\t\t\t\tctx.textAlign = getTextAlignForAngle(angle);\r\n\t\t\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\r\n\t\t\t\tfillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\r\n\t\tvar ctx = scale.ctx;\r\n\t\tctx.strokeStyle = helpers.valueAtIndexOrDefault(gridLineOpts.color, index - 1);\r\n\t\tctx.lineWidth = helpers.valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1);\r\n\r\n\t\tif (scale.options.gridLines.circular) {\r\n\t\t\t// Draw circular arcs between the points\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.stroke();\r\n\t\t} else {\r\n\t\t\t// Draw straight lines connecting each index\r\n\t\t\tvar valueCount = getValueCount(scale);\r\n\r\n\t\t\tif (valueCount === 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tctx.beginPath();\r\n\t\t\tvar pointPosition = scale.getPointPosition(0, radius);\r\n\t\t\tctx.moveTo(pointPosition.x, pointPosition.y);\r\n\r\n\t\t\tfor (var i = 1; i < valueCount; i++) {\r\n\t\t\t\tpointPosition = scale.getPointPosition(i, radius);\r\n\t\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\r\n\t\t\t}\r\n\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction numberOrZero(param) {\r\n\t\treturn helpers.isNumber(param) ? param : 0;\r\n\t}\r\n\r\n\tvar LinearRadialScale = Chart.LinearScaleBase.extend({\r\n\t\tsetDimensions: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\t\t\t// Set the unconstrained dimension before label rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.height = me.maxHeight;\r\n\t\t\tme.xCenter = Math.round(me.width / 2);\r\n\t\t\tme.yCenter = Math.round(me.height / 2);\r\n\r\n\t\t\tvar minSize = helpers.min([me.height, me.width]);\r\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\r\n\t\t\tme.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2);\r\n\t\t},\r\n\t\tdetermineDataLimits: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar min = Number.POSITIVE_INFINITY;\r\n\t\t\tvar max = Number.NEGATIVE_INFINITY;\r\n\r\n\t\t\thelpers.each(chart.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\r\n\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmin = Math.min(value, min);\r\n\t\t\t\t\t\tmax = Math.max(value, max);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\r\n\t\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\r\n\r\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\r\n\t\t\tme.handleTickRangeOptions();\r\n\t\t},\r\n\t\tgetTickLimit: function() {\r\n\t\t\tvar tickOpts = this.options.ticks;\r\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\r\n\t\t\treturn Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize)));\r\n\t\t},\r\n\t\tconvertTicksToLabels: function() {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tChart.LinearScaleBase.prototype.convertTicksToLabels.call(me);\r\n\r\n\t\t\t// Point labels\r\n\t\t\tme.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me);\r\n\t\t},\r\n\t\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t\t},\r\n\t\tfit: function() {\r\n\t\t\tif (this.options.pointLabels.display) {\r\n\t\t\t\tfitWithPointLabels(this);\r\n\t\t\t} else {\r\n\t\t\t\tfit(this);\r\n\t\t\t}\r\n\t\t},\r\n\t\t/**\r\n\t\t * Set radius reductions and determine new radius and center point\r\n\t\t * @private\r\n\t\t */\r\n\t\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\r\n\t\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\r\n\t\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\r\n\t\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - me.height, 0) / Math.cos(furthestAngles.b);\r\n\r\n\t\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\r\n\t\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\r\n\t\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\r\n\t\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\r\n\r\n\t\t\tme.drawingArea = Math.min(\r\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\r\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\r\n\t\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\r\n\t\t},\r\n\t\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar maxRight = me.width - rightMovement - me.drawingArea;\r\n\t\t\tvar maxLeft = leftMovement + me.drawingArea;\r\n\t\t\tvar maxTop = topMovement + me.drawingArea;\r\n\t\t\tvar maxBottom = me.height - bottomMovement - me.drawingArea;\r\n\r\n\t\t\tme.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left);\r\n\t\t\tme.yCenter = Math.round(((maxTop + maxBottom) / 2) + me.top);\r\n\t\t},\r\n\r\n\t\tgetIndexAngle: function(index) {\r\n\t\t\tvar angleMultiplier = (Math.PI * 2) / getValueCount(this);\r\n\t\t\tvar startAngle = this.chart.options && this.chart.options.startAngle ?\r\n\t\t\t\tthis.chart.options.startAngle :\r\n\t\t\t\t0;\r\n\r\n\t\t\tvar startAngleRadians = startAngle * Math.PI * 2 / 360;\r\n\r\n\t\t\t// Start from the top instead of right, so remove a quarter of the circle\r\n\t\t\treturn index * angleMultiplier + startAngleRadians;\r\n\t\t},\r\n\t\tgetDistanceFromCenterForValue: function(value) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (value === null) {\r\n\t\t\t\treturn 0; // null always in center\r\n\t\t\t}\r\n\r\n\t\t\t// Take into account half font size + the yPadding of the top value\r\n\t\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\r\n\t\t\tif (me.options.ticks.reverse) {\r\n\t\t\t\treturn (me.max - value) * scalingFactor;\r\n\t\t\t}\r\n\t\t\treturn (value - me.min) * scalingFactor;\r\n\t\t},\r\n\t\tgetPointPosition: function(index, distanceFromCenter) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\r\n\t\t\treturn {\r\n\t\t\t\tx: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter,\r\n\t\t\t\ty: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter\r\n\t\t\t};\r\n\t\t},\r\n\t\tgetPointPositionForValue: function(index, value) {\r\n\t\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\r\n\t\t},\r\n\r\n\t\tgetBasePosition: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar min = me.min;\r\n\t\t\tvar max = me.max;\r\n\r\n\t\t\treturn me.getPointPositionForValue(0,\r\n\t\t\t\tme.beginAtZero ? 0 :\r\n\t\t\t\tmin < 0 && max < 0 ? max :\r\n\t\t\t\tmin > 0 && max > 0 ? min :\r\n\t\t\t\t0);\r\n\t\t},\r\n\r\n\t\tdraw: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar gridLineOpts = opts.gridLines;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\r\n\t\t\tif (opts.display) {\r\n\t\t\t\tvar ctx = me.ctx;\r\n\t\t\t\tvar startAngle = this.getIndexAngle(0);\r\n\r\n\t\t\t\t// Tick Font\r\n\t\t\t\tvar tickFontSize = valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\r\n\t\t\t\tvar tickFontStyle = valueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle);\r\n\t\t\t\tvar tickFontFamily = valueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily);\r\n\t\t\t\tvar tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);\r\n\r\n\t\t\t\thelpers.each(me.ticks, function(label, index) {\r\n\t\t\t\t\t// Don't draw a centre value (if it is minimum)\r\n\t\t\t\t\tif (index > 0 || tickOpts.reverse) {\r\n\t\t\t\t\t\tvar yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\r\n\r\n\t\t\t\t\t\t// Draw circular lines around the scale\r\n\t\t\t\t\t\tif (gridLineOpts.display && index !== 0) {\r\n\t\t\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, yCenterOffset, index);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (tickOpts.display) {\r\n\t\t\t\t\t\t\tvar tickFontColor = valueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor);\r\n\t\t\t\t\t\t\tctx.font = tickLabelFont;\r\n\r\n\t\t\t\t\t\t\tctx.save();\r\n\t\t\t\t\t\t\tctx.translate(me.xCenter, me.yCenter);\r\n\t\t\t\t\t\t\tctx.rotate(startAngle);\r\n\r\n\t\t\t\t\t\t\tif (tickOpts.showLabelBackdrop) {\r\n\t\t\t\t\t\t\t\tvar labelWidth = ctx.measureText(label).width;\r\n\t\t\t\t\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\r\n\t\t\t\t\t\t\t\tctx.fillRect(\r\n\t\t\t\t\t\t\t\t\t-labelWidth / 2 - tickOpts.backdropPaddingX,\r\n\t\t\t\t\t\t\t\t\t-yCenterOffset - tickFontSize / 2 - tickOpts.backdropPaddingY,\r\n\t\t\t\t\t\t\t\t\tlabelWidth + tickOpts.backdropPaddingX * 2,\r\n\t\t\t\t\t\t\t\t\ttickFontSize + tickOpts.backdropPaddingY * 2\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tctx.textAlign = 'center';\r\n\t\t\t\t\t\t\tctx.textBaseline = 'middle';\r\n\t\t\t\t\t\t\tctx.fillStyle = tickFontColor;\r\n\t\t\t\t\t\t\tctx.fillText(label, 0, -yCenterOffset);\r\n\t\t\t\t\t\t\tctx.restore();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (opts.angleLines.display || opts.pointLabels.display) {\r\n\t\t\t\t\tdrawPointLabels(me);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tscaleService.registerScaleType('radialLinear', LinearRadialScale, defaultConfig);\r\n};\r\n\r\n},{\"26\":26,\"34\":34,\"35\":35,\"46\":46}],59:[function(require,module,exports){\r\n/* global window: false */\r\n'use strict';\r\n\r\nvar moment = require(1);\r\nmoment = typeof moment === 'function' ? moment : window.moment;\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar Scale = require(33);\r\nvar scaleService = require(34);\r\n\r\n// Integer constants are from the ES6 spec.\r\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\r\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\r\n\r\nvar INTERVALS = {\r\n\tmillisecond: {\r\n\t\tcommon: true,\r\n\t\tsize: 1,\r\n\t\tsteps: [1, 2, 5, 10, 20, 50, 100, 250, 500]\r\n\t},\r\n\tsecond: {\r\n\t\tcommon: true,\r\n\t\tsize: 1000,\r\n\t\tsteps: [1, 2, 5, 10, 15, 30]\r\n\t},\r\n\tminute: {\r\n\t\tcommon: true,\r\n\t\tsize: 60000,\r\n\t\tsteps: [1, 2, 5, 10, 15, 30]\r\n\t},\r\n\thour: {\r\n\t\tcommon: true,\r\n\t\tsize: 3600000,\r\n\t\tsteps: [1, 2, 3, 6, 12]\r\n\t},\r\n\tday: {\r\n\t\tcommon: true,\r\n\t\tsize: 86400000,\r\n\t\tsteps: [1, 2, 5]\r\n\t},\r\n\tweek: {\r\n\t\tcommon: false,\r\n\t\tsize: 604800000,\r\n\t\tsteps: [1, 2, 3, 4]\r\n\t},\r\n\tmonth: {\r\n\t\tcommon: true,\r\n\t\tsize: 2.628e9,\r\n\t\tsteps: [1, 2, 3]\r\n\t},\r\n\tquarter: {\r\n\t\tcommon: false,\r\n\t\tsize: 7.884e9,\r\n\t\tsteps: [1, 2, 3, 4]\r\n\t},\r\n\tyear: {\r\n\t\tcommon: true,\r\n\t\tsize: 3.154e10\r\n\t}\r\n};\r\n\r\nvar UNITS = Object.keys(INTERVALS);\r\n\r\nfunction sorter(a, b) {\r\n\treturn a - b;\r\n}\r\n\r\nfunction arrayUnique(items) {\r\n\tvar hash = {};\r\n\tvar out = [];\r\n\tvar i, ilen, item;\r\n\r\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\titem = items[i];\r\n\t\tif (!hash[item]) {\r\n\t\t\thash[item] = true;\r\n\t\t\tout.push(item);\r\n\t\t}\r\n\t}\r\n\r\n\treturn out;\r\n}\r\n\r\n/**\r\n * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\r\n * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\r\n * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\r\n * extremity (left + width or top + height). Note that it would be more optimized to directly\r\n * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\r\n * to create the lookup table. The table ALWAYS contains at least two items: min and max.\r\n *\r\n * @param {Number[]} timestamps - timestamps sorted from lowest to highest.\r\n * @param {String} distribution - If 'linear', timestamps will be spread linearly along the min\r\n * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\r\n * If 'series', timestamps will be positioned at the same distance from each other. In this\r\n * case, only timestamps that break the time linearity are registered, meaning that in the\r\n * best case, all timestamps are linear, the table contains only min and max.\r\n */\r\nfunction buildLookupTable(timestamps, min, max, distribution) {\r\n\tif (distribution === 'linear' || !timestamps.length) {\r\n\t\treturn [\r\n\t\t\t{time: min, pos: 0},\r\n\t\t\t{time: max, pos: 1}\r\n\t\t];\r\n\t}\r\n\r\n\tvar table = [];\r\n\tvar items = [min];\r\n\tvar i, ilen, prev, curr, next;\r\n\r\n\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\r\n\t\tcurr = timestamps[i];\r\n\t\tif (curr > min && curr < max) {\r\n\t\t\titems.push(curr);\r\n\t\t}\r\n\t}\r\n\r\n\titems.push(max);\r\n\r\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\tnext = items[i + 1];\r\n\t\tprev = items[i - 1];\r\n\t\tcurr = items[i];\r\n\r\n\t\t// only add points that breaks the scale linearity\r\n\t\tif (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\r\n\t\t\ttable.push({time: curr, pos: i / (ilen - 1)});\r\n\t\t}\r\n\t}\r\n\r\n\treturn table;\r\n}\r\n\r\n// @see adapted from http://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\r\nfunction lookup(table, key, value) {\r\n\tvar lo = 0;\r\n\tvar hi = table.length - 1;\r\n\tvar mid, i0, i1;\r\n\r\n\twhile (lo >= 0 && lo <= hi) {\r\n\t\tmid = (lo + hi) >> 1;\r\n\t\ti0 = table[mid - 1] || null;\r\n\t\ti1 = table[mid];\r\n\r\n\t\tif (!i0) {\r\n\t\t\t// given value is outside table (before first item)\r\n\t\t\treturn {lo: null, hi: i1};\r\n\t\t} else if (i1[key] < value) {\r\n\t\t\tlo = mid + 1;\r\n\t\t} else if (i0[key] > value) {\r\n\t\t\thi = mid - 1;\r\n\t\t} else {\r\n\t\t\treturn {lo: i0, hi: i1};\r\n\t\t}\r\n\t}\r\n\r\n\t// given value is outside table (after last item)\r\n\treturn {lo: i1, hi: null};\r\n}\r\n\r\n/**\r\n * Linearly interpolates the given source `value` using the table items `skey` values and\r\n * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\r\n * returns the position for a timestamp equal to 42. If value is out of bounds, values at\r\n * index [0, 1] or [n - 1, n] are used for the interpolation.\r\n */\r\nfunction interpolate(table, skey, sval, tkey) {\r\n\tvar range = lookup(table, skey, sval);\r\n\r\n\t// Note: the lookup table ALWAYS contains at least 2 items (min and max)\r\n\tvar prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\r\n\tvar next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\r\n\r\n\tvar span = next[skey] - prev[skey];\r\n\tvar ratio = span ? (sval - prev[skey]) / span : 0;\r\n\tvar offset = (next[tkey] - prev[tkey]) * ratio;\r\n\r\n\treturn prev[tkey] + offset;\r\n}\r\n\r\n/**\r\n * Convert the given value to a moment object using the given time options.\r\n * @see http://momentjs.com/docs/#/parsing/\r\n */\r\nfunction momentify(value, options) {\r\n\tvar parser = options.parser;\r\n\tvar format = options.parser || options.format;\r\n\r\n\tif (typeof parser === 'function') {\r\n\t\treturn parser(value);\r\n\t}\r\n\r\n\tif (typeof value === 'string' && typeof format === 'string') {\r\n\t\treturn moment(value, format);\r\n\t}\r\n\r\n\tif (!(value instanceof moment)) {\r\n\t\tvalue = moment(value);\r\n\t}\r\n\r\n\tif (value.isValid()) {\r\n\t\treturn value;\r\n\t}\r\n\r\n\t// Labels are in an incompatible moment format and no `parser` has been provided.\r\n\t// The user might still use the deprecated `format` option to convert his inputs.\r\n\tif (typeof format === 'function') {\r\n\t\treturn format(value);\r\n\t}\r\n\r\n\treturn value;\r\n}\r\n\r\nfunction parse(input, scale) {\r\n\tif (helpers.isNullOrUndef(input)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar options = scale.options.time;\r\n\tvar value = momentify(scale.getRightValue(input), options);\r\n\tif (!value.isValid()) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (options.round) {\r\n\t\tvalue.startOf(options.round);\r\n\t}\r\n\r\n\treturn value.valueOf();\r\n}\r\n\r\n/**\r\n * Returns the number of unit to skip to be able to display up to `capacity` number of ticks\r\n * in `unit` for the given `min` / `max` range and respecting the interval steps constraints.\r\n */\r\nfunction determineStepSize(min, max, unit, capacity) {\r\n\tvar range = max - min;\r\n\tvar interval = INTERVALS[unit];\r\n\tvar milliseconds = interval.size;\r\n\tvar steps = interval.steps;\r\n\tvar i, ilen, factor;\r\n\r\n\tif (!steps) {\r\n\t\treturn Math.ceil(range / (capacity * milliseconds));\r\n\t}\r\n\r\n\tfor (i = 0, ilen = steps.length; i < ilen; ++i) {\r\n\t\tfactor = steps[i];\r\n\t\tif (Math.ceil(range / (milliseconds * factor)) <= capacity) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\treturn factor;\r\n}\r\n\r\n/**\r\n * Figures out what unit results in an appropriate number of auto-generated ticks\r\n */\r\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\r\n\tvar ilen = UNITS.length;\r\n\tvar i, interval, factor;\r\n\r\n\tfor (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\r\n\t\tinterval = INTERVALS[UNITS[i]];\r\n\t\tfactor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER;\r\n\r\n\t\tif (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\r\n\t\t\treturn UNITS[i];\r\n\t\t}\r\n\t}\r\n\r\n\treturn UNITS[ilen - 1];\r\n}\r\n\r\n/**\r\n * Figures out what unit to format a set of ticks with\r\n */\r\nfunction determineUnitForFormatting(ticks, minUnit, min, max) {\r\n\tvar duration = moment.duration(moment(max).diff(moment(min)));\r\n\tvar ilen = UNITS.length;\r\n\tvar i, unit;\r\n\r\n\tfor (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) {\r\n\t\tunit = UNITS[i];\r\n\t\tif (INTERVALS[unit].common && duration.as(unit) >= ticks.length) {\r\n\t\t\treturn unit;\r\n\t\t}\r\n\t}\r\n\r\n\treturn UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\r\n}\r\n\r\nfunction determineMajorUnit(unit) {\r\n\tfor (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\r\n\t\tif (INTERVALS[UNITS[i]].common) {\r\n\t\t\treturn UNITS[i];\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Generates a maximum of `capacity` timestamps between min and max, rounded to the\r\n * `minor` unit, aligned on the `major` unit and using the given scale time `options`.\r\n * Important: this method can return ticks outside the min and max range, it's the\r\n * responsibility of the calling code to clamp values if needed.\r\n */\r\nfunction generate(min, max, capacity, options) {\r\n\tvar timeOpts = options.time;\r\n\tvar minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\r\n\tvar major = determineMajorUnit(minor);\r\n\tvar stepSize = helpers.valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize);\r\n\tvar weekday = minor === 'week' ? timeOpts.isoWeekday : false;\r\n\tvar majorTicksEnabled = options.ticks.major.enabled;\r\n\tvar interval = INTERVALS[minor];\r\n\tvar first = moment(min);\r\n\tvar last = moment(max);\r\n\tvar ticks = [];\r\n\tvar time;\r\n\r\n\tif (!stepSize) {\r\n\t\tstepSize = determineStepSize(min, max, minor, capacity);\r\n\t}\r\n\r\n\t// For 'week' unit, handle the first day of week option\r\n\tif (weekday) {\r\n\t\tfirst = first.isoWeekday(weekday);\r\n\t\tlast = last.isoWeekday(weekday);\r\n\t}\r\n\r\n\t// Align first/last ticks on unit\r\n\tfirst = first.startOf(weekday ? 'day' : minor);\r\n\tlast = last.startOf(weekday ? 'day' : minor);\r\n\r\n\t// Make sure that the last tick include max\r\n\tif (last < max) {\r\n\t\tlast.add(1, minor);\r\n\t}\r\n\r\n\ttime = moment(first);\r\n\r\n\tif (majorTicksEnabled && major && !weekday && !timeOpts.round) {\r\n\t\t// Align the first tick on the previous `minor` unit aligned on the `major` unit:\r\n\t\t// we first aligned time on the previous `major` unit then add the number of full\r\n\t\t// stepSize there is between first and the previous major time.\r\n\t\ttime.startOf(major);\r\n\t\ttime.add(~~((first - time) / (interval.size * stepSize)) * stepSize, minor);\r\n\t}\r\n\r\n\tfor (; time < last; time.add(stepSize, minor)) {\r\n\t\tticks.push(+time);\r\n\t}\r\n\r\n\tticks.push(+time);\r\n\r\n\treturn ticks;\r\n}\r\n\r\n/**\r\n * Returns the right and left offsets from edges in the form of {left, right}.\r\n * Offsets are added when the `offset` option is true.\r\n */\r\nfunction computeOffsets(table, ticks, min, max, options) {\r\n\tvar left = 0;\r\n\tvar right = 0;\r\n\tvar upper, lower;\r\n\r\n\tif (options.offset && ticks.length) {\r\n\t\tif (!options.time.min) {\r\n\t\t\tupper = ticks.length > 1 ? ticks[1] : max;\r\n\t\t\tlower = ticks[0];\r\n\t\t\tleft = (\r\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\r\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\r\n\t\t\t) / 2;\r\n\t\t}\r\n\t\tif (!options.time.max) {\r\n\t\t\tupper = ticks[ticks.length - 1];\r\n\t\t\tlower = ticks.length > 1 ? ticks[ticks.length - 2] : min;\r\n\t\t\tright = (\r\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\r\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\r\n\t\t\t) / 2;\r\n\t\t}\r\n\t}\r\n\r\n\treturn {left: left, right: right};\r\n}\r\n\r\nfunction ticksFromTimestamps(values, majorUnit) {\r\n\tvar ticks = [];\r\n\tvar i, ilen, value, major;\r\n\r\n\tfor (i = 0, ilen = values.length; i < ilen; ++i) {\r\n\t\tvalue = values[i];\r\n\t\tmajor = majorUnit ? value === +moment(value).startOf(majorUnit) : false;\r\n\r\n\t\tticks.push({\r\n\t\t\tvalue: value,\r\n\t\t\tmajor: major\r\n\t\t});\r\n\t}\r\n\r\n\treturn ticks;\r\n}\r\n\r\nfunction determineLabelFormat(data, timeOpts) {\r\n\tvar i, momentDate, hasTime;\r\n\tvar ilen = data.length;\r\n\r\n\t// find the label with the most parts (milliseconds, minutes, etc.)\r\n\t// format all labels with the same level of detail as the most specific label\r\n\tfor (i = 0; i < ilen; i++) {\r\n\t\tmomentDate = momentify(data[i], timeOpts);\r\n\t\tif (momentDate.millisecond() !== 0) {\r\n\t\t\treturn 'MMM D, YYYY h:mm:ss.SSS a';\r\n\t\t}\r\n\t\tif (momentDate.second() !== 0 || momentDate.minute() !== 0 || momentDate.hour() !== 0) {\r\n\t\t\thasTime = true;\r\n\t\t}\r\n\t}\r\n\tif (hasTime) {\r\n\t\treturn 'MMM D, YYYY h:mm:ss a';\r\n\t}\r\n\treturn 'MMM D, YYYY';\r\n}\r\n\r\nmodule.exports = function() {\r\n\r\n\tvar defaultConfig = {\r\n\t\tposition: 'bottom',\r\n\r\n\t\t/**\r\n\t\t * Data distribution along the scale:\r\n\t\t * - 'linear': data are spread according to their time (distances can vary),\r\n\t\t * - 'series': data are spread at the same distance from each other.\r\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\r\n\t\t * @since 2.7.0\r\n\t\t */\r\n\t\tdistribution: 'linear',\r\n\r\n\t\t/**\r\n\t\t * Scale boundary strategy (bypassed by min/max time options)\r\n\t\t * - `data`: make sure data are fully visible, ticks outside are removed\r\n\t\t * - `ticks`: make sure ticks are fully visible, data outside are truncated\r\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4556\r\n\t\t * @since 2.7.0\r\n\t\t */\r\n\t\tbounds: 'data',\r\n\r\n\t\ttime: {\r\n\t\t\tparser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\r\n\t\t\tformat: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/\r\n\t\t\tunit: false, // false == automatic or override with week, month, year, etc.\r\n\t\t\tround: false, // none, or override with week, month, year, etc.\r\n\t\t\tdisplayFormat: false, // DEPRECATED\r\n\t\t\tisoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/\r\n\t\t\tminUnit: 'millisecond',\r\n\r\n\t\t\t// defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/\r\n\t\t\tdisplayFormats: {\r\n\t\t\t\tmillisecond: 'h:mm:ss.SSS a', // 11:20:01.123 AM,\r\n\t\t\t\tsecond: 'h:mm:ss a', // 11:20:01 AM\r\n\t\t\t\tminute: 'h:mm a', // 11:20 AM\r\n\t\t\t\thour: 'hA', // 5PM\r\n\t\t\t\tday: 'MMM D', // Sep 4\r\n\t\t\t\tweek: 'll', // Week 46, or maybe \"[W]WW - YYYY\" ?\r\n\t\t\t\tmonth: 'MMM YYYY', // Sept 2015\r\n\t\t\t\tquarter: '[Q]Q - YYYY', // Q3\r\n\t\t\t\tyear: 'YYYY' // 2015\r\n\t\t\t},\r\n\t\t},\r\n\t\tticks: {\r\n\t\t\tautoSkip: false,\r\n\r\n\t\t\t/**\r\n\t\t\t * Ticks generation input values:\r\n\t\t\t * - 'auto': generates \"optimal\" ticks based on scale size and time options.\r\n\t\t\t * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\r\n\t\t\t * - 'labels': generates ticks from user given `data.labels` values ONLY.\r\n\t\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\r\n\t\t\t * @since 2.7.0\r\n\t\t\t */\r\n\t\t\tsource: 'auto',\r\n\r\n\t\t\tmajor: {\r\n\t\t\t\tenabled: false\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tvar TimeScale = Scale.extend({\r\n\t\tinitialize: function() {\r\n\t\t\tif (!moment) {\r\n\t\t\t\tthrow new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com');\r\n\t\t\t}\r\n\r\n\t\t\tthis.mergeTicksOptions();\r\n\r\n\t\t\tScale.prototype.initialize.call(this);\r\n\t\t},\r\n\r\n\t\tupdate: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = me.options;\r\n\r\n\t\t\t// DEPRECATIONS: output a message only one time per update\r\n\t\t\tif (options.time && options.time.format) {\r\n\t\t\t\tconsole.warn('options.time.format is deprecated and replaced by options.time.parser.');\r\n\t\t\t}\r\n\r\n\t\t\treturn Scale.prototype.update.apply(me, arguments);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Allows data to be referenced via 't' attribute\r\n\t\t */\r\n\t\tgetRightValue: function(rawValue) {\r\n\t\t\tif (rawValue && rawValue.t !== undefined) {\r\n\t\t\t\trawValue = rawValue.t;\r\n\t\t\t}\r\n\t\t\treturn Scale.prototype.getRightValue.call(this, rawValue);\r\n\t\t},\r\n\r\n\t\tdetermineDataLimits: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar timeOpts = me.options.time;\r\n\t\t\tvar unit = timeOpts.unit || 'day';\r\n\t\t\tvar min = MAX_INTEGER;\r\n\t\t\tvar max = MIN_INTEGER;\r\n\t\t\tvar timestamps = [];\r\n\t\t\tvar datasets = [];\r\n\t\t\tvar labels = [];\r\n\t\t\tvar i, j, ilen, jlen, data, timestamp;\r\n\r\n\t\t\t// Convert labels to timestamps\r\n\t\t\tfor (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) {\r\n\t\t\t\tlabels.push(parse(chart.data.labels[i], me));\r\n\t\t\t}\r\n\r\n\t\t\t// Convert data to timestamps\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\t\tdata = chart.data.datasets[i].data;\r\n\r\n\t\t\t\t\t// Let's consider that all data have the same format.\r\n\t\t\t\t\tif (helpers.isObject(data[0])) {\r\n\t\t\t\t\t\tdatasets[i] = [];\r\n\r\n\t\t\t\t\t\tfor (j = 0, jlen = data.length; j < jlen; ++j) {\r\n\t\t\t\t\t\t\ttimestamp = parse(data[j], me);\r\n\t\t\t\t\t\t\ttimestamps.push(timestamp);\r\n\t\t\t\t\t\t\tdatasets[i][j] = timestamp;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttimestamps.push.apply(timestamps, labels);\r\n\t\t\t\t\t\tdatasets[i] = labels.slice(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdatasets[i] = [];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (labels.length) {\r\n\t\t\t\t// Sort labels **after** data have been converted\r\n\t\t\t\tlabels = arrayUnique(labels).sort(sorter);\r\n\t\t\t\tmin = Math.min(min, labels[0]);\r\n\t\t\t\tmax = Math.max(max, labels[labels.length - 1]);\r\n\t\t\t}\r\n\r\n\t\t\tif (timestamps.length) {\r\n\t\t\t\ttimestamps = arrayUnique(timestamps).sort(sorter);\r\n\t\t\t\tmin = Math.min(min, timestamps[0]);\r\n\t\t\t\tmax = Math.max(max, timestamps[timestamps.length - 1]);\r\n\t\t\t}\r\n\r\n\t\t\tmin = parse(timeOpts.min, me) || min;\r\n\t\t\tmax = parse(timeOpts.max, me) || max;\r\n\r\n\t\t\t// In case there is no valid min/max, set limits based on unit time option\r\n\t\t\tmin = min === MAX_INTEGER ? +moment().startOf(unit) : min;\r\n\t\t\tmax = max === MIN_INTEGER ? +moment().endOf(unit) + 1 : max;\r\n\r\n\t\t\t// Make sure that max is strictly higher than min (required by the lookup table)\r\n\t\t\tme.min = Math.min(min, max);\r\n\t\t\tme.max = Math.max(min + 1, max);\r\n\r\n\t\t\t// PRIVATE\r\n\t\t\tme._horizontal = me.isHorizontal();\r\n\t\t\tme._table = [];\r\n\t\t\tme._timestamps = {\r\n\t\t\t\tdata: timestamps,\r\n\t\t\t\tdatasets: datasets,\r\n\t\t\t\tlabels: labels\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tbuildTicks: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar min = me.min;\r\n\t\t\tvar max = me.max;\r\n\t\t\tvar options = me.options;\r\n\t\t\tvar timeOpts = options.time;\r\n\t\t\tvar timestamps = [];\r\n\t\t\tvar ticks = [];\r\n\t\t\tvar i, ilen, timestamp;\r\n\r\n\t\t\tswitch (options.ticks.source) {\r\n\t\t\tcase 'data':\r\n\t\t\t\ttimestamps = me._timestamps.data;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'labels':\r\n\t\t\t\ttimestamps = me._timestamps.labels;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'auto':\r\n\t\t\tdefault:\r\n\t\t\t\ttimestamps = generate(min, max, me.getLabelCapacity(min), options);\r\n\t\t\t}\r\n\r\n\t\t\tif (options.bounds === 'ticks' && timestamps.length) {\r\n\t\t\t\tmin = timestamps[0];\r\n\t\t\t\tmax = timestamps[timestamps.length - 1];\r\n\t\t\t}\r\n\r\n\t\t\t// Enforce limits with user min/max options\r\n\t\t\tmin = parse(timeOpts.min, me) || min;\r\n\t\t\tmax = parse(timeOpts.max, me) || max;\r\n\r\n\t\t\t// Remove ticks outside the min/max range\r\n\t\t\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\r\n\t\t\t\ttimestamp = timestamps[i];\r\n\t\t\t\tif (timestamp >= min && timestamp <= max) {\r\n\t\t\t\t\tticks.push(timestamp);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tme.min = min;\r\n\t\t\tme.max = max;\r\n\r\n\t\t\t// PRIVATE\r\n\t\t\tme._unit = timeOpts.unit || determineUnitForFormatting(ticks, timeOpts.minUnit, me.min, me.max);\r\n\t\t\tme._majorUnit = determineMajorUnit(me._unit);\r\n\t\t\tme._table = buildLookupTable(me._timestamps.data, min, max, options.distribution);\r\n\t\t\tme._offsets = computeOffsets(me._table, ticks, min, max, options);\r\n\t\t\tme._labelFormat = determineLabelFormat(me._timestamps.data, timeOpts);\r\n\r\n\t\t\treturn ticksFromTimestamps(ticks, me._majorUnit);\r\n\t\t},\r\n\r\n\t\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar data = me.chart.data;\r\n\t\t\tvar timeOpts = me.options.time;\r\n\t\t\tvar label = data.labels && index < data.labels.length ? data.labels[index] : '';\r\n\t\t\tvar value = data.datasets[datasetIndex].data[index];\r\n\r\n\t\t\tif (helpers.isObject(value)) {\r\n\t\t\t\tlabel = me.getRightValue(value);\r\n\t\t\t}\r\n\t\t\tif (timeOpts.tooltipFormat) {\r\n\t\t\t\treturn momentify(label, timeOpts).format(timeOpts.tooltipFormat);\r\n\t\t\t}\r\n\t\t\tif (typeof label === 'string') {\r\n\t\t\t\treturn label;\r\n\t\t\t}\r\n\r\n\t\t\treturn momentify(label, timeOpts).format(me._labelFormat);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Function to format an individual tick mark\r\n\t\t * @private\r\n\t\t */\r\n\t\ttickFormatFunction: function(tick, index, ticks, formatOverride) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = me.options;\r\n\t\t\tvar time = tick.valueOf();\r\n\t\t\tvar formats = options.time.displayFormats;\r\n\t\t\tvar minorFormat = formats[me._unit];\r\n\t\t\tvar majorUnit = me._majorUnit;\r\n\t\t\tvar majorFormat = formats[majorUnit];\r\n\t\t\tvar majorTime = tick.clone().startOf(majorUnit).valueOf();\r\n\t\t\tvar majorTickOpts = options.ticks.major;\r\n\t\t\tvar major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime;\r\n\t\t\tvar label = tick.format(formatOverride ? formatOverride : major ? majorFormat : minorFormat);\r\n\t\t\tvar tickOpts = major ? majorTickOpts : options.ticks.minor;\r\n\t\t\tvar formatter = helpers.valueOrDefault(tickOpts.callback, tickOpts.userCallback);\r\n\r\n\t\t\treturn formatter ? formatter(label, index, ticks) : label;\r\n\t\t},\r\n\r\n\t\tconvertTicksToLabels: function(ticks) {\r\n\t\t\tvar labels = [];\r\n\t\t\tvar i, ilen;\r\n\r\n\t\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\t\t\tlabels.push(this.tickFormatFunction(moment(ticks[i].value), i, ticks));\r\n\t\t\t}\r\n\r\n\t\t\treturn labels;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetPixelForOffset: function(time) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar size = me._horizontal ? me.width : me.height;\r\n\t\t\tvar start = me._horizontal ? me.left : me.top;\r\n\t\t\tvar pos = interpolate(me._table, 'time', time, 'pos');\r\n\r\n\t\t\treturn start + size * (me._offsets.left + pos) / (me._offsets.left + 1 + me._offsets.right);\r\n\t\t},\r\n\r\n\t\tgetPixelForValue: function(value, index, datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar time = null;\r\n\r\n\t\t\tif (index !== undefined && datasetIndex !== undefined) {\r\n\t\t\t\ttime = me._timestamps.datasets[datasetIndex][index];\r\n\t\t\t}\r\n\r\n\t\t\tif (time === null) {\r\n\t\t\t\ttime = parse(value, me);\r\n\t\t\t}\r\n\r\n\t\t\tif (time !== null) {\r\n\t\t\t\treturn me.getPixelForOffset(time);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetPixelForTick: function(index) {\r\n\t\t\tvar ticks = this.getTicks();\r\n\t\t\treturn index >= 0 && index < ticks.length ?\r\n\t\t\t\tthis.getPixelForOffset(ticks[index].value) :\r\n\t\t\t\tnull;\r\n\t\t},\r\n\r\n\t\tgetValueForPixel: function(pixel) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar size = me._horizontal ? me.width : me.height;\r\n\t\t\tvar start = me._horizontal ? me.left : me.top;\r\n\t\t\tvar pos = (size ? (pixel - start) / size : 0) * (me._offsets.left + 1 + me._offsets.left) - me._offsets.right;\r\n\t\t\tvar time = interpolate(me._table, 'pos', pos, 'time');\r\n\r\n\t\t\treturn moment(time);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Crude approximation of what the label width might be\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetLabelWidth: function(label) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar ticksOpts = me.options.ticks;\r\n\t\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\r\n\t\t\tvar angle = helpers.toRadians(ticksOpts.maxRotation);\r\n\t\t\tvar cosRotation = Math.cos(angle);\r\n\t\t\tvar sinRotation = Math.sin(angle);\r\n\t\t\tvar tickFontSize = helpers.valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize);\r\n\r\n\t\t\treturn (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetLabelCapacity: function(exampleTime) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tvar formatOverride = me.options.time.displayFormats.millisecond;\t// Pick the longest format for guestimation\r\n\r\n\t\t\tvar exampleLabel = me.tickFormatFunction(moment(exampleTime), 0, [], formatOverride);\r\n\t\t\tvar tickLabelWidth = me.getLabelWidth(exampleLabel);\r\n\t\t\tvar innerWidth = me.isHorizontal() ? me.width : me.height;\r\n\r\n\t\t\tvar capacity = Math.floor(innerWidth / tickLabelWidth);\r\n\t\t\treturn capacity > 0 ? capacity : 1;\r\n\t\t}\r\n\t});\r\n\r\n\tscaleService.registerScaleType('time', TimeScale, defaultConfig);\r\n};\r\n\r\n},{\"1\":1,\"26\":26,\"33\":33,\"34\":34,\"46\":46}]},{},[7])(7)\r\n});\r\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","var $ = require('../internals/export');\n\nvar log = Math.log;\nvar LOG10E = Math.LOG10E;\n\n// `Math.log10` method\n// https://tc39.github.io/ecma262/#sec-math.log10\n$({ target: 'Math', stat: true }, {\n log10: function log10(x) {\n return log(x) * LOG10E;\n }\n});\n","var $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\n// `Math.sign` method\n// https://tc39.github.io/ecma262/#sec-math.sign\n$({ target: 'Math', stat: true }, {\n sign: sign\n});\n","// `Math.sign` method implementation\n// https://tc39.github.io/ecma262/#sec-math.sign\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","var $ = require('../internals/export');\n\n// `Number.EPSILON` constant\n// https://tc39.github.io/ecma262/#sec-number.epsilon\n$({ target: 'Number', stat: true }, {\n EPSILON: Math.pow(2, -52)\n});\n","/*!\r\n * chartjs-plugin-datalabels v0.7.0\r\n * https://chartjs-plugin-datalabels.netlify.com\r\n * (c) 2019 Chart.js Contributors\r\n * Released under the MIT license\r\n */\r\n(function (global, factory) {\r\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('chart.js')) :\r\ntypeof define === 'function' && define.amd ? define(['chart.js'], factory) :\r\n(global = global || self, global.ChartDataLabels = factory(global.Chart));\r\n}(this, function (Chart) { 'use strict';\r\n\r\nChart = Chart && Chart.hasOwnProperty('default') ? Chart['default'] : Chart;\r\n\r\nvar helpers = Chart.helpers;\r\n\r\nvar devicePixelRatio = (function() {\r\n\tif (typeof window !== 'undefined') {\r\n\t\tif (window.devicePixelRatio) {\r\n\t\t\treturn window.devicePixelRatio;\r\n\t\t}\r\n\r\n\t\t// devicePixelRatio is undefined on IE10\r\n\t\t// https://stackoverflow.com/a/20204180/8837887\r\n\t\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/85\r\n\t\tvar screen = window.screen;\r\n\t\tif (screen) {\r\n\t\t\treturn (screen.deviceXDPI || 1) / (screen.logicalXDPI || 1);\r\n\t\t}\r\n\t}\r\n\r\n\treturn 1;\r\n}());\r\n\r\nvar utils = {\r\n\t// @todo move this in Chart.helpers.toTextLines\r\n\ttoTextLines: function(inputs) {\r\n\t\tvar lines = [];\r\n\t\tvar input;\r\n\r\n\t\tinputs = [].concat(inputs);\r\n\t\twhile (inputs.length) {\r\n\t\t\tinput = inputs.pop();\r\n\t\t\tif (typeof input === 'string') {\r\n\t\t\t\tlines.unshift.apply(lines, input.split('\\n'));\r\n\t\t\t} else if (Array.isArray(input)) {\r\n\t\t\t\tinputs.push.apply(inputs, input);\r\n\t\t\t} else if (!helpers.isNullOrUndef(inputs)) {\r\n\t\t\t\tlines.unshift('' + input);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn lines;\r\n\t},\r\n\r\n\t// @todo move this method in Chart.helpers.canvas.toFont (deprecates helpers.fontString)\r\n\t// @see https://developer.mozilla.org/en-US/docs/Web/CSS/font\r\n\ttoFontString: function(font) {\r\n\t\tif (!font || helpers.isNullOrUndef(font.size) || helpers.isNullOrUndef(font.family)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn (font.style ? font.style + ' ' : '')\r\n\t\t\t+ (font.weight ? font.weight + ' ' : '')\r\n\t\t\t+ font.size + 'px '\r\n\t\t\t+ font.family;\r\n\t},\r\n\r\n\t// @todo move this in Chart.helpers.canvas.textSize\r\n\t// @todo cache calls of measureText if font doesn't change?!\r\n\ttextSize: function(ctx, lines, font) {\r\n\t\tvar items = [].concat(lines);\r\n\t\tvar ilen = items.length;\r\n\t\tvar prev = ctx.font;\r\n\t\tvar width = 0;\r\n\t\tvar i;\r\n\r\n\t\tctx.font = font.string;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\twidth = Math.max(ctx.measureText(items[i]).width, width);\r\n\t\t}\r\n\r\n\t\tctx.font = prev;\r\n\r\n\t\treturn {\r\n\t\t\theight: ilen * font.lineHeight,\r\n\t\t\twidth: width\r\n\t\t};\r\n\t},\r\n\r\n\t// @todo move this method in Chart.helpers.options.toFont\r\n\tparseFont: function(value) {\r\n\t\tvar global = Chart.defaults.global;\r\n\t\tvar size = helpers.valueOrDefault(value.size, global.defaultFontSize);\r\n\t\tvar font = {\r\n\t\t\tfamily: helpers.valueOrDefault(value.family, global.defaultFontFamily),\r\n\t\t\tlineHeight: helpers.options.toLineHeight(value.lineHeight, size),\r\n\t\t\tsize: size,\r\n\t\t\tstyle: helpers.valueOrDefault(value.style, global.defaultFontStyle),\r\n\t\t\tweight: helpers.valueOrDefault(value.weight, null),\r\n\t\t\tstring: ''\r\n\t\t};\r\n\r\n\t\tfont.string = utils.toFontString(font);\r\n\t\treturn font;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns value bounded by min and max. This is equivalent to max(min, min(value, max)).\r\n\t * @todo move this method in Chart.helpers.bound\r\n\t * https://doc.qt.io/qt-5/qtglobal.html#qBound\r\n\t */\r\n\tbound: function(min, value, max) {\r\n\t\treturn Math.max(min, Math.min(value, max));\r\n\t},\r\n\r\n\t/**\r\n\t * Returns an array of pair [value, state] where state is:\r\n\t * * -1: value is only in a0 (removed)\r\n\t * * 1: value is only in a1 (added)\r\n\t */\r\n\tarrayDiff: function(a0, a1) {\r\n\t\tvar prev = a0.slice();\r\n\t\tvar updates = [];\r\n\t\tvar i, j, ilen, v;\r\n\r\n\t\tfor (i = 0, ilen = a1.length; i < ilen; ++i) {\r\n\t\t\tv = a1[i];\r\n\t\t\tj = prev.indexOf(v);\r\n\r\n\t\t\tif (j === -1) {\r\n\t\t\t\tupdates.push([v, 1]);\r\n\t\t\t} else {\r\n\t\t\t\tprev.splice(j, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = prev.length; i < ilen; ++i) {\r\n\t\t\tupdates.push([prev[i], -1]);\r\n\t\t}\r\n\r\n\t\treturn updates;\r\n\t},\r\n\r\n\t/**\r\n\t * https://github.com/chartjs/chartjs-plugin-datalabels/issues/70\r\n\t */\r\n\trasterize: function(v) {\r\n\t\treturn Math.round(v * devicePixelRatio) / devicePixelRatio;\r\n\t}\r\n};\r\n\r\nfunction orient(point, origin) {\r\n\tvar x0 = origin.x;\r\n\tvar y0 = origin.y;\r\n\r\n\tif (x0 === null) {\r\n\t\treturn {x: 0, y: -1};\r\n\t}\r\n\tif (y0 === null) {\r\n\t\treturn {x: 1, y: 0};\r\n\t}\r\n\r\n\tvar dx = point.x - x0;\r\n\tvar dy = point.y - y0;\r\n\tvar ln = Math.sqrt(dx * dx + dy * dy);\r\n\r\n\treturn {\r\n\t\tx: ln ? dx / ln : 0,\r\n\t\ty: ln ? dy / ln : -1\r\n\t};\r\n}\r\n\r\nfunction aligned(x, y, vx, vy, align) {\r\n\tswitch (align) {\r\n\tcase 'center':\r\n\t\tvx = vy = 0;\r\n\t\tbreak;\r\n\tcase 'bottom':\r\n\t\tvx = 0;\r\n\t\tvy = 1;\r\n\t\tbreak;\r\n\tcase 'right':\r\n\t\tvx = 1;\r\n\t\tvy = 0;\r\n\t\tbreak;\r\n\tcase 'left':\r\n\t\tvx = -1;\r\n\t\tvy = 0;\r\n\t\tbreak;\r\n\tcase 'top':\r\n\t\tvx = 0;\r\n\t\tvy = -1;\r\n\t\tbreak;\r\n\tcase 'start':\r\n\t\tvx = -vx;\r\n\t\tvy = -vy;\r\n\t\tbreak;\r\n\tcase 'end':\r\n\t\t// keep natural orientation\r\n\t\tbreak;\r\n\tdefault:\r\n\t\t// clockwise rotation (in degree)\r\n\t\talign *= (Math.PI / 180);\r\n\t\tvx = Math.cos(align);\r\n\t\tvy = Math.sin(align);\r\n\t\tbreak;\r\n\t}\r\n\r\n\treturn {\r\n\t\tx: x,\r\n\t\ty: y,\r\n\t\tvx: vx,\r\n\t\tvy: vy\r\n\t};\r\n}\r\n\r\n// Line clipping (Cohen–Sutherland algorithm)\r\n// https://en.wikipedia.org/wiki/Cohen–Sutherland_algorithm\r\n\r\nvar R_INSIDE = 0;\r\nvar R_LEFT = 1;\r\nvar R_RIGHT = 2;\r\nvar R_BOTTOM = 4;\r\nvar R_TOP = 8;\r\n\r\nfunction region(x, y, rect) {\r\n\tvar res = R_INSIDE;\r\n\r\n\tif (x < rect.left) {\r\n\t\tres |= R_LEFT;\r\n\t} else if (x > rect.right) {\r\n\t\tres |= R_RIGHT;\r\n\t}\r\n\tif (y < rect.top) {\r\n\t\tres |= R_TOP;\r\n\t} else if (y > rect.bottom) {\r\n\t\tres |= R_BOTTOM;\r\n\t}\r\n\r\n\treturn res;\r\n}\r\n\r\nfunction clipped(segment, area) {\r\n\tvar x0 = segment.x0;\r\n\tvar y0 = segment.y0;\r\n\tvar x1 = segment.x1;\r\n\tvar y1 = segment.y1;\r\n\tvar r0 = region(x0, y0, area);\r\n\tvar r1 = region(x1, y1, area);\r\n\tvar r, x, y;\r\n\r\n\t// eslint-disable-next-line no-constant-condition\r\n\twhile (true) {\r\n\t\tif (!(r0 | r1) || (r0 & r1)) {\r\n\t\t\t// both points inside or on the same side: no clipping\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\t// at least one point is outside\r\n\t\tr = r0 || r1;\r\n\r\n\t\tif (r & R_TOP) {\r\n\t\t\tx = x0 + (x1 - x0) * (area.top - y0) / (y1 - y0);\r\n\t\t\ty = area.top;\r\n\t\t} else if (r & R_BOTTOM) {\r\n\t\t\tx = x0 + (x1 - x0) * (area.bottom - y0) / (y1 - y0);\r\n\t\t\ty = area.bottom;\r\n\t\t} else if (r & R_RIGHT) {\r\n\t\t\ty = y0 + (y1 - y0) * (area.right - x0) / (x1 - x0);\r\n\t\t\tx = area.right;\r\n\t\t} else if (r & R_LEFT) {\r\n\t\t\ty = y0 + (y1 - y0) * (area.left - x0) / (x1 - x0);\r\n\t\t\tx = area.left;\r\n\t\t}\r\n\r\n\t\tif (r === r0) {\r\n\t\t\tx0 = x;\r\n\t\t\ty0 = y;\r\n\t\t\tr0 = region(x0, y0, area);\r\n\t\t} else {\r\n\t\t\tx1 = x;\r\n\t\t\ty1 = y;\r\n\t\t\tr1 = region(x1, y1, area);\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tx0: x0,\r\n\t\tx1: x1,\r\n\t\ty0: y0,\r\n\t\ty1: y1\r\n\t};\r\n}\r\n\r\nfunction compute(range, config) {\r\n\tvar anchor = config.anchor;\r\n\tvar segment = range;\r\n\tvar x, y;\r\n\r\n\tif (config.clamp) {\r\n\t\tsegment = clipped(segment, config.area);\r\n\t}\r\n\r\n\tif (anchor === 'start') {\r\n\t\tx = segment.x0;\r\n\t\ty = segment.y0;\r\n\t} else if (anchor === 'end') {\r\n\t\tx = segment.x1;\r\n\t\ty = segment.y1;\r\n\t} else {\r\n\t\tx = (segment.x0 + segment.x1) / 2;\r\n\t\ty = (segment.y0 + segment.y1) / 2;\r\n\t}\r\n\r\n\treturn aligned(x, y, range.vx, range.vy, config.align);\r\n}\r\n\r\nvar positioners = {\r\n\tarc: function(vm, config) {\r\n\t\tvar angle = (vm.startAngle + vm.endAngle) / 2;\r\n\t\tvar vx = Math.cos(angle);\r\n\t\tvar vy = Math.sin(angle);\r\n\t\tvar r0 = vm.innerRadius;\r\n\t\tvar r1 = vm.outerRadius;\r\n\r\n\t\treturn compute({\r\n\t\t\tx0: vm.x + vx * r0,\r\n\t\t\ty0: vm.y + vy * r0,\r\n\t\t\tx1: vm.x + vx * r1,\r\n\t\t\ty1: vm.y + vy * r1,\r\n\t\t\tvx: vx,\r\n\t\t\tvy: vy\r\n\t\t}, config);\r\n\t},\r\n\r\n\tpoint: function(vm, config) {\r\n\t\tvar v = orient(vm, config.origin);\r\n\t\tvar rx = v.x * vm.radius;\r\n\t\tvar ry = v.y * vm.radius;\r\n\r\n\t\treturn compute({\r\n\t\t\tx0: vm.x - rx,\r\n\t\t\ty0: vm.y - ry,\r\n\t\t\tx1: vm.x + rx,\r\n\t\t\ty1: vm.y + ry,\r\n\t\t\tvx: v.x,\r\n\t\t\tvy: v.y\r\n\t\t}, config);\r\n\t},\r\n\r\n\trect: function(vm, config) {\r\n\t\tvar v = orient(vm, config.origin);\r\n\t\tvar x = vm.x;\r\n\t\tvar y = vm.y;\r\n\t\tvar sx = 0;\r\n\t\tvar sy = 0;\r\n\r\n\t\tif (vm.horizontal) {\r\n\t\t\tx = Math.min(vm.x, vm.base);\r\n\t\t\tsx = Math.abs(vm.base - vm.x);\r\n\t\t} else {\r\n\t\t\ty = Math.min(vm.y, vm.base);\r\n\t\t\tsy = Math.abs(vm.base - vm.y);\r\n\t\t}\r\n\r\n\t\treturn compute({\r\n\t\t\tx0: x,\r\n\t\t\ty0: y + sy,\r\n\t\t\tx1: x + sx,\r\n\t\t\ty1: y,\r\n\t\t\tvx: v.x,\r\n\t\t\tvy: v.y\r\n\t\t}, config);\r\n\t},\r\n\r\n\tfallback: function(vm, config) {\r\n\t\tvar v = orient(vm, config.origin);\r\n\r\n\t\treturn compute({\r\n\t\t\tx0: vm.x,\r\n\t\t\ty0: vm.y,\r\n\t\t\tx1: vm.x,\r\n\t\t\ty1: vm.y,\r\n\t\t\tvx: v.x,\r\n\t\t\tvy: v.y\r\n\t\t}, config);\r\n\t}\r\n};\r\n\r\nvar helpers$1 = Chart.helpers;\r\nvar rasterize = utils.rasterize;\r\n\r\nfunction boundingRects(model) {\r\n\tvar borderWidth = model.borderWidth || 0;\r\n\tvar padding = model.padding;\r\n\tvar th = model.size.height;\r\n\tvar tw = model.size.width;\r\n\tvar tx = -tw / 2;\r\n\tvar ty = -th / 2;\r\n\r\n\treturn {\r\n\t\tframe: {\r\n\t\t\tx: tx - padding.left - borderWidth,\r\n\t\t\ty: ty - padding.top - borderWidth,\r\n\t\t\tw: tw + padding.width + borderWidth * 2,\r\n\t\t\th: th + padding.height + borderWidth * 2\r\n\t\t},\r\n\t\ttext: {\r\n\t\t\tx: tx,\r\n\t\t\ty: ty,\r\n\t\t\tw: tw,\r\n\t\t\th: th\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction getScaleOrigin(el) {\r\n\tvar horizontal = el._model.horizontal;\r\n\tvar scale = el._scale || (horizontal && el._xScale) || el._yScale;\r\n\r\n\tif (!scale) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (scale.xCenter !== undefined && scale.yCenter !== undefined) {\r\n\t\treturn {x: scale.xCenter, y: scale.yCenter};\r\n\t}\r\n\r\n\tvar pixel = scale.getBasePixel();\r\n\treturn horizontal ?\r\n\t\t{x: pixel, y: null} :\r\n\t\t{x: null, y: pixel};\r\n}\r\n\r\nfunction getPositioner(el) {\r\n\tif (el instanceof Chart.elements.Arc) {\r\n\t\treturn positioners.arc;\r\n\t}\r\n\tif (el instanceof Chart.elements.Point) {\r\n\t\treturn positioners.point;\r\n\t}\r\n\tif (el instanceof Chart.elements.Rectangle) {\r\n\t\treturn positioners.rect;\r\n\t}\r\n\treturn positioners.fallback;\r\n}\r\n\r\nfunction drawFrame(ctx, rect, model) {\r\n\tvar bgColor = model.backgroundColor;\r\n\tvar borderColor = model.borderColor;\r\n\tvar borderWidth = model.borderWidth;\r\n\r\n\tif (!bgColor && (!borderColor || !borderWidth)) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\r\n\thelpers$1.canvas.roundedRect(\r\n\t\tctx,\r\n\t\trasterize(rect.x) + borderWidth / 2,\r\n\t\trasterize(rect.y) + borderWidth / 2,\r\n\t\trasterize(rect.w) - borderWidth,\r\n\t\trasterize(rect.h) - borderWidth,\r\n\t\tmodel.borderRadius);\r\n\r\n\tctx.closePath();\r\n\r\n\tif (bgColor) {\r\n\t\tctx.fillStyle = bgColor;\r\n\t\tctx.fill();\r\n\t}\r\n\r\n\tif (borderColor && borderWidth) {\r\n\t\tctx.strokeStyle = borderColor;\r\n\t\tctx.lineWidth = borderWidth;\r\n\t\tctx.lineJoin = 'miter';\r\n\t\tctx.stroke();\r\n\t}\r\n}\r\n\r\nfunction textGeometry(rect, align, font) {\r\n\tvar h = font.lineHeight;\r\n\tvar w = rect.w;\r\n\tvar x = rect.x;\r\n\tvar y = rect.y + h / 2;\r\n\r\n\tif (align === 'center') {\r\n\t\tx += w / 2;\r\n\t} else if (align === 'end' || align === 'right') {\r\n\t\tx += w;\r\n\t}\r\n\r\n\treturn {\r\n\t\th: h,\r\n\t\tw: w,\r\n\t\tx: x,\r\n\t\ty: y\r\n\t};\r\n}\r\n\r\nfunction drawTextLine(ctx, text, cfg) {\r\n\tvar shadow = ctx.shadowBlur;\r\n\tvar stroked = cfg.stroked;\r\n\tvar x = rasterize(cfg.x);\r\n\tvar y = rasterize(cfg.y);\r\n\tvar w = rasterize(cfg.w);\r\n\r\n\tif (stroked) {\r\n\t\tctx.strokeText(text, x, y, w);\r\n\t}\r\n\r\n\tif (cfg.filled) {\r\n\t\tif (shadow && stroked) {\r\n\t\t\t// Prevent drawing shadow on both the text stroke and fill, so\r\n\t\t\t// if the text is stroked, remove the shadow for the text fill.\r\n\t\t\tctx.shadowBlur = 0;\r\n\t\t}\r\n\r\n\t\tctx.fillText(text, x, y, w);\r\n\r\n\t\tif (shadow && stroked) {\r\n\t\t\tctx.shadowBlur = shadow;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction drawText(ctx, lines, rect, model) {\r\n\tvar align = model.textAlign;\r\n\tvar color = model.color;\r\n\tvar filled = !!color;\r\n\tvar font = model.font;\r\n\tvar ilen = lines.length;\r\n\tvar strokeColor = model.textStrokeColor;\r\n\tvar strokeWidth = model.textStrokeWidth;\r\n\tvar stroked = strokeColor && strokeWidth;\r\n\tvar i;\r\n\r\n\tif (!ilen || (!filled && !stroked)) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// Adjust coordinates based on text alignment and line height\r\n\trect = textGeometry(rect, align, font);\r\n\r\n\tctx.font = font.string;\r\n\tctx.textAlign = align;\r\n\tctx.textBaseline = 'middle';\r\n\tctx.shadowBlur = model.textShadowBlur;\r\n\tctx.shadowColor = model.textShadowColor;\r\n\r\n\tif (filled) {\r\n\t\tctx.fillStyle = color;\r\n\t}\r\n\tif (stroked) {\r\n\t\tctx.lineJoin = 'round';\r\n\t\tctx.lineWidth = strokeWidth;\r\n\t\tctx.strokeStyle = strokeColor;\r\n\t}\r\n\r\n\tfor (i = 0, ilen = lines.length; i < ilen; ++i) {\r\n\t\tdrawTextLine(ctx, lines[i], {\r\n\t\t\tstroked: stroked,\r\n\t\t\tfilled: filled,\r\n\t\t\tw: rect.w,\r\n\t\t\tx: rect.x,\r\n\t\t\ty: rect.y + rect.h * i\r\n\t\t});\r\n\t}\r\n}\r\n\r\nvar Label = function(config, ctx, el, index) {\r\n\tvar me = this;\r\n\r\n\tme._config = config;\r\n\tme._index = index;\r\n\tme._model = null;\r\n\tme._rects = null;\r\n\tme._ctx = ctx;\r\n\tme._el = el;\r\n};\r\n\r\nhelpers$1.extend(Label.prototype, {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_modelize: function(display, lines, config, context) {\r\n\t\tvar me = this;\r\n\t\tvar index = me._index;\r\n\t\tvar resolve = helpers$1.options.resolve;\r\n\t\tvar font = utils.parseFont(resolve([config.font, {}], context, index));\r\n\t\tvar color = resolve([config.color, Chart.defaults.global.defaultFontColor], context, index);\r\n\r\n\t\treturn {\r\n\t\t\talign: resolve([config.align, 'center'], context, index),\r\n\t\t\tanchor: resolve([config.anchor, 'center'], context, index),\r\n\t\t\tarea: context.chart.chartArea,\r\n\t\t\tbackgroundColor: resolve([config.backgroundColor, null], context, index),\r\n\t\t\tborderColor: resolve([config.borderColor, null], context, index),\r\n\t\t\tborderRadius: resolve([config.borderRadius, 0], context, index),\r\n\t\t\tborderWidth: resolve([config.borderWidth, 0], context, index),\r\n\t\t\tclamp: resolve([config.clamp, false], context, index),\r\n\t\t\tclip: resolve([config.clip, false], context, index),\r\n\t\t\tcolor: color,\r\n\t\t\tdisplay: display,\r\n\t\t\tfont: font,\r\n\t\t\tlines: lines,\r\n\t\t\toffset: resolve([config.offset, 0], context, index),\r\n\t\t\topacity: resolve([config.opacity, 1], context, index),\r\n\t\t\torigin: getScaleOrigin(me._el),\r\n\t\t\tpadding: helpers$1.options.toPadding(resolve([config.padding, 0], context, index)),\r\n\t\t\tpositioner: getPositioner(me._el),\r\n\t\t\trotation: resolve([config.rotation, 0], context, index) * (Math.PI / 180),\r\n\t\t\tsize: utils.textSize(me._ctx, lines, font),\r\n\t\t\ttextAlign: resolve([config.textAlign, 'start'], context, index),\r\n\t\t\ttextShadowBlur: resolve([config.textShadowBlur, 0], context, index),\r\n\t\t\ttextShadowColor: resolve([config.textShadowColor, color], context, index),\r\n\t\t\ttextStrokeColor: resolve([config.textStrokeColor, color], context, index),\r\n\t\t\ttextStrokeWidth: resolve([config.textStrokeWidth, 0], context, index)\r\n\t\t};\r\n\t},\r\n\r\n\tupdate: function(context) {\r\n\t\tvar me = this;\r\n\t\tvar model = null;\r\n\t\tvar rects = null;\r\n\t\tvar index = me._index;\r\n\t\tvar config = me._config;\r\n\t\tvar value, label, lines;\r\n\r\n\t\t// We first resolve the display option (separately) to avoid computing\r\n\t\t// other options in case the label is hidden (i.e. display: false).\r\n\t\tvar display = helpers$1.options.resolve([config.display, true], context, index);\r\n\r\n\t\tif (display) {\r\n\t\t\tvalue = context.dataset.data[index];\r\n\t\t\tlabel = helpers$1.valueOrDefault(helpers$1.callback(config.formatter, [value, context]), value);\r\n\t\t\tlines = helpers$1.isNullOrUndef(label) ? [] : utils.toTextLines(label);\r\n\r\n\t\t\tif (lines.length) {\r\n\t\t\t\tmodel = me._modelize(display, lines, config, context);\r\n\t\t\t\trects = boundingRects(model);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme._model = model;\r\n\t\tme._rects = rects;\r\n\t},\r\n\r\n\tgeometry: function() {\r\n\t\treturn this._rects ? this._rects.frame : {};\r\n\t},\r\n\r\n\trotation: function() {\r\n\t\treturn this._model ? this._model.rotation : 0;\r\n\t},\r\n\r\n\tvisible: function() {\r\n\t\treturn this._model && this._model.opacity;\r\n\t},\r\n\r\n\tmodel: function() {\r\n\t\treturn this._model;\r\n\t},\r\n\r\n\tdraw: function(chart, center) {\r\n\t\tvar me = this;\r\n\t\tvar ctx = chart.ctx;\r\n\t\tvar model = me._model;\r\n\t\tvar rects = me._rects;\r\n\t\tvar area;\r\n\r\n\t\tif (!this.visible()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\r\n\t\tif (model.clip) {\r\n\t\t\tarea = model.area;\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.rect(\r\n\t\t\t\tarea.left,\r\n\t\t\t\tarea.top,\r\n\t\t\t\tarea.right - area.left,\r\n\t\t\t\tarea.bottom - area.top);\r\n\t\t\tctx.clip();\r\n\t\t}\r\n\r\n\t\tctx.globalAlpha = utils.bound(0, model.opacity, 1);\r\n\t\tctx.translate(rasterize(center.x), rasterize(center.y));\r\n\t\tctx.rotate(model.rotation);\r\n\r\n\t\tdrawFrame(ctx, rects.frame, model);\r\n\t\tdrawText(ctx, model.lines, rects.text, model);\r\n\r\n\t\tctx.restore();\r\n\t}\r\n});\r\n\r\nvar helpers$2 = Chart.helpers;\r\n\r\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; // eslint-disable-line es/no-number-minsafeinteger\r\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; // eslint-disable-line es/no-number-maxsafeinteger\r\n\r\nfunction rotated(point, center, angle) {\r\n\tvar cos = Math.cos(angle);\r\n\tvar sin = Math.sin(angle);\r\n\tvar cx = center.x;\r\n\tvar cy = center.y;\r\n\r\n\treturn {\r\n\t\tx: cx + cos * (point.x - cx) - sin * (point.y - cy),\r\n\t\ty: cy + sin * (point.x - cx) + cos * (point.y - cy)\r\n\t};\r\n}\r\n\r\nfunction projected(points, axis) {\r\n\tvar min = MAX_INTEGER;\r\n\tvar max = MIN_INTEGER;\r\n\tvar origin = axis.origin;\r\n\tvar i, pt, vx, vy, dp;\r\n\r\n\tfor (i = 0; i < points.length; ++i) {\r\n\t\tpt = points[i];\r\n\t\tvx = pt.x - origin.x;\r\n\t\tvy = pt.y - origin.y;\r\n\t\tdp = axis.vx * vx + axis.vy * vy;\r\n\t\tmin = Math.min(min, dp);\r\n\t\tmax = Math.max(max, dp);\r\n\t}\r\n\r\n\treturn {\r\n\t\tmin: min,\r\n\t\tmax: max\r\n\t};\r\n}\r\n\r\nfunction toAxis(p0, p1) {\r\n\tvar vx = p1.x - p0.x;\r\n\tvar vy = p1.y - p0.y;\r\n\tvar ln = Math.sqrt(vx * vx + vy * vy);\r\n\r\n\treturn {\r\n\t\tvx: (p1.x - p0.x) / ln,\r\n\t\tvy: (p1.y - p0.y) / ln,\r\n\t\torigin: p0,\r\n\t\tln: ln\r\n\t};\r\n}\r\n\r\nvar HitBox = function() {\r\n\tthis._rotation = 0;\r\n\tthis._rect = {\r\n\t\tx: 0,\r\n\t\ty: 0,\r\n\t\tw: 0,\r\n\t\th: 0\r\n\t};\r\n};\r\n\r\nhelpers$2.extend(HitBox.prototype, {\r\n\tcenter: function() {\r\n\t\tvar r = this._rect;\r\n\t\treturn {\r\n\t\t\tx: r.x + r.w / 2,\r\n\t\t\ty: r.y + r.h / 2\r\n\t\t};\r\n\t},\r\n\r\n\tupdate: function(center, rect, rotation) {\r\n\t\tthis._rotation = rotation;\r\n\t\tthis._rect = {\r\n\t\t\tx: rect.x + center.x,\r\n\t\t\ty: rect.y + center.y,\r\n\t\t\tw: rect.w,\r\n\t\t\th: rect.h\r\n\t\t};\r\n\t},\r\n\r\n\tcontains: function(point) {\r\n\t\tvar me = this;\r\n\t\tvar margin = 1;\r\n\t\tvar rect = me._rect;\r\n\r\n\t\tpoint = rotated(point, me.center(), -me._rotation);\r\n\r\n\t\treturn !(point.x < rect.x - margin\r\n\t\t\t|| point.y < rect.y - margin\r\n\t\t\t|| point.x > rect.x + rect.w + margin * 2\r\n\t\t\t|| point.y > rect.y + rect.h + margin * 2);\r\n\t},\r\n\r\n\t// Separating Axis Theorem\r\n\t// https://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169\r\n\tintersects: function(other) {\r\n\t\tvar r0 = this._points();\r\n\t\tvar r1 = other._points();\r\n\t\tvar axes = [\r\n\t\t\ttoAxis(r0[0], r0[1]),\r\n\t\t\ttoAxis(r0[0], r0[3])\r\n\t\t];\r\n\t\tvar i, pr0, pr1;\r\n\r\n\t\tif (this._rotation !== other._rotation) {\r\n\t\t\t// Only separate with r1 axis if the rotation is different,\r\n\t\t\t// else it's enough to separate r0 and r1 with r0 axis only!\r\n\t\t\taxes.push(\r\n\t\t\t\ttoAxis(r1[0], r1[1]),\r\n\t\t\t\ttoAxis(r1[0], r1[3])\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < axes.length; ++i) {\r\n\t\t\tpr0 = projected(r0, axes[i]);\r\n\t\t\tpr1 = projected(r1, axes[i]);\r\n\r\n\t\t\tif (pr0.max < pr1.min || pr1.max < pr0.min) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_points: function() {\r\n\t\tvar me = this;\r\n\t\tvar rect = me._rect;\r\n\t\tvar angle = me._rotation;\r\n\t\tvar center = me.center();\r\n\r\n\t\treturn [\r\n\t\t\trotated({x: rect.x, y: rect.y}, center, angle),\r\n\t\t\trotated({x: rect.x + rect.w, y: rect.y}, center, angle),\r\n\t\t\trotated({x: rect.x + rect.w, y: rect.y + rect.h}, center, angle),\r\n\t\t\trotated({x: rect.x, y: rect.y + rect.h}, center, angle)\r\n\t\t];\r\n\t}\r\n});\r\n\r\nfunction coordinates(view, model, geometry) {\r\n\tvar point = model.positioner(view, model);\r\n\tvar vx = point.vx;\r\n\tvar vy = point.vy;\r\n\r\n\tif (!vx && !vy) {\r\n\t\t// if aligned center, we don't want to offset the center point\r\n\t\treturn {x: point.x, y: point.y};\r\n\t}\r\n\r\n\tvar w = geometry.w;\r\n\tvar h = geometry.h;\r\n\r\n\t// take in account the label rotation\r\n\tvar rotation = model.rotation;\r\n\tvar dx = Math.abs(w / 2 * Math.cos(rotation)) + Math.abs(h / 2 * Math.sin(rotation));\r\n\tvar dy = Math.abs(w / 2 * Math.sin(rotation)) + Math.abs(h / 2 * Math.cos(rotation));\r\n\r\n\t// scale the unit vector (vx, vy) to get at least dx or dy equal to\r\n\t// w or h respectively (else we would calculate the distance to the\r\n\t// ellipse inscribed in the bounding rect)\r\n\tvar vs = 1 / Math.max(Math.abs(vx), Math.abs(vy));\r\n\tdx *= vx * vs;\r\n\tdy *= vy * vs;\r\n\r\n\t// finally, include the explicit offset\r\n\tdx += model.offset * vx;\r\n\tdy += model.offset * vy;\r\n\r\n\treturn {\r\n\t\tx: point.x + dx,\r\n\t\ty: point.y + dy\r\n\t};\r\n}\r\n\r\nfunction collide(labels, collider) {\r\n\tvar i, j, s0, s1;\r\n\r\n\t// IMPORTANT Iterate in the reverse order since items at the end of the\r\n\t// list have an higher weight/priority and thus should be less impacted\r\n\t// by the overlapping strategy.\r\n\r\n\tfor (i = labels.length - 1; i >= 0; --i) {\r\n\t\ts0 = labels[i].$layout;\r\n\r\n\t\tfor (j = i - 1; j >= 0 && s0._visible; --j) {\r\n\t\t\ts1 = labels[j].$layout;\r\n\r\n\t\t\tif (s1._visible && s0._box.intersects(s1._box)) {\r\n\t\t\t\tcollider(s0, s1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn labels;\r\n}\r\n\r\nfunction compute$1(labels) {\r\n\tvar i, ilen, label, state, geometry, center;\r\n\r\n\t// Initialize labels for overlap detection\r\n\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\r\n\t\tlabel = labels[i];\r\n\t\tstate = label.$layout;\r\n\r\n\t\tif (state._visible) {\r\n\t\t\tgeometry = label.geometry();\r\n\t\t\tcenter = coordinates(label._el._model, label.model(), geometry);\r\n\t\t\tstate._box.update(center, geometry, label.rotation());\r\n\t\t}\r\n\t}\r\n\r\n\t// Auto hide overlapping labels\r\n\treturn collide(labels, function(s0, s1) {\r\n\t\tvar h0 = s0._hidable;\r\n\t\tvar h1 = s1._hidable;\r\n\r\n\t\tif ((h0 && h1) || h1) {\r\n\t\t\ts1._visible = false;\r\n\t\t} else if (h0) {\r\n\t\t\ts0._visible = false;\r\n\t\t}\r\n\t});\r\n}\r\n\r\nvar layout = {\r\n\tprepare: function(datasets) {\r\n\t\tvar labels = [];\r\n\t\tvar i, j, ilen, jlen, label;\r\n\r\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\r\n\t\t\tfor (j = 0, jlen = datasets[i].length; j < jlen; ++j) {\r\n\t\t\t\tlabel = datasets[i][j];\r\n\t\t\t\tlabels.push(label);\r\n\t\t\t\tlabel.$layout = {\r\n\t\t\t\t\t_box: new HitBox(),\r\n\t\t\t\t\t_hidable: false,\r\n\t\t\t\t\t_visible: true,\r\n\t\t\t\t\t_set: i,\r\n\t\t\t\t\t_idx: j\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// TODO New `z` option: labels with a higher z-index are drawn\r\n\t\t// of top of the ones with a lower index. Lowest z-index labels\r\n\t\t// are also discarded first when hiding overlapping labels.\r\n\t\tlabels.sort(function(a, b) {\r\n\t\t\tvar sa = a.$layout;\r\n\t\t\tvar sb = b.$layout;\r\n\r\n\t\t\treturn sa._idx === sb._idx\r\n\t\t\t\t? sb._set - sa._set\r\n\t\t\t\t: sb._idx - sa._idx;\r\n\t\t});\r\n\r\n\t\tthis.update(labels);\r\n\r\n\t\treturn labels;\r\n\t},\r\n\r\n\tupdate: function(labels) {\r\n\t\tvar dirty = false;\r\n\t\tvar i, ilen, label, model, state;\r\n\r\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\r\n\t\t\tlabel = labels[i];\r\n\t\t\tmodel = label.model();\r\n\t\t\tstate = label.$layout;\r\n\t\t\tstate._hidable = model && model.display === 'auto';\r\n\t\t\tstate._visible = label.visible();\r\n\t\t\tdirty |= state._hidable;\r\n\t\t}\r\n\r\n\t\tif (dirty) {\r\n\t\t\tcompute$1(labels);\r\n\t\t}\r\n\t},\r\n\r\n\tlookup: function(labels, point) {\r\n\t\tvar i, state;\r\n\r\n\t\t// IMPORTANT Iterate in the reverse order since items at the end of\r\n\t\t// the list have an higher z-index, thus should be picked first.\r\n\r\n\t\tfor (i = labels.length - 1; i >= 0; --i) {\r\n\t\t\tstate = labels[i].$layout;\r\n\r\n\t\t\tif (state && state._visible && state._box.contains(point)) {\r\n\t\t\t\treturn labels[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\tdraw: function(chart, labels) {\r\n\t\tvar i, ilen, label, state, geometry, center;\r\n\r\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\r\n\t\t\tlabel = labels[i];\r\n\t\t\tstate = label.$layout;\r\n\r\n\t\t\tif (state._visible) {\r\n\t\t\t\tgeometry = label.geometry();\r\n\t\t\t\tcenter = coordinates(label._el._view, label.model(), geometry);\r\n\t\t\t\tstate._box.update(center, geometry, label.rotation());\r\n\t\t\t\tlabel.draw(chart, center);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar helpers$3 = Chart.helpers;\r\n\r\nvar formatter = function(value) {\r\n\tif (helpers$3.isNullOrUndef(value)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar label = value;\r\n\tvar keys, klen, k;\r\n\tif (helpers$3.isObject(value)) {\r\n\t\tif (!helpers$3.isNullOrUndef(value.label)) {\r\n\t\t\tlabel = value.label;\r\n\t\t} else if (!helpers$3.isNullOrUndef(value.r)) {\r\n\t\t\tlabel = value.r;\r\n\t\t} else {\r\n\t\t\tlabel = '';\r\n\t\t\tkeys = Object.keys(value);\r\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\r\n\t\t\t\tlabel += (k !== 0 ? ', ' : '') + keys[k] + ': ' + value[keys[k]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn '' + label;\r\n};\r\n\r\n/**\r\n * IMPORTANT: make sure to also update tests and TypeScript definition\r\n * files (`/test/specs/defaults.spec.js` and `/types/options.d.ts`)\r\n */\r\n\r\nvar defaults = {\r\n\talign: 'center',\r\n\tanchor: 'center',\r\n\tbackgroundColor: null,\r\n\tborderColor: null,\r\n\tborderRadius: 0,\r\n\tborderWidth: 0,\r\n\tclamp: false,\r\n\tclip: false,\r\n\tcolor: undefined,\r\n\tdisplay: true,\r\n\tfont: {\r\n\t\tfamily: undefined,\r\n\t\tlineHeight: 1.2,\r\n\t\tsize: undefined,\r\n\t\tstyle: undefined,\r\n\t\tweight: null\r\n\t},\r\n\tformatter: formatter,\r\n\tlabels: undefined,\r\n\tlisteners: {},\r\n\toffset: 4,\r\n\topacity: 1,\r\n\tpadding: {\r\n\t\ttop: 4,\r\n\t\tright: 4,\r\n\t\tbottom: 4,\r\n\t\tleft: 4\r\n\t},\r\n\trotation: 0,\r\n\ttextAlign: 'start',\r\n\ttextStrokeColor: undefined,\r\n\ttextStrokeWidth: 0,\r\n\ttextShadowBlur: 0,\r\n\ttextShadowColor: undefined\r\n};\r\n\r\n/**\r\n * @see https://github.com/chartjs/Chart.js/issues/4176\r\n */\r\n\r\nvar helpers$4 = Chart.helpers;\r\nvar EXPANDO_KEY = '$datalabels';\r\nvar DEFAULT_KEY = '$default';\r\n\r\nfunction configure(dataset, options) {\r\n\tvar override = dataset.datalabels;\r\n\tvar listeners = {};\r\n\tvar configs = [];\r\n\tvar labels, keys;\r\n\r\n\tif (override === false) {\r\n\t\treturn null;\r\n\t}\r\n\tif (override === true) {\r\n\t\toverride = {};\r\n\t}\r\n\r\n\toptions = helpers$4.merge({}, [options, override]);\r\n\tlabels = options.labels || {};\r\n\tkeys = Object.keys(labels);\r\n\tdelete options.labels;\r\n\r\n\tif (keys.length) {\r\n\t\tkeys.forEach(function(key) {\r\n\t\t\tif (labels[key]) {\r\n\t\t\t\tconfigs.push(helpers$4.merge({}, [\r\n\t\t\t\t\toptions,\r\n\t\t\t\t\tlabels[key],\r\n\t\t\t\t\t{_key: key}\r\n\t\t\t\t]));\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\t// Default label if no \"named\" label defined.\r\n\t\tconfigs.push(options);\r\n\t}\r\n\r\n\t// listeners: {: {: }}\r\n\tlisteners = configs.reduce(function(target, config) {\r\n\t\thelpers$4.each(config.listeners || {}, function(fn, event) {\r\n\t\t\ttarget[event] = target[event] || {};\r\n\t\t\ttarget[event][config._key || DEFAULT_KEY] = fn;\r\n\t\t});\r\n\r\n\t\tdelete config.listeners;\r\n\t\treturn target;\r\n\t}, {});\r\n\r\n\treturn {\r\n\t\tlabels: configs,\r\n\t\tlisteners: listeners\r\n\t};\r\n}\r\n\r\nfunction dispatchEvent(chart, listeners, label) {\r\n\tif (!listeners) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar context = label.$context;\r\n\tvar groups = label.$groups;\r\n\tvar callback;\r\n\r\n\tif (!listeners[groups._set]) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tcallback = listeners[groups._set][groups._key];\r\n\tif (!callback) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (helpers$4.callback(callback, [context]) === true) {\r\n\t\t// Users are allowed to tweak the given context by injecting values that can be\r\n\t\t// used in scriptable options to display labels differently based on the current\r\n\t\t// event (e.g. highlight an hovered label). That's why we update the label with\r\n\t\t// the output context and schedule a new chart render by setting it dirty.\r\n\t\tchart[EXPANDO_KEY]._dirty = true;\r\n\t\tlabel.update(context);\r\n\t}\r\n}\r\n\r\nfunction dispatchMoveEvents(chart, listeners, previous, label) {\r\n\tvar enter, leave;\r\n\r\n\tif (!previous && !label) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (!previous) {\r\n\t\tenter = true;\r\n\t} else if (!label) {\r\n\t\tleave = true;\r\n\t} else if (previous !== label) {\r\n\t\tleave = enter = true;\r\n\t}\r\n\r\n\tif (leave) {\r\n\t\tdispatchEvent(chart, listeners.leave, previous);\r\n\t}\r\n\tif (enter) {\r\n\t\tdispatchEvent(chart, listeners.enter, label);\r\n\t}\r\n}\r\n\r\nfunction handleMoveEvents(chart, event) {\r\n\tvar expando = chart[EXPANDO_KEY];\r\n\tvar listeners = expando._listeners;\r\n\tvar previous, label;\r\n\r\n\tif (!listeners.enter && !listeners.leave) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (event.type === 'mousemove') {\r\n\t\tlabel = layout.lookup(expando._labels, event);\r\n\t} else if (event.type !== 'mouseout') {\r\n\t\treturn;\r\n\t}\r\n\r\n\tprevious = expando._hovered;\r\n\texpando._hovered = label;\r\n\tdispatchMoveEvents(chart, listeners, previous, label);\r\n}\r\n\r\nfunction handleClickEvents(chart, event) {\r\n\tvar expando = chart[EXPANDO_KEY];\r\n\tvar handlers = expando._listeners.click;\r\n\tvar label = handlers && layout.lookup(expando._labels, event);\r\n\tif (label) {\r\n\t\tdispatchEvent(chart, handlers, label);\r\n\t}\r\n}\r\n\r\n// https://github.com/chartjs/chartjs-plugin-datalabels/issues/108\r\nfunction invalidate(chart) {\r\n\tif (chart.animating) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// `chart.animating` can be `false` even if there is animation in progress,\r\n\t// so let's iterate all animations to find if there is one for the `chart`.\r\n\tvar animations = Chart.animationService.animations;\r\n\tfor (var i = 0, ilen = animations.length; i < ilen; ++i) {\r\n\t\tif (animations[i].chart === chart) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t// No render scheduled: trigger a \"lazy\" render that can be canceled in case\r\n\t// of hover interactions. The 1ms duration is a workaround to make sure an\r\n\t// animation is created so the controller can stop it before any transition.\r\n\tchart.render({duration: 1, lazy: true});\r\n}\r\n\r\nChart.defaults.global.plugins.datalabels = defaults;\r\n\r\nvar plugin = {\r\n\tid: 'datalabels',\r\n\r\n\tbeforeInit: function(chart) {\r\n\t\tchart[EXPANDO_KEY] = {\r\n\t\t\t_actives: []\r\n\t\t};\r\n\t},\r\n\r\n\tbeforeUpdate: function(chart) {\r\n\t\tvar expando = chart[EXPANDO_KEY];\r\n\t\texpando._listened = false;\r\n\t\texpando._listeners = {}; // {: {: {: }}}\r\n\t\texpando._datasets = []; // per dataset labels: [Label[]]\r\n\t\texpando._labels = []; // layouted labels: Label[]\r\n\t},\r\n\r\n\tafterDatasetUpdate: function(chart, args, options) {\r\n\t\tvar datasetIndex = args.index;\r\n\t\tvar expando = chart[EXPANDO_KEY];\r\n\t\tvar labels = expando._datasets[datasetIndex] = [];\r\n\t\tvar visible = chart.isDatasetVisible(datasetIndex);\r\n\t\tvar dataset = chart.data.datasets[datasetIndex];\r\n\t\tvar config = configure(dataset, options);\r\n\t\tvar elements = args.meta.data || [];\r\n\t\tvar ctx = chart.ctx;\r\n\t\tvar i, j, ilen, jlen, cfg, key, el, label;\r\n\r\n\t\tctx.save();\r\n\r\n\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\r\n\t\t\tel = elements[i];\r\n\t\t\tel[EXPANDO_KEY] = [];\r\n\r\n\t\t\tif (visible && el && !el.hidden && !el._model.skip) {\r\n\t\t\t\tfor (j = 0, jlen = config.labels.length; j < jlen; ++j) {\r\n\t\t\t\t\tcfg = config.labels[j];\r\n\t\t\t\t\tkey = cfg._key;\r\n\r\n\t\t\t\t\tlabel = new Label(cfg, ctx, el, i);\r\n\t\t\t\t\tlabel.$groups = {\r\n\t\t\t\t\t\t_set: datasetIndex,\r\n\t\t\t\t\t\t_key: key || DEFAULT_KEY\r\n\t\t\t\t\t};\r\n\t\t\t\t\tlabel.$context = {\r\n\t\t\t\t\t\tactive: false,\r\n\t\t\t\t\t\tchart: chart,\r\n\t\t\t\t\t\tdataIndex: i,\r\n\t\t\t\t\t\tdataset: dataset,\r\n\t\t\t\t\t\tdatasetIndex: datasetIndex\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tlabel.update(label.$context);\r\n\t\t\t\t\tel[EXPANDO_KEY].push(label);\r\n\t\t\t\t\tlabels.push(label);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tctx.restore();\r\n\r\n\t\t// Store listeners at the chart level and per event type to optimize\r\n\t\t// cases where no listeners are registered for a specific event.\r\n\t\thelpers$4.merge(expando._listeners, config.listeners, {\r\n\t\t\tmerger: function(event, target, source) {\r\n\t\t\t\ttarget[event] = target[event] || {};\r\n\t\t\t\ttarget[event][args.index] = source[event];\r\n\t\t\t\texpando._listened = true;\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tafterUpdate: function(chart, options) {\r\n\t\tchart[EXPANDO_KEY]._labels = layout.prepare(\r\n\t\t\tchart[EXPANDO_KEY]._datasets,\r\n\t\t\toptions);\r\n\t},\r\n\r\n\t// Draw labels on top of all dataset elements\r\n\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/29\r\n\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/32\r\n\tafterDatasetsDraw: function(chart) {\r\n\t\tlayout.draw(chart, chart[EXPANDO_KEY]._labels);\r\n\t},\r\n\r\n\tbeforeEvent: function(chart, event) {\r\n\t\t// If there is no listener registered for this chart, `listened` will be false,\r\n\t\t// meaning we can immediately ignore the incoming event and avoid useless extra\r\n\t\t// computation for users who don't implement label interactions.\r\n\t\tif (chart[EXPANDO_KEY]._listened) {\r\n\t\t\tswitch (event.type) {\r\n\t\t\tcase 'mousemove':\r\n\t\t\tcase 'mouseout':\r\n\t\t\t\thandleMoveEvents(chart, event);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'click':\r\n\t\t\t\thandleClickEvents(chart, event);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tafterEvent: function(chart) {\r\n\t\tvar expando = chart[EXPANDO_KEY];\r\n\t\tvar previous = expando._actives;\r\n\t\tvar actives = expando._actives = chart.lastActive || []; // public API?!\r\n\t\tvar updates = utils.arrayDiff(previous, actives);\r\n\t\tvar i, ilen, j, jlen, update, label, labels;\r\n\r\n\t\tfor (i = 0, ilen = updates.length; i < ilen; ++i) {\r\n\t\t\tupdate = updates[i];\r\n\t\t\tif (update[1]) {\r\n\t\t\t\tlabels = update[0][EXPANDO_KEY] || [];\r\n\t\t\t\tfor (j = 0, jlen = labels.length; j < jlen; ++j) {\r\n\t\t\t\t\tlabel = labels[j];\r\n\t\t\t\t\tlabel.$context.active = (update[1] === 1);\r\n\t\t\t\t\tlabel.update(label.$context);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (expando._dirty || updates.length) {\r\n\t\t\tlayout.update(expando._labels);\r\n\t\t\tinvalidate(chart);\r\n\t\t}\r\n\r\n\t\tdelete expando._dirty;\r\n\t}\r\n};\r\n\r\n// TODO Remove at version 1, we shouldn't automatically register plugins.\r\n// https://github.com/chartjs/chartjs-plugin-datalabels/issues/42\r\nChart.plugins.unregister(plugin);\r\nreturn plugin;\r\n\r\n}));\r\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/forced-string-html-method');\n\n// `String.prototype.anchor` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.anchor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, {\n anchor: function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n }\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar quot = /\"/g;\n\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\n// https://tc39.github.io/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = String(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n","module.exports = chart;","/*\r\n Enhanced Bootstrap Modals\r\n https://mdbootstrap.com\r\n office@mdbootstrap.com\r\n*/\r\n\r\n(function($){\r\n $('body').on('shown.bs.modal', '.modal', function() {\r\n if(!$('.modal-backdrop').length) {\r\n\r\n $modal_dialog = $(this).children('.modal-dialog')\r\n\r\n if($modal_dialog.hasClass('modal-side')) {\r\n $(this).addClass('modal-scrolling');\r\n $('body').addClass('scrollable');\r\n }\r\n\r\n if($modal_dialog.hasClass('modal-frame')) {\r\n $(this).addClass('modal-content-clickable');\r\n $('body').addClass('scrollable');\r\n }\r\n }\r\n });\r\n $('body').on('hidden.bs.modal', '.modal', function() {\r\n $('body').removeClass('scrollable');\r\n });\r\n})(jQuery);\r\n","/*\r\n * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/\r\n *\r\n * Uses the built in easing capabilities added In jQuery 1.1\r\n * to offer multiple easing options\r\n *\r\n * TERMS OF USE - jQuery Easing\r\n *\r\n * Open source under the BSD License.\r\n *\r\n * Copyright © 2008 George McGinley Smith\r\n * All rights reserved.\r\n *\r\n * Redistribution and use in source and binary forms, with or without modification,\r\n * are permitted provided that the following conditions are met:\r\n *\r\n * Redistributions of source code must retain the above copyright notice, this list of\r\n * conditions and the following disclaimer.\r\n * Redistributions in binary form must reproduce the above copyright notice, this list\r\n * of conditions and the following disclaimer in the documentation and/or other materials\r\n * provided with the distribution.\r\n *\r\n * Neither the name of the author nor the names of contributors may be used to endorse\r\n * or promote products derived from this software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\r\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r\n * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\r\n * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\r\n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\r\n * OF THE POSSIBILITY OF SUCH DAMAGE.\r\n *\r\n*/\r\n\r\n// t: current time, b: begInnIng value, c: change In value, d: duration\r\njQuery.easing['jswing'] = jQuery.easing['swing'];\r\n\r\njQuery.extend( jQuery.easing,\r\n{\r\n def: 'easeOutQuad',\r\n swing: function (x, t, b, c, d) {\r\n //alert(jQuery.easing.default);\r\n return jQuery.easing[jQuery.easing.def](x, t, b, c, d);\r\n },\r\n easeInQuad: function (x, t, b, c, d) {\r\n return c*(t/=d)*t + b;\r\n },\r\n easeOutQuad: function (x, t, b, c, d) {\r\n return -c *(t/=d)*(t-2) + b;\r\n },\r\n easeInOutQuad: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t + b;\r\n return -c/2 * ((--t)*(t-2) - 1) + b;\r\n },\r\n easeInCubic: function (x, t, b, c, d) {\r\n return c*(t/=d)*t*t + b;\r\n },\r\n easeOutCubic: function (x, t, b, c, d) {\r\n return c*((t=t/d-1)*t*t + 1) + b;\r\n },\r\n easeInOutCubic: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t*t + b;\r\n return c/2*((t-=2)*t*t + 2) + b;\r\n },\r\n easeInQuart: function (x, t, b, c, d) {\r\n return c*(t/=d)*t*t*t + b;\r\n },\r\n easeOutQuart: function (x, t, b, c, d) {\r\n return -c * ((t=t/d-1)*t*t*t - 1) + b;\r\n },\r\n easeInOutQuart: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t*t*t + b;\r\n return -c/2 * ((t-=2)*t*t*t - 2) + b;\r\n },\r\n easeInQuint: function (x, t, b, c, d) {\r\n return c*(t/=d)*t*t*t*t + b;\r\n },\r\n easeOutQuint: function (x, t, b, c, d) {\r\n return c*((t=t/d-1)*t*t*t*t + 1) + b;\r\n },\r\n easeInOutQuint: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;\r\n return c/2*((t-=2)*t*t*t*t + 2) + b;\r\n },\r\n easeInSine: function (x, t, b, c, d) {\r\n return -c * Math.cos(t/d * (Math.PI/2)) + c + b;\r\n },\r\n easeOutSine: function (x, t, b, c, d) {\r\n return c * Math.sin(t/d * (Math.PI/2)) + b;\r\n },\r\n easeInOutSine: function (x, t, b, c, d) {\r\n return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;\r\n },\r\n easeInExpo: function (x, t, b, c, d) {\r\n return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;\r\n },\r\n easeOutExpo: function (x, t, b, c, d) {\r\n return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;\r\n },\r\n easeInOutExpo: function (x, t, b, c, d) {\r\n if (t==0) return b;\r\n if (t==d) return b+c;\r\n if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;\r\n return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;\r\n },\r\n easeInCirc: function (x, t, b, c, d) {\r\n return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;\r\n },\r\n easeOutCirc: function (x, t, b, c, d) {\r\n return c * Math.sqrt(1 - (t=t/d-1)*t) + b;\r\n },\r\n easeInOutCirc: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;\r\n return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;\r\n },\r\n easeInElastic: function (x, t, b, c, d) {\r\n var s=1.70158;var p=0;var a=c;\r\n if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;\r\n if (a < Math.abs(c)) { a=c; var s=p/4; }\r\n else var s = p/(2*Math.PI) * Math.asin (c/a);\r\n return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\r\n },\r\n easeOutElastic: function (x, t, b, c, d) {\r\n var s=1.70158;var p=0;var a=c;\r\n if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;\r\n if (a < Math.abs(c)) { a=c; var s=p/4; }\r\n else var s = p/(2*Math.PI) * Math.asin (c/a);\r\n return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;\r\n },\r\n easeInOutElastic: function (x, t, b, c, d) {\r\n var s=1.70158;var p=0;var a=c;\r\n if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);\r\n if (a < Math.abs(c)) { a=c; var s=p/4; }\r\n else var s = p/(2*Math.PI) * Math.asin (c/a);\r\n if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\r\n return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;\r\n },\r\n easeInBack: function (x, t, b, c, d, s) {\r\n if (s == undefined) s = 1.70158;\r\n return c*(t/=d)*t*((s+1)*t - s) + b;\r\n },\r\n easeOutBack: function (x, t, b, c, d, s) {\r\n if (s == undefined) s = 1.70158;\r\n return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;\r\n },\r\n easeInOutBack: function (x, t, b, c, d, s) {\r\n if (s == undefined) s = 1.70158;\r\n if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;\r\n return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;\r\n },\r\n easeInBounce: function (x, t, b, c, d) {\r\n return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;\r\n },\r\n easeOutBounce: function (x, t, b, c, d) {\r\n if ((t/=d) < (1/2.75)) {\r\n return c*(7.5625*t*t) + b;\r\n } else if (t < (2/2.75)) {\r\n return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;\r\n } else if (t < (2.5/2.75)) {\r\n return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;\r\n } else {\r\n return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;\r\n }\r\n },\r\n easeInOutBounce: function (x, t, b, c, d) {\r\n if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;\r\n return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;\r\n }\r\n});\r\n\r\n/*\r\n *\r\n * TERMS OF USE - EASING EQUATIONS\r\n *\r\n * Open source under the BSD License.\r\n *\r\n * Copyright © 2001 Robert Penner\r\n * All rights reserved.\r\n *\r\n * Redistribution and use in source and binary forms, with or without modification,\r\n * are permitted provided that the following conditions are met:\r\n *\r\n * Redistributions of source code must retain the above copyright notice, this list of\r\n * conditions and the following disclaimer.\r\n * Redistributions in binary form must reproduce the above copyright notice, this list\r\n * of conditions and the following disclaimer in the documentation and/or other materials\r\n * provided with the distribution.\r\n *\r\n * Neither the name of the author nor the names of contributors may be used to endorse\r\n * or promote products derived from this software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\r\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r\n * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\r\n * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\r\n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\r\n * OF THE POSSIBILITY OF SUCH DAMAGE.\r\n *\r\n */","/*! VelocityJS.org (1.2.3). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */\r\n/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */\r\n/*! Note that this has been modified by Materialize to confirm that Velocity is not already being imported. */\r\njQuery.Velocity?console.log(\"Velocity is already loaded. You may be needlessly importing Velocity again; note that Materialize includes Velocity.\"):(!function(e){function t(e){var t=e.length,a=r.type(e);return\"function\"===a||r.isWindow(e)?!1:1===e.nodeType&&t?!0:\"array\"===a||0===t||\"number\"==typeof t&&t>0&&t-1 in e}if(!e.jQuery){var r=function(e,t){return new r.fn.init(e,t)};r.isWindow=function(e){return null!=e&&e==e.window},r.type=function(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?n[i.call(e)]||\"object\":typeof e},r.isArray=Array.isArray||function(e){return\"array\"===r.type(e)},r.isPlainObject=function(e){var t;if(!e||\"object\"!==r.type(e)||e.nodeType||r.isWindow(e))return!1;try{if(e.constructor&&!o.call(e,\"constructor\")&&!o.call(e.constructor.prototype,\"isPrototypeOf\"))return!1}catch(a){return!1}for(t in e);return void 0===t||o.call(e,t)},r.each=function(e,r,a){var n,o=0,i=e.length,s=t(e);if(a){if(s)for(;i>o&&(n=r.apply(e[o],a),n!==!1);o++);else for(o in e)if(n=r.apply(e[o],a),n===!1)break}else if(s)for(;i>o&&(n=r.call(e[o],o,e[o]),n!==!1);o++);else for(o in e)if(n=r.call(e[o],o,e[o]),n===!1)break;return e},r.data=function(e,t,n){if(void 0===n){var o=e[r.expando],i=o&&a[o];if(void 0===t)return i;if(i&&t in i)return i[t]}else if(void 0!==t){var o=e[r.expando]||(e[r.expando]=++r.uuid);return a[o]=a[o]||{},a[o][t]=n,n}},r.removeData=function(e,t){var n=e[r.expando],o=n&&a[n];o&&r.each(t,function(e,t){delete o[t]})},r.extend=function(){var e,t,a,n,o,i,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for(\"boolean\"==typeof s&&(c=s,s=arguments[l]||{},l++),\"object\"!=typeof s&&\"function\"!==r.type(s)&&(s={}),l===u&&(s=this,l--);u>l;l++)if(null!=(o=arguments[l]))for(n in o)e=s[n],a=o[n],s!==a&&(c&&a&&(r.isPlainObject(a)||(t=r.isArray(a)))?(t?(t=!1,i=e&&r.isArray(e)?e:[]):i=e&&r.isPlainObject(e)?e:{},s[n]=r.extend(c,i,a)):void 0!==a&&(s[n]=a));return s},r.queue=function(e,a,n){function o(e,r){var a=r||[];return null!=e&&(t(Object(e))?!function(e,t){for(var r=+t.length,a=0,n=e.length;r>a;)e[n++]=t[a++];if(r!==r)for(;void 0!==t[a];)e[n++]=t[a++];return e.length=n,e}(a,\"string\"==typeof e?[e]:e):[].push.call(a,e)),a}if(e){a=(a||\"fx\")+\"queue\";var i=r.data(e,a);return n?(!i||r.isArray(n)?i=r.data(e,a,o(n)):i.push(n),i):i||[]}},r.dequeue=function(e,t){r.each(e.nodeType?[e]:e,function(e,a){t=t||\"fx\";var n=r.queue(a,t),o=n.shift();\"inprogress\"===o&&(o=n.shift()),o&&(\"fx\"===t&&n.unshift(\"inprogress\"),o.call(a,function(){r.dequeue(a,t)}))})},r.fn=r.prototype={init:function(e){if(e.nodeType)return this[0]=e,this;throw new Error(\"Not a DOM node.\")},offset:function(){var t=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:t.top+(e.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:t.left+(e.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function e(){for(var e=this.offsetParent||document;e&&\"html\"===!e.nodeType.toLowerCase&&\"static\"===e.style.position;)e=e.offsetParent;return e||document}var t=this[0],e=e.apply(t),a=this.offset(),n=/^(?:body|html)$/i.test(e.nodeName)?{top:0,left:0}:r(e).offset();return a.top-=parseFloat(t.style.marginTop)||0,a.left-=parseFloat(t.style.marginLeft)||0,e.style&&(n.top+=parseFloat(e.style.borderTopWidth)||0,n.left+=parseFloat(e.style.borderLeftWidth)||0),{top:a.top-n.top,left:a.left-n.left}}};var a={};r.expando=\"velocity\"+(new Date).getTime(),r.uuid=0;for(var n={},o=n.hasOwnProperty,i=n.toString,s=\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"),l=0;ln;++n){var o=u(r,e,a);if(0===o)return r;var i=l(r,e,a)-t;r-=i/o}return r}function p(){for(var t=0;b>t;++t)w[t]=l(t*x,e,a)}function f(t,r,n){var o,i,s=0;do i=r+(n-r)/2,o=l(i,e,a)-t,o>0?n=i:r=i;while(Math.abs(o)>h&&++s=y?c(t,s):0==l?s:f(t,r,r+x)}function g(){V=!0,(e!=r||a!=n)&&p()}var m=4,y=.001,h=1e-7,v=10,b=11,x=1/(b-1),S=\"Float32Array\"in t;if(4!==arguments.length)return!1;for(var P=0;4>P;++P)if(\"number\"!=typeof arguments[P]||isNaN(arguments[P])||!isFinite(arguments[P]))return!1;e=Math.min(e,1),a=Math.min(a,1),e=Math.max(e,0),a=Math.max(a,0);var w=S?new Float32Array(b):new Array(b),V=!1,C=function(t){return V||g(),e===r&&a===n?t:0===t?0:1===t?1:l(d(t),r,n)};C.getControlPoints=function(){return[{x:e,y:r},{x:a,y:n}]};var T=\"generateBezier(\"+[e,r,a,n]+\")\";return C.toString=function(){return T},C}function u(e,t){var r=e;return m.isString(e)?b.Easings[e]||(r=!1):r=m.isArray(e)&&1===e.length?s.apply(null,e):m.isArray(e)&&2===e.length?x.apply(null,e.concat([t])):m.isArray(e)&&4===e.length?l.apply(null,e):!1,r===!1&&(r=b.Easings[b.defaults.easing]?b.defaults.easing:v),r}function c(e){if(e){var t=(new Date).getTime(),r=b.State.calls.length;r>1e4&&(b.State.calls=n(b.State.calls));for(var o=0;r>o;o++)if(b.State.calls[o]){var s=b.State.calls[o],l=s[0],u=s[2],d=s[3],g=!!d,y=null;d||(d=b.State.calls[o][3]=t-16);for(var h=Math.min((t-d)/u.duration,1),v=0,x=l.length;x>v;v++){var P=l[v],V=P.element;if(i(V)){var C=!1;if(u.display!==a&&null!==u.display&&\"none\"!==u.display){if(\"flex\"===u.display){var T=[\"-webkit-box\",\"-moz-box\",\"-ms-flexbox\",\"-webkit-flex\"];f.each(T,function(e,t){S.setPropertyValue(V,\"display\",t)})}S.setPropertyValue(V,\"display\",u.display)}u.visibility!==a&&\"hidden\"!==u.visibility&&S.setPropertyValue(V,\"visibility\",u.visibility);for(var k in P)if(\"element\"!==k){var A,F=P[k],j=m.isString(F.easing)?b.Easings[F.easing]:F.easing;if(1===h)A=F.endValue;else{var E=F.endValue-F.startValue;if(A=F.startValue+E*j(h,u,E),!g&&A===F.currentValue)continue}if(F.currentValue=A,\"tween\"===k)y=A;else{if(S.Hooks.registered[k]){var H=S.Hooks.getRoot(k),N=i(V).rootPropertyValueCache[H];N&&(F.rootPropertyValue=N)}var L=S.setPropertyValue(V,k,F.currentValue+(0===parseFloat(A)?\"\":F.unitType),F.rootPropertyValue,F.scrollData);S.Hooks.registered[k]&&(i(V).rootPropertyValueCache[H]=S.Normalizations.registered[H]?S.Normalizations.registered[H](\"extract\",null,L[1]):L[1]),\"transform\"===L[0]&&(C=!0)}}u.mobileHA&&i(V).transformCache.translate3d===a&&(i(V).transformCache.translate3d=\"(0px, 0px, 0px)\",C=!0),C&&S.flushTransformCache(V)}}u.display!==a&&\"none\"!==u.display&&(b.State.calls[o][2].display=!1),u.visibility!==a&&\"hidden\"!==u.visibility&&(b.State.calls[o][2].visibility=!1),u.progress&&u.progress.call(s[1],s[1],h,Math.max(0,d+u.duration-t),d,y),1===h&&p(o)}}b.State.isTicking&&w(c)}function p(e,t){if(!b.State.calls[e])return!1;for(var r=b.State.calls[e][0],n=b.State.calls[e][1],o=b.State.calls[e][2],s=b.State.calls[e][4],l=!1,u=0,c=r.length;c>u;u++){var p=r[u].element;if(t||o.loop||(\"none\"===o.display&&S.setPropertyValue(p,\"display\",o.display),\"hidden\"===o.visibility&&S.setPropertyValue(p,\"visibility\",o.visibility)),o.loop!==!0&&(f.queue(p)[1]===a||!/\\.velocityQueueEntryFlag/i.test(f.queue(p)[1]))&&i(p)){i(p).isAnimating=!1,i(p).rootPropertyValueCache={};var d=!1;f.each(S.Lists.transforms3D,function(e,t){var r=/^scale/.test(t)?1:0,n=i(p).transformCache[t];i(p).transformCache[t]!==a&&new RegExp(\"^\\\\(\"+r+\"[^.]\").test(n)&&(d=!0,delete i(p).transformCache[t])}),o.mobileHA&&(d=!0,delete i(p).transformCache.translate3d),d&&S.flushTransformCache(p),S.Values.removeClass(p,\"velocity-animating\")}if(!t&&o.complete&&!o.loop&&u===c-1)try{o.complete.call(n,n)}catch(g){setTimeout(function(){throw g},1)}s&&o.loop!==!0&&s(n),i(p)&&o.loop===!0&&!t&&(f.each(i(p).tweensContainer,function(e,t){/^rotate/.test(e)&&360===parseFloat(t.endValue)&&(t.endValue=0,t.startValue=360),/^backgroundPosition/.test(e)&&100===parseFloat(t.endValue)&&\"%\"===t.unitType&&(t.endValue=0,t.startValue=100)}),b(p,\"reverse\",{loop:!0,delay:o.delay})),o.queue!==!1&&f.dequeue(p,o.queue)}b.State.calls[e]=!1;for(var m=0,y=b.State.calls.length;y>m;m++)if(b.State.calls[m]!==!1){l=!0;break}l===!1&&(b.State.isTicking=!1,delete b.State.calls,b.State.calls=[])}var f,d=function(){if(r.documentMode)return r.documentMode;for(var e=7;e>4;e--){var t=r.createElement(\"div\");if(t.innerHTML=\"\",t.getElementsByTagName(\"span\").length)return t=null,e}return a}(),g=function(){var e=0;return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||function(t){var r,a=(new Date).getTime();return r=Math.max(0,16-(a-e)),e=a+r,setTimeout(function(){t(a+r)},r)}}(),m={isString:function(e){return\"string\"==typeof e},isArray:Array.isArray||function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},isFunction:function(e){return\"[object Function]\"===Object.prototype.toString.call(e)},isNode:function(e){return e&&e.nodeType},isNodeList:function(e){return\"object\"==typeof e&&/^\\[object (HTMLCollection|NodeList|Object)\\]$/.test(Object.prototype.toString.call(e))&&e.length!==a&&(0===e.length||\"object\"==typeof e[0]&&e[0].nodeType>0)},isWrapped:function(e){return e&&(e.jquery||t.Zepto&&t.Zepto.zepto.isZ(e))},isSVG:function(e){return t.SVGElement&&e instanceof t.SVGElement},isEmptyObject:function(e){for(var t in e)return!1;return!0}},y=!1;if(e.fn&&e.fn.jquery?(f=e,y=!0):f=t.Velocity.Utilities,8>=d&&!y)throw new Error(\"Velocity: IE8 and below require jQuery to be loaded before Velocity.\");if(7>=d)return void(jQuery.fn.velocity=jQuery.fn.animate);var h=400,v=\"swing\",b={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\\.3\\.[3-7]/i.test(navigator.userAgent),isChrome:t.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:r.createElement(\"div\"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:f,Redirects:{},Easings:{},Promise:t.Promise,defaults:{queue:\"\",duration:h,easing:v,begin:a,complete:a,progress:a,display:a,visibility:a,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(e){f.data(e,\"velocity\",{isSVG:m.isSVG(e),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};t.pageYOffset!==a?(b.State.scrollAnchor=t,b.State.scrollPropertyLeft=\"pageXOffset\",b.State.scrollPropertyTop=\"pageYOffset\"):(b.State.scrollAnchor=r.documentElement||r.body.parentNode||r.body,b.State.scrollPropertyLeft=\"scrollLeft\",b.State.scrollPropertyTop=\"scrollTop\");var x=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,r,a){var n={x:t.x+a.dx*r,v:t.v+a.dv*r,tension:t.tension,friction:t.friction};return{dx:n.v,dv:e(n)}}function r(r,a){var n={dx:r.v,dv:e(r)},o=t(r,.5*a,n),i=t(r,.5*a,o),s=t(r,a,i),l=1/6*(n.dx+2*(o.dx+i.dx)+s.dx),u=1/6*(n.dv+2*(o.dv+i.dv)+s.dv);return r.x=r.x+l*a,r.v=r.v+u*a,r}return function a(e,t,n){var o,i,s,l={x:-1,v:0,tension:null,friction:null},u=[0],c=0,p=1e-4,f=.016;for(e=parseFloat(e)||500,t=parseFloat(t)||20,n=n||null,l.tension=e,l.friction=t,o=null!==n,o?(c=a(e,t),i=c/n*f):i=f;s=r(s||l,i),u.push(1+s.x),c+=16,Math.abs(s.x)>p&&Math.abs(s.v)>p;);return o?function(e){return u[e*(u.length-1)|0]}:c}}();b.Easings={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},spring:function(e){return 1-Math.cos(4.5*e*Math.PI)*Math.exp(6*-e)}},f.each([[\"ease\",[.25,.1,.25,1]],[\"ease-in\",[.42,0,1,1]],[\"ease-out\",[0,0,.58,1]],[\"ease-in-out\",[.42,0,.58,1]],[\"easeInSine\",[.47,0,.745,.715]],[\"easeOutSine\",[.39,.575,.565,1]],[\"easeInOutSine\",[.445,.05,.55,.95]],[\"easeInQuad\",[.55,.085,.68,.53]],[\"easeOutQuad\",[.25,.46,.45,.94]],[\"easeInOutQuad\",[.455,.03,.515,.955]],[\"easeInCubic\",[.55,.055,.675,.19]],[\"easeOutCubic\",[.215,.61,.355,1]],[\"easeInOutCubic\",[.645,.045,.355,1]],[\"easeInQuart\",[.895,.03,.685,.22]],[\"easeOutQuart\",[.165,.84,.44,1]],[\"easeInOutQuart\",[.77,0,.175,1]],[\"easeInQuint\",[.755,.05,.855,.06]],[\"easeOutQuint\",[.23,1,.32,1]],[\"easeInOutQuint\",[.86,0,.07,1]],[\"easeInExpo\",[.95,.05,.795,.035]],[\"easeOutExpo\",[.19,1,.22,1]],[\"easeInOutExpo\",[1,0,0,1]],[\"easeInCirc\",[.6,.04,.98,.335]],[\"easeOutCirc\",[.075,.82,.165,1]],[\"easeInOutCirc\",[.785,.135,.15,.86]]],function(e,t){b.Easings[t[0]]=l.apply(null,t[1])});var S=b.CSS={RegEx:{isHex:/^#([A-f\\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\\((.*)\\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\\(.+\\))|(([A-z0-9#-.]+?)(?=\\s|$))/gi},Lists:{colors:[\"fill\",\"stroke\",\"stopColor\",\"color\",\"backgroundColor\",\"borderColor\",\"borderTopColor\",\"borderRightColor\",\"borderBottomColor\",\"borderLeftColor\",\"outlineColor\"],transformsBase:[\"translateX\",\"translateY\",\"scale\",\"scaleX\",\"scaleY\",\"skewX\",\"skewY\",\"rotateZ\"],transforms3D:[\"transformPerspective\",\"translateZ\",\"scaleZ\",\"rotateX\",\"rotateY\"]},Hooks:{templates:{textShadow:[\"Color X Y Blur\",\"black 0px 0px 0px\"],boxShadow:[\"Color X Y Blur Spread\",\"black 0px 0px 0px 0px\"],clip:[\"Top Right Bottom Left\",\"0px 0px 0px 0px\"],backgroundPosition:[\"X Y\",\"0% 0%\"],transformOrigin:[\"X Y Z\",\"50% 50% 0px\"],perspectiveOrigin:[\"X Y\",\"50% 50%\"]},registered:{},register:function(){for(var e=0;e=d)switch(e){case\"name\":return\"filter\";case\"extract\":var a=r.toString().match(/alpha\\(opacity=(.*)\\)/i);return r=a?a[1]/100:1;case\"inject\":return t.style.zoom=1,parseFloat(r)>=1?\"\":\"alpha(opacity=\"+parseInt(100*parseFloat(r),10)+\")\"}else switch(e){case\"name\":return\"opacity\";case\"extract\":return r;case\"inject\":return r}}},register:function(){9>=d||b.State.isGingerbread||(S.Lists.transformsBase=S.Lists.transformsBase.concat(S.Lists.transforms3D));for(var e=0;en&&(n=1),o=!/(\\d)$/i.test(n);break;case\"skew\":o=!/(deg|\\d)$/i.test(n);break;case\"rotate\":o=!/(deg|\\d)$/i.test(n)}return o||(i(r).transformCache[t]=\"(\"+n+\")\"),i(r).transformCache[t]}}}();for(var e=0;e=d||3!==o.split(\" \").length||(o+=\" 1\"),o;case\"inject\":return 8>=d?4===n.split(\" \").length&&(n=n.split(/\\s+/).slice(0,3).join(\" \")):3===n.split(\" \").length&&(n+=\" 1\"),(8>=d?\"rgb\":\"rgba\")+\"(\"+n.replace(/\\s+/g,\",\").replace(/\\.(\\d)+(?=,)/g,\"\")+\")\"}}}()}},Names:{camelCase:function(e){return e.replace(/-(\\w)/g,function(e,t){return t.toUpperCase()})},SVGAttribute:function(e){var t=\"width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2\";return(d||b.State.isAndroid&&!b.State.isChrome)&&(t+=\"|transform\"),new RegExp(\"^(\"+t+\")$\",\"i\").test(e)},prefixCheck:function(e){if(b.State.prefixMatches[e])return[b.State.prefixMatches[e],!0];for(var t=[\"\",\"Webkit\",\"Moz\",\"ms\",\"O\"],r=0,a=t.length;a>r;r++){var n;if(n=0===r?e:t[r]+e.replace(/^\\w/,function(e){return e.toUpperCase()}),m.isString(b.State.prefixElement.style[n]))return b.State.prefixMatches[e]=n,[n,!0]}return[e,!1]}},Values:{hexToRgb:function(e){var t,r=/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,a=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i;return e=e.replace(r,function(e,t,r,a){return t+t+r+r+a+a}),t=a.exec(e),t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:[0,0,0]},isCSSNullValue:function(e){return 0==e||/^(none|auto|transparent|(rgba\\(0, ?0, ?0, ?0\\)))$/i.test(e)},getUnitType:function(e){return/^(rotate|skew)/i.test(e)?\"deg\":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(e)?\"\":\"px\"},getDisplayType:function(e){var t=e&&e.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t)?\"inline\":/^(li)$/i.test(t)?\"list-item\":/^(tr)$/i.test(t)?\"table-row\":/^(table)$/i.test(t)?\"table\":/^(tbody)$/i.test(t)?\"table-row-group\":\"block\"},addClass:function(e,t){e.classList?e.classList.add(t):e.className+=(e.className.length?\" \":\"\")+t},removeClass:function(e,t){e.classList?e.classList.remove(t):e.className=e.className.toString().replace(new RegExp(\"(^|\\\\s)\"+t.split(\" \").join(\"|\")+\"(\\\\s|$)\",\"gi\"),\" \")}},getPropertyValue:function(e,r,n,o){function s(e,r){function n(){u&&S.setPropertyValue(e,\"display\",\"none\")}var l=0;if(8>=d)l=f.css(e,r);else{var u=!1;if(/^(width|height)$/.test(r)&&0===S.getPropertyValue(e,\"display\")&&(u=!0,S.setPropertyValue(e,\"display\",S.Values.getDisplayType(e))),!o){if(\"height\"===r&&\"border-box\"!==S.getPropertyValue(e,\"boxSizing\").toString().toLowerCase()){var c=e.offsetHeight-(parseFloat(S.getPropertyValue(e,\"borderTopWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"borderBottomWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingTop\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingBottom\"))||0);return n(),c}if(\"width\"===r&&\"border-box\"!==S.getPropertyValue(e,\"boxSizing\").toString().toLowerCase()){var p=e.offsetWidth-(parseFloat(S.getPropertyValue(e,\"borderLeftWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"borderRightWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingLeft\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingRight\"))||0);return n(),p}}var g;g=i(e)===a?t.getComputedStyle(e,null):i(e).computedStyle?i(e).computedStyle:i(e).computedStyle=t.getComputedStyle(e,null),\"borderColor\"===r&&(r=\"borderTopColor\"),l=9===d&&\"filter\"===r?g.getPropertyValue(r):g[r],(\"\"===l||null===l)&&(l=e.style[r]),n()}if(\"auto\"===l&&/^(top|right|bottom|left)$/i.test(r)){var m=s(e,\"position\");(\"fixed\"===m||\"absolute\"===m&&/top|left/i.test(r))&&(l=f(e).position()[r]+\"px\")}return l}var l;if(S.Hooks.registered[r]){var u=r,c=S.Hooks.getRoot(u);n===a&&(n=S.getPropertyValue(e,S.Names.prefixCheck(c)[0])),S.Normalizations.registered[c]&&(n=S.Normalizations.registered[c](\"extract\",e,n)),l=S.Hooks.extractValue(u,n)}else if(S.Normalizations.registered[r]){var p,g;p=S.Normalizations.registered[r](\"name\",e),\"transform\"!==p&&(g=s(e,S.Names.prefixCheck(p)[0]),S.Values.isCSSNullValue(g)&&S.Hooks.templates[r]&&(g=S.Hooks.templates[r][1])),l=S.Normalizations.registered[r](\"extract\",e,g)}if(!/^[\\d-]/.test(l))if(i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r))if(/^(height|width)$/i.test(r))try{l=e.getBBox()[r]}catch(m){l=0}else l=e.getAttribute(r);else l=s(e,S.Names.prefixCheck(r)[0]);return S.Values.isCSSNullValue(l)&&(l=0),b.debug>=2&&console.log(\"Get \"+r+\": \"+l),l},setPropertyValue:function(e,r,a,n,o){var s=r;if(\"scroll\"===r)o.container?o.container[\"scroll\"+o.direction]=a:\"Left\"===o.direction?t.scrollTo(a,o.alternateValue):t.scrollTo(o.alternateValue,a);else if(S.Normalizations.registered[r]&&\"transform\"===S.Normalizations.registered[r](\"name\",e))S.Normalizations.registered[r](\"inject\",e,a),s=\"transform\",a=i(e).transformCache[r];else{if(S.Hooks.registered[r]){var l=r,u=S.Hooks.getRoot(r);n=n||S.getPropertyValue(e,u),a=S.Hooks.injectValue(l,a,n),r=u}if(S.Normalizations.registered[r]&&(a=S.Normalizations.registered[r](\"inject\",e,a),r=S.Normalizations.registered[r](\"name\",e)),s=S.Names.prefixCheck(r)[0],8>=d)try{e.style[s]=a}catch(c){b.debug&&console.log(\"Browser does not support [\"+a+\"] for [\"+s+\"]\")}else i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r)?e.setAttribute(r,a):e.style[s]=a;b.debug>=2&&console.log(\"Set \"+r+\" (\"+s+\"): \"+a)}return[s,a]},flushTransformCache:function(e){function t(t){return parseFloat(S.getPropertyValue(e,t))}var r=\"\";if((d||b.State.isAndroid&&!b.State.isChrome)&&i(e).isSVG){var a={translate:[t(\"translateX\"),t(\"translateY\")],skewX:[t(\"skewX\")],skewY:[t(\"skewY\")],scale:1!==t(\"scale\")?[t(\"scale\"),t(\"scale\")]:[t(\"scaleX\"),t(\"scaleY\")],rotate:[t(\"rotateZ\"),0,0]};f.each(i(e).transformCache,function(e){/^translate/i.test(e)?e=\"translate\":/^scale/i.test(e)?e=\"scale\":/^rotate/i.test(e)&&(e=\"rotate\"),a[e]&&(r+=e+\"(\"+a[e].join(\" \")+\") \",delete a[e])})}else{var n,o;f.each(i(e).transformCache,function(t){return n=i(e).transformCache[t],\"transformPerspective\"===t?(o=n,!0):(9===d&&\"rotateZ\"===t&&(t=\"rotate\"),void(r+=t+n+\" \"))}),o&&(r=\"perspective\"+o+\" \"+r)}S.setPropertyValue(e,\"transform\",r)}};S.Hooks.register(),S.Normalizations.register(),b.hook=function(e,t,r){var n=a;return e=o(e),f.each(e,function(e,o){if(i(o)===a&&b.init(o),r===a)n===a&&(n=b.CSS.getPropertyValue(o,t));else{var s=b.CSS.setPropertyValue(o,t,r);\"transform\"===s[0]&&b.CSS.flushTransformCache(o),n=s}}),n};var P=function(){function e(){return s?k.promise||null:l}function n(){function e(e){function p(e,t){var r=a,n=a,i=a;return m.isArray(e)?(r=e[0],!m.isArray(e[1])&&/^[\\d-]/.test(e[1])||m.isFunction(e[1])||S.RegEx.isHex.test(e[1])?i=e[1]:(m.isString(e[1])&&!S.RegEx.isHex.test(e[1])||m.isArray(e[1]))&&(n=t?e[1]:u(e[1],s.duration),e[2]!==a&&(i=e[2]))):r=e,t||(n=n||s.easing),m.isFunction(r)&&(r=r.call(o,V,w)),m.isFunction(i)&&(i=i.call(o,V,w)),[r||0,n,i]}function d(e,t){var r,a;return a=(t||\"0\").toString().toLowerCase().replace(/[%A-z]+$/,function(e){return r=e,\"\"}),r||(r=S.Values.getUnitType(e)),[a,r]}function h(){var e={myParent:o.parentNode||r.body,position:S.getPropertyValue(o,\"position\"),fontSize:S.getPropertyValue(o,\"fontSize\")},a=e.position===L.lastPosition&&e.myParent===L.lastParent,n=e.fontSize===L.lastFontSize;L.lastParent=e.myParent,L.lastPosition=e.position,L.lastFontSize=e.fontSize;var s=100,l={};if(n&&a)l.emToPx=L.lastEmToPx,l.percentToPxWidth=L.lastPercentToPxWidth,l.percentToPxHeight=L.lastPercentToPxHeight;else{var u=i(o).isSVG?r.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\"):r.createElement(\"div\");b.init(u),e.myParent.appendChild(u),f.each([\"overflow\",\"overflowX\",\"overflowY\"],function(e,t){b.CSS.setPropertyValue(u,t,\"hidden\")}),b.CSS.setPropertyValue(u,\"position\",e.position),b.CSS.setPropertyValue(u,\"fontSize\",e.fontSize),b.CSS.setPropertyValue(u,\"boxSizing\",\"content-box\"),f.each([\"minWidth\",\"maxWidth\",\"width\",\"minHeight\",\"maxHeight\",\"height\"],function(e,t){b.CSS.setPropertyValue(u,t,s+\"%\")}),b.CSS.setPropertyValue(u,\"paddingLeft\",s+\"em\"),l.percentToPxWidth=L.lastPercentToPxWidth=(parseFloat(S.getPropertyValue(u,\"width\",null,!0))||1)/s,l.percentToPxHeight=L.lastPercentToPxHeight=(parseFloat(S.getPropertyValue(u,\"height\",null,!0))||1)/s,l.emToPx=L.lastEmToPx=(parseFloat(S.getPropertyValue(u,\"paddingLeft\"))||1)/s,e.myParent.removeChild(u)}return null===L.remToPx&&(L.remToPx=parseFloat(S.getPropertyValue(r.body,\"fontSize\"))||16),null===L.vwToPx&&(L.vwToPx=parseFloat(t.innerWidth)/100,L.vhToPx=parseFloat(t.innerHeight)/100),l.remToPx=L.remToPx,l.vwToPx=L.vwToPx,l.vhToPx=L.vhToPx,b.debug>=1&&console.log(\"Unit ratios: \"+JSON.stringify(l),o),l}if(s.begin&&0===V)try{s.begin.call(g,g)}catch(x){setTimeout(function(){throw x},1)}if(\"scroll\"===A){var P,C,T,F=/^x$/i.test(s.axis)?\"Left\":\"Top\",j=parseFloat(s.offset)||0;s.container?m.isWrapped(s.container)||m.isNode(s.container)?(s.container=s.container[0]||s.container,P=s.container[\"scroll\"+F],T=P+f(o).position()[F.toLowerCase()]+j):s.container=null:(P=b.State.scrollAnchor[b.State[\"scrollProperty\"+F]],C=b.State.scrollAnchor[b.State[\"scrollProperty\"+(\"Left\"===F?\"Top\":\"Left\")]],T=f(o).offset()[F.toLowerCase()]+j),l={scroll:{rootPropertyValue:!1,startValue:P,currentValue:P,endValue:T,unitType:\"\",easing:s.easing,scrollData:{container:s.container,direction:F,alternateValue:C}},element:o},b.debug&&console.log(\"tweensContainer (scroll): \",l.scroll,o)}else if(\"reverse\"===A){if(!i(o).tweensContainer)return void f.dequeue(o,s.queue);\"none\"===i(o).opts.display&&(i(o).opts.display=\"auto\"),\"hidden\"===i(o).opts.visibility&&(i(o).opts.visibility=\"visible\"),i(o).opts.loop=!1,i(o).opts.begin=null,i(o).opts.complete=null,v.easing||delete s.easing,v.duration||delete s.duration,s=f.extend({},i(o).opts,s);var E=f.extend(!0,{},i(o).tweensContainer);for(var H in E)if(\"element\"!==H){var N=E[H].startValue;E[H].startValue=E[H].currentValue=E[H].endValue,E[H].endValue=N,m.isEmptyObject(v)||(E[H].easing=s.easing),b.debug&&console.log(\"reverse tweensContainer (\"+H+\"): \"+JSON.stringify(E[H]),o)}l=E}else if(\"start\"===A){var E;i(o).tweensContainer&&i(o).isAnimating===!0&&(E=i(o).tweensContainer),f.each(y,function(e,t){if(RegExp(\"^\"+S.Lists.colors.join(\"$|^\")+\"$\").test(e)){var r=p(t,!0),n=r[0],o=r[1],i=r[2];if(S.RegEx.isHex.test(n)){for(var s=[\"Red\",\"Green\",\"Blue\"],l=S.Values.hexToRgb(n),u=i?S.Values.hexToRgb(i):a,c=0;cO;O++){var q={delay:j.delay,progress:j.progress};O===z-1&&(q.display=j.display,q.visibility=j.visibility,q.complete=j.complete),P(g,\"reverse\",q)}return e()}};b=f.extend(P,b),b.animate=P;var w=t.requestAnimationFrame||g;return b.State.isMobile||r.hidden===a||r.addEventListener(\"visibilitychange\",function(){r.hidden?(w=function(e){return setTimeout(function(){e(!0)},16)},c()):w=t.requestAnimationFrame||g}),e.Velocity=b,e!==t&&(e.fn.velocity=P,e.fn.velocity.defaults=b.defaults),f.each([\"Down\",\"Up\"],function(e,t){b.Redirects[\"slide\"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u=l.begin,c=l.complete,p={height:\"\",marginTop:\"\",marginBottom:\"\",paddingTop:\"\",paddingBottom:\"\"},d={};l.display===a&&(l.display=\"Down\"===t?\"inline\"===b.CSS.Values.getDisplayType(e)?\"inline-block\":\"block\":\"none\"),l.begin=function(){u&&u.call(i,i);for(var r in p){d[r]=e.style[r];var a=b.CSS.getPropertyValue(e,r);p[r]=\"Down\"===t?[a,0]:[0,a]}d.overflow=e.style.overflow,e.style.overflow=\"hidden\"},l.complete=function(){for(var t in d)e.style[t]=d[t];c&&c.call(i,i),s&&s.resolver(i)},b(e,p,l)}}),f.each([\"In\",\"Out\"],function(e,t){b.Redirects[\"fade\"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u={opacity:\"In\"===t?1:0},c=l.complete;l.complete=n!==o-1?l.begin=null:function(){c&&c.call(i,i),s&&s.resolver(i)},l.display===a&&(l.display=\"In\"===t?\"auto\":\"none\"),b(this,u,l)}}),b}(window.jQuery||window.Zepto||window,window,document)}));\r\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anObject = require('../internals/an-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar nativeArrayBufferSlice = ArrayBuffer.prototype.slice;\n\nvar INCORRECT_SLICE = fails(function () {\n return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n slice: function slice(start, end) {\n if (nativeArrayBufferSlice !== undefined && end === undefined) {\n return nativeArrayBufferSlice.call(anObject(this), start); // FF fix\n }\n var length = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n var viewSource = new DataView(this);\n var viewTarget = new DataView(result);\n var index = 0;\n while (first < fin) {\n viewTarget.setUint8(index++, viewSource.getUint8(first++));\n } return result;\n }\n});\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var typedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float32Array` constructor\n// https://tc39.github.io/ecma262/#sec-typedarray-objects\ntypedArrayConstructor('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-arrays-constructors-requires-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n return isTypedArrayIndex(target, key = toPrimitive(key, true))\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n && isObject(descriptor)\n && has(descriptor, 'value')\n && !has(descriptor, 'get')\n && !has(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!has(descriptor, 'writable') || descriptor.writable)\n && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, BYTES, wrapper, CLAMPED) {\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return typedArrayFrom.call(TypedArrayConstructor, data);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","/* eslint-disable no-new */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari 11 bug\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var toInteger = require('../internals/to-integer');\n\nmodule.exports = function (it) {\n var result = toInteger(it);\n if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","var toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar bind = require('../internals/bind-context');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator, next;\n if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n O = [];\n while (!(step = next.call(iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2], 2);\n }\n length = toLength(O.length);\n result = new (aTypedArrayConstructor(this))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $copyWithin = require('../internals/array-copy-within');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.copywithin\nArrayBufferViewCore.exportProto('copyWithin', function copyWithin(target, start /* , end */) {\n return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.every\nArrayBufferViewCore.exportProto('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.fill\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('fill', function fill(value /* , start, end */) {\n return $fill.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.filter\nArrayBufferViewCore.exportProto('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.find\nArrayBufferViewCore.exportProto('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.findindex\nArrayBufferViewCore.exportProto('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.foreach\nArrayBufferViewCore.exportProto('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.includes\nArrayBufferViewCore.exportProto('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.indexof\nArrayBufferViewCore.exportProto('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = ArrayIterators.values;\nvar arrayKeys = ArrayIterators.keys;\nvar arrayEntries = ArrayIterators.entries;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportProto = ArrayBufferViewCore.exportProto;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\nvar typedArrayValues = function values() {\n return arrayValues.call(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.entries\nexportProto('entries', function entries() {\n return arrayEntries.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.keys\nexportProto('keys', function keys() {\n return arrayKeys.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.values\nexportProto('values', typedArrayValues, !CORRECT_ITER_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportProto(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $join = [].join;\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.join\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('join', function join(separator) {\n return $join.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.lastindexof\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n return $lastIndexOf.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.map\nArrayBufferViewCore.exportProto('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length);\n });\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduce\nArrayBufferViewCore.exportProto('reduce', function reduce(callbackfn /* , initialValue */) {\n return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduceright\nArrayBufferViewCore.exportProto('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reverse\nArrayBufferViewCore.exportProto('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toOffset = require('../internals/to-offset');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.set\nArrayBufferViewCore.exportProto('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice\nArrayBufferViewCore.exportProto('slice', function slice(start, end) {\n var list = $slice.call(aTypedArray(this), start, end);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.some\nArrayBufferViewCore.exportProto('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $sort = [].sort;\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.sort\nArrayBufferViewCore.exportProto('sort', function sort(comparefn) {\n return $sort.call(aTypedArray(this), comparefn);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.subarray\nArrayBufferViewCore.exportProto('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O.constructor))(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $toLocaleString = [].toLocaleString;\nvar $slice = [].slice;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tolocalestring\nArrayBufferViewCore.exportProto('toLocaleString', function toLocaleString() {\n return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n}, FORCED);\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype;\nvar arrayToString = [].toString;\nvar arrayJoin = [].join;\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return arrayJoin.call(this);\n };\n}\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tostring\nArrayBufferViewCore.exportProto('toString', arrayToString, (Uint8ArrayPrototype || {}).toString != arrayToString);\n","/*!\r\n * Waves v0.7.6\r\n * http://fian.my.id/Waves\r\n *\r\n * Copyright 2014-2018 Alfiana E. Sibuea and other contributors\r\n * Released under the MIT license\r\n * https://github.com/fians/Waves/blob/master/LICENSE\r\n */\r\n\r\n\r\n(function (window, factory) {\r\n 'use strict';\r\n\r\n // AMD. Register as an anonymous module. Wrap in function so we have access\r\n // to root via `this`.\r\n if (typeof define === 'function' && define.amd) {\r\n define([], function () {\r\n window.Waves = factory.call(window);\r\n return window.Waves;\r\n });\r\n }\r\n\r\n // Node. Does not work with strict CommonJS, but only CommonJS-like\r\n // environments that support module.exports, like Node.\r\n else if (typeof exports === 'object') {\r\n module.exports = factory.call(window);\r\n }\r\n\r\n // Browser globals.\r\n else {\r\n window.Waves = factory.call(window);\r\n }\r\n})(typeof window === 'object' ? window : this, function () {\r\n 'use strict';\r\n\r\n var Waves = Waves || {};\r\n var $$ = document.querySelectorAll.bind(document);\r\n var toString = Object.prototype.toString;\r\n var isTouchAvailable = 'ontouchstart' in window;\r\n\r\n\r\n // Find exact position of element\r\n function isWindow(obj) {\r\n return obj !== null && obj === obj.window;\r\n }\r\n\r\n function getWindow(elem) {\r\n return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;\r\n }\r\n\r\n function isObject(value) {\r\n var type = typeof value;\r\n return type === 'function' || type === 'object' && !!value;\r\n }\r\n\r\n function isDOMNode(obj) {\r\n return isObject(obj) && obj.nodeType > 0;\r\n }\r\n\r\n function getWavesElements(nodes) {\r\n var stringRepr = toString.call(nodes);\r\n\r\n if (stringRepr === '[object String]') {\r\n return $$(nodes);\r\n } else if (isObject(nodes) && /^\\[object (Array|HTMLCollection|NodeList|Object)\\]$/.test(stringRepr) && nodes.hasOwnProperty('length')) {\r\n return nodes;\r\n } else if (isDOMNode(nodes)) {\r\n return [nodes];\r\n }\r\n\r\n return [];\r\n }\r\n\r\n function offset(elem) {\r\n var docElem, win,\r\n box = {\r\n top: 0,\r\n left: 0\r\n },\r\n doc = elem && elem.ownerDocument;\r\n\r\n docElem = doc.documentElement;\r\n\r\n if (typeof elem.getBoundingClientRect !== typeof undefined) {\r\n box = elem.getBoundingClientRect();\r\n }\r\n win = getWindow(doc);\r\n return {\r\n top: box.top + win.pageYOffset - docElem.clientTop,\r\n left: box.left + win.pageXOffset - docElem.clientLeft\r\n };\r\n }\r\n\r\n function convertStyle(styleObj) {\r\n var style = '';\r\n\r\n for (var prop in styleObj) {\r\n if (styleObj.hasOwnProperty(prop)) {\r\n style += (prop + ':' + styleObj[prop] + ';');\r\n }\r\n }\r\n\r\n return style;\r\n }\r\n\r\n var Effect = {\r\n\r\n // Effect duration\r\n duration: 750,\r\n\r\n // Effect delay (check for scroll before showing effect)\r\n delay: 200,\r\n\r\n show: function (e, element, velocity) {\r\n\r\n // Disable right click\r\n if (e.button === 2) {\r\n return false;\r\n }\r\n\r\n element = element || this;\r\n\r\n // Create ripple\r\n var ripple = document.createElement('div');\r\n ripple.className = 'waves-ripple waves-rippling';\r\n element.appendChild(ripple);\r\n\r\n // Get click coordinate and element width\r\n var pos = offset(element);\r\n var relativeY = 0;\r\n var relativeX = 0;\r\n // Support for touch devices\r\n if ('touches' in e && e.touches.length) {\r\n relativeY = (e.touches[0].pageY - pos.top);\r\n relativeX = (e.touches[0].pageX - pos.left);\r\n }\r\n //Normal case\r\n else {\r\n relativeY = (e.pageY - pos.top);\r\n relativeX = (e.pageX - pos.left);\r\n }\r\n // Support for synthetic events\r\n relativeX = relativeX >= 0 ? relativeX : 0;\r\n relativeY = relativeY >= 0 ? relativeY : 0;\r\n\r\n var scale = 'scale(' + ((element.clientWidth / 100) * 3) + ')';\r\n var translate = 'translate(0,0)';\r\n\r\n if (velocity) {\r\n translate = 'translate(' + (velocity.x) + 'px, ' + (velocity.y) + 'px)';\r\n }\r\n\r\n // Attach data to element\r\n ripple.setAttribute('data-hold', Date.now());\r\n ripple.setAttribute('data-x', relativeX);\r\n ripple.setAttribute('data-y', relativeY);\r\n ripple.setAttribute('data-scale', scale);\r\n ripple.setAttribute('data-translate', translate);\r\n\r\n // Set ripple position\r\n var rippleStyle = {\r\n top: relativeY + 'px',\r\n left: relativeX + 'px'\r\n };\r\n\r\n ripple.classList.add('waves-notransition');\r\n ripple.setAttribute('style', convertStyle(rippleStyle));\r\n ripple.classList.remove('waves-notransition');\r\n\r\n // Scale the ripple\r\n rippleStyle['-webkit-transform'] = scale + ' ' + translate;\r\n rippleStyle['-moz-transform'] = scale + ' ' + translate;\r\n rippleStyle['-ms-transform'] = scale + ' ' + translate;\r\n rippleStyle['-o-transform'] = scale + ' ' + translate;\r\n rippleStyle.transform = scale + ' ' + translate;\r\n rippleStyle.opacity = '1';\r\n\r\n var duration = e.type === 'mousemove' ? 2500 : Effect.duration;\r\n rippleStyle['-webkit-transition-duration'] = duration + 'ms';\r\n rippleStyle['-moz-transition-duration'] = duration + 'ms';\r\n rippleStyle['-o-transition-duration'] = duration + 'ms';\r\n rippleStyle['transition-duration'] = duration + 'ms';\r\n\r\n ripple.setAttribute('style', convertStyle(rippleStyle));\r\n },\r\n\r\n hide: function (e, element) {\r\n element = element || this;\r\n\r\n var ripples = element.getElementsByClassName('waves-rippling');\r\n\r\n for (var i = 0, len = ripples.length; i < len; i++) {\r\n removeRipple(e, element, ripples[i]);\r\n }\r\n\r\n if (isTouchAvailable) {\r\n element.removeEventListener('touchend', Effect.hide);\r\n element.removeEventListener('touchcancel', Effect.hide);\r\n }\r\n\r\n element.removeEventListener('mouseup', Effect.hide);\r\n element.removeEventListener('mouseleave', Effect.hide);\r\n }\r\n };\r\n\r\n /**\r\n * Collection of wrapper for HTML element that only have single tag\r\n * like and \r\n */\r\n var TagWrapper = {\r\n\r\n // Wrap tag so it can perform the effect\r\n input: function (element) {\r\n\r\n var parent = element.parentNode;\r\n\r\n // If input already have parent just pass through\r\n if (parent.tagName.toLowerCase() === 'span' && parent.classList.contains('waves-effect')) {\r\n return;\r\n }\r\n\r\n // Put element class and style to the specified parent\r\n var wrapper = document.createElement('span');\r\n wrapper.className = 'waves-input-wrapper';\r\n // element.className = 'waves-button-input';\r\n\r\n // Put element as child\r\n parent.replaceChild(wrapper, element);\r\n wrapper.appendChild(element);\r\n\r\n },\r\n\r\n // Wrap tag so it can perform the effect\r\n img: function (element) {\r\n\r\n var parent = element.parentNode;\r\n\r\n // If input already have parent just pass through\r\n if (parent.tagName.toLowerCase() === 'i' && parent.classList.contains('waves-effect')) {\r\n return;\r\n }\r\n\r\n // Put element as child\r\n var wrapper = document.createElement('i');\r\n parent.replaceChild(wrapper, element);\r\n wrapper.appendChild(element);\r\n\r\n }\r\n };\r\n\r\n /**\r\n * Hide the effect and remove the ripple. Must be\r\n * a separate function to pass the JSLint...\r\n */\r\n function removeRipple(e, el, ripple) {\r\n\r\n // Check if the ripple still exist\r\n if (!ripple) {\r\n return;\r\n }\r\n\r\n ripple.classList.remove('waves-rippling');\r\n\r\n var relativeX = ripple.getAttribute('data-x');\r\n var relativeY = ripple.getAttribute('data-y');\r\n var scale = ripple.getAttribute('data-scale');\r\n var translate = ripple.getAttribute('data-translate');\r\n\r\n // Get delay beetween mousedown and mouse leave\r\n var diff = Date.now() - Number(ripple.getAttribute('data-hold'));\r\n var delay = 350 - diff;\r\n\r\n if (delay < 0) {\r\n delay = 0;\r\n }\r\n\r\n if (e.type === 'mousemove') {\r\n delay = 150;\r\n }\r\n\r\n // Fade out ripple after delay\r\n var duration = e.type === 'mousemove' ? 2500 : Effect.duration;\r\n\r\n setTimeout(function () {\r\n\r\n var style = {\r\n top: relativeY + 'px',\r\n left: relativeX + 'px',\r\n opacity: '0',\r\n\r\n // Duration\r\n '-webkit-transition-duration': duration + 'ms',\r\n '-moz-transition-duration': duration + 'ms',\r\n '-o-transition-duration': duration + 'ms',\r\n 'transition-duration': duration + 'ms',\r\n '-webkit-transform': scale + ' ' + translate,\r\n '-moz-transform': scale + ' ' + translate,\r\n '-ms-transform': scale + ' ' + translate,\r\n '-o-transform': scale + ' ' + translate,\r\n 'transform': scale + ' ' + translate\r\n };\r\n\r\n ripple.setAttribute('style', convertStyle(style));\r\n\r\n setTimeout(function () {\r\n try {\r\n el.removeChild(ripple);\r\n } catch (e) {\r\n return false;\r\n }\r\n }, duration);\r\n\r\n }, delay);\r\n }\r\n\r\n\r\n /**\r\n * Disable mousedown event for 500ms during and after touch\r\n */\r\n var TouchHandler = {\r\n\r\n /* uses an integer rather than bool so there's no issues with\r\n * needing to clear timeouts if another touch event occurred\r\n * within the 500ms. Cannot mouseup between touchstart and\r\n * touchend, nor in the 500ms after touchend. */\r\n touches: 0,\r\n\r\n allowEvent: function (e) {\r\n\r\n var allow = true;\r\n\r\n if (/^(mousedown|mousemove)$/.test(e.type) && TouchHandler.touches) {\r\n allow = false;\r\n }\r\n\r\n return allow;\r\n },\r\n registerEvent: function (e) {\r\n var eType = e.type;\r\n\r\n if (eType === 'touchstart') {\r\n\r\n TouchHandler.touches += 1; // push\r\n\r\n } else if (/^(touchend|touchcancel)$/.test(eType)) {\r\n\r\n setTimeout(function () {\r\n if (TouchHandler.touches) {\r\n TouchHandler.touches -= 1; // pop after 500ms\r\n }\r\n }, 500);\r\n\r\n }\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Delegated click handler for .waves-effect element.\r\n * returns null when .waves-effect element not in \"click tree\"\r\n */\r\n function getWavesEffectElement(e) {\r\n\r\n if (TouchHandler.allowEvent(e) === false) {\r\n return null;\r\n }\r\n\r\n var element = null;\r\n var target = e.target || e.srcElement;\r\n\r\n while (target.parentElement) {\r\n if ((!(target instanceof SVGElement)) && target.classList.contains('waves-effect')) {\r\n element = target;\r\n break;\r\n }\r\n target = target.parentElement;\r\n }\r\n\r\n return element;\r\n }\r\n\r\n /**\r\n * Bubble the click and show effect if .waves-effect elem was found\r\n */\r\n function showEffect(e) {\r\n\r\n // Disable effect if element has \"disabled\" property on it\r\n // In some cases, the event is not triggered by the current element\r\n // if (e.target.getAttribute('disabled') !== null) {\r\n // return;\r\n // }\r\n\r\n var element = getWavesEffectElement(e);\r\n\r\n if (element !== null) {\r\n\r\n // Make it sure the element has either disabled property, disabled attribute or 'disabled' class\r\n if (element.disabled || element.getAttribute('disabled') || element.classList.contains('disabled')) {\r\n return;\r\n }\r\n\r\n TouchHandler.registerEvent(e);\r\n\r\n if (e.type === 'touchstart' && Effect.delay) {\r\n\r\n var hidden = false;\r\n\r\n var timer = setTimeout(function () {\r\n timer = null;\r\n Effect.show(e, element);\r\n }, Effect.delay);\r\n\r\n var hideEffect = function (hideEvent) {\r\n\r\n // if touch hasn't moved, and effect not yet started: start effect now\r\n if (timer) {\r\n clearTimeout(timer);\r\n timer = null;\r\n Effect.show(e, element);\r\n }\r\n if (!hidden) {\r\n hidden = true;\r\n Effect.hide(hideEvent, element);\r\n }\r\n\r\n removeListeners();\r\n };\r\n\r\n var touchMove = function (moveEvent) {\r\n if (timer) {\r\n clearTimeout(timer);\r\n timer = null;\r\n }\r\n hideEffect(moveEvent);\r\n\r\n removeListeners();\r\n };\r\n\r\n element.addEventListener('touchmove', touchMove, false);\r\n element.addEventListener('touchend', hideEffect, false);\r\n element.addEventListener('touchcancel', hideEffect, false);\r\n\r\n var removeListeners = function () {\r\n element.removeEventListener('touchmove', touchMove);\r\n element.removeEventListener('touchend', hideEffect);\r\n element.removeEventListener('touchcancel', hideEffect);\r\n };\r\n } else {\r\n\r\n Effect.show(e, element);\r\n\r\n if (isTouchAvailable) {\r\n element.addEventListener('touchend', Effect.hide, false);\r\n element.addEventListener('touchcancel', Effect.hide, false);\r\n }\r\n\r\n element.addEventListener('mouseup', Effect.hide, false);\r\n element.addEventListener('mouseleave', Effect.hide, false);\r\n }\r\n }\r\n }\r\n\r\n Waves.init = function (options) {\r\n var body = document.body;\r\n\r\n options = options || {};\r\n\r\n if ('duration' in options) {\r\n Effect.duration = options.duration;\r\n }\r\n\r\n if ('delay' in options) {\r\n Effect.delay = options.delay;\r\n }\r\n\r\n if (isTouchAvailable) {\r\n body.addEventListener('touchstart', showEffect, false);\r\n body.addEventListener('touchcancel', TouchHandler.registerEvent, false);\r\n body.addEventListener('touchend', TouchHandler.registerEvent, false);\r\n }\r\n\r\n body.addEventListener('mousedown', showEffect, false);\r\n };\r\n\r\n\r\n /**\r\n * Attach Waves to dynamically loaded inputs, or add .waves-effect and other\r\n * waves classes to a set of elements. Set drag to true if the ripple mouseover\r\n * or skimming effect should be applied to the elements.\r\n */\r\n Waves.attach = function (elements, classes) {\r\n\r\n elements = getWavesElements(elements);\r\n\r\n if (toString.call(classes) === '[object Array]') {\r\n classes = classes.join(' ');\r\n }\r\n\r\n classes = classes ? ' ' + classes : '';\r\n\r\n var element, tagName;\r\n\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n\r\n element = elements[i];\r\n tagName = element.tagName.toLowerCase();\r\n\r\n if (['input', 'img'].indexOf(tagName) !== -1) {\r\n TagWrapper[tagName](element);\r\n element = element.parentElement;\r\n }\r\n\r\n if (element.className.indexOf('waves-effect') === -1) {\r\n element.className += ' waves-effect' + classes;\r\n }\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Cause a ripple to appear in an element via code.\r\n */\r\n Waves.ripple = function (elements, options) {\r\n elements = getWavesElements(elements);\r\n var elementsLen = elements.length;\r\n\r\n options = options || {};\r\n options.wait = options.wait || 0;\r\n options.position = options.position || null; // default = centre of element\r\n\r\n\r\n if (elementsLen) {\r\n var element, pos, off, centre = {},\r\n i = 0;\r\n var mousedown = {\r\n type: 'mousedown',\r\n button: 1\r\n };\r\n var hideRipple = function (mouseup, element) {\r\n return function () {\r\n Effect.hide(mouseup, element);\r\n };\r\n };\r\n\r\n for (; i < elementsLen; i++) {\r\n element = elements[i];\r\n pos = options.position || {\r\n x: element.clientWidth / 2,\r\n y: element.clientHeight / 2\r\n };\r\n\r\n off = offset(element);\r\n centre.x = off.left + pos.x;\r\n centre.y = off.top + pos.y;\r\n\r\n mousedown.pageX = centre.x;\r\n mousedown.pageY = centre.y;\r\n\r\n Effect.show(mousedown, element);\r\n\r\n if (options.wait >= 0 && options.wait !== null) {\r\n var mouseup = {\r\n type: 'mouseup',\r\n button: 1\r\n };\r\n\r\n setTimeout(hideRipple(mouseup, element), options.wait);\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Remove all ripples from an element.\r\n */\r\n Waves.calm = function (elements) {\r\n elements = getWavesElements(elements);\r\n var mouseup = {\r\n type: 'mouseup',\r\n button: 1\r\n };\r\n\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n Effect.hide(mouseup, elements[i]);\r\n }\r\n };\r\n\r\n /**\r\n * Deprecated API fallback\r\n */\r\n Waves.displayEffect = function (options) {\r\n console.error('Waves.displayEffect() has been deprecated and will be removed in future version. Please use Waves.init() to initialize Waves effect');\r\n Waves.init(options);\r\n };\r\n\r\n return Waves;\r\n});\r\n$(document).ready(function () {\r\n //Initialization\r\n Waves.attach('.btn:not(.btn-flat), .btn-floating', ['waves-light']);\r\n Waves.attach('.btn-flat', ['waves-effect']);\r\n Waves.attach('.chip', ['waves-effect']);\r\n Waves.attach('.view a .mask', ['waves-light']);\r\n Waves.attach('.waves-light', ['waves-light']);\r\n Waves.attach('.navbar-nav a:not(.navbar-brand), .nav-icons li a, .nav-tabs .nav-item:not(.dropdown)', ['waves-light']);\r\n Waves.attach('.pager li a', ['waves-light']);\r\n Waves.attach('.pagination .page-item .page-link', ['waves-effect']);\r\n Waves.init();\r\n});\r\n"],"sourceRoot":""}