{"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/descriptors.js","webpack:///./node_modules/core-js/internals/an-object.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/shared.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/to-integer.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/set-global.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/shared-key.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/object-create.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/document-create-element.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/to-absolute-index.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/object-keys.js","webpack:///./node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/a-function.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/add-to-unscopables.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/modules/es.array.iterator.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js/internals/regexp-exec.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/set-to-string-tag.js","webpack:///./node_modules/core-js/internals/iterators.js","webpack:///./node_modules/core-js/internals/bind-context.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.object.to-string.js","webpack:///./node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./node_modules/core-js/modules/es.array.index-of.js","webpack:///./node_modules/core-js/internals/create-property.js","webpack:///./node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/core-js/modules/es.symbol.js","webpack:///./node_modules/core-js/internals/whitespaces.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.string.iterator.js","webpack:///./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///(webpack)/buildin/amd-options.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/modules/es.array.join.js","webpack:///./node_modules/core-js/internals/string-multibyte.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.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/es.string.replace.js","webpack:///./node_modules/core-js/internals/define-iterator.js","webpack:///./node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/core-js/modules/es.date.to-string.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/modules/es.array.filter.js","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./node_modules/core-js/internals/dom-iterables.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es.string.split.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/is-regexp.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/internals/species-constructor.js","webpack:///./node_modules/core-js/modules/es.array.for-each.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./node_modules/core-js/modules/es.object.keys.js","webpack:///./node_modules/core-js/internals/inherit-if-required.js","webpack:///./node_modules/core-js/modules/es.parse-float.js","webpack:///external \"jQuery\"","webpack:///./node_modules/core-js/modules/es.string.match.js","webpack:///./node_modules/core-js/modules/es.function.name.js","webpack:///./node_modules/core-js/modules/es.parse-int.js","webpack:///./node_modules/core-js/internals/forced-string-trim-method.js","webpack:///./src/js/pro/material-select/material-select-view-renderer.js","webpack:///./node_modules/core-js/modules/es.array.includes.js","webpack:///./node_modules/core-js/modules/es.string.includes.js","webpack:///./node_modules/core-js/internals/parse-float.js","webpack:///./node_modules/core-js/internals/array-reduce.js","webpack:///./src/js/pro/material-select/material-select-view.js","webpack:///./node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./node_modules/core-js/internals/set-species.js","webpack:///./node_modules/core-js/internals/not-a-regexp.js","webpack:///./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./node_modules/core-js/modules/es.array.sort.js","webpack:///./node_modules/core-js/internals/array-last-index-of.js","webpack:///./node_modules/core-js/modules/es.array.reverse.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/internals/parse-int.js","webpack:///./node_modules/core-js/modules/es.object.values.js","webpack:///./node_modules/core-js/internals/object-to-array.js","webpack:///./node_modules/core-js/internals/array-fill.js","webpack:///./node_modules/core-js/modules/es.array.reduce.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/check-correctness-of-iteration.js","webpack:///./node_modules/core-js/internals/to-offset.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/core-js/internals/is-array-iterator-method.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.string.search.js","webpack:///./node_modules/core-js/internals/same-value.js","webpack:///./src/js/pro/buttons.js","webpack:///./src/js/pro/cards.js","webpack:///./src/js/pro/character-counter.js","webpack:///./src/js/pro/collapsible.js","webpack:///./src/js/pro/file-input.js","webpack:///./src/js/pro/mdb-autocomplete.js","webpack:///./src/js/pro/preloading.js","webpack:///./src/js/pro/range-input.js","webpack:///./src/js/pro/sidenav.js","webpack:///./src/js/pro/smooth-scroll.js","webpack:///./src/js/pro/dropdown/dropdown.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack:///./src/js/pro/dropdown/dropdown-searchable.js","webpack:///./src/js/pro/material-select/material-select.js","webpack:///./node_modules/core-js/modules/es.array.fill.js","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/to-positive-integer.js","webpack:///./node_modules/core-js/internals/typed-array-from.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","webpack:///./src/js/vendor/pro/jquery.sticky.js","webpack:///./src/js/vendor/pro/scrollbar.js","webpack:///./node_modules/core-js/modules/es.array.every.js","webpack:///./src/js/vendor/pro/toastr.js","webpack:///./src/js/pro/chips.js","webpack:///./node_modules/core-js/modules/es.array.some.js","webpack:///./node_modules/core-js/modules/es.object.assign.js","webpack:///./node_modules/core-js/internals/object-assign.js","webpack:///./src/js/pro/sticky.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.symbol.to-string-tag.js","webpack:///./node_modules/core-js/modules/es.json.to-string-tag.js","webpack:///./node_modules/core-js/modules/es.math.to-string-tag.js","webpack:///./src/js/vendor/pro/picker.js","webpack:///./src/js/pro/picker.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/pro/lightbox.js","webpack:///./src/js/vendor/pro/picker-date.js","webpack:///./src/js/vendor/pro/vector-map.js","webpack:///./src/js/vendor/pro/vector-map-world-mill.js","webpack:///./src/js/pro/picker-date.js","webpack:///./src/js/vendor/pro/jarallax.js","webpack:///./src/js/vendor/pro/jarallax-video.js","webpack:///./src/js/vendor/pro/ofi.js","webpack:///./src/js/vendor/pro/picker-time.js","webpack:///./src/js/vendor/pro/picker-date-time.js","webpack:///./src/js/pro/picker-time.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","fails","a","isObject","TypeError","String","IE8_DOM_DEFINE","anObject","toPrimitive","nativeDefineProperty","O","P","Attributes","IndexedObject","requireObjectCoercible","toInteger","min","argument","IS_PURE","push","version","copyright","has","nativeFunctionToString","InternalStateModule","getInternalState","enforceInternalState","enforce","TEMPLATE","split","unsafe","simple","join","this","ceil","floor","isNaN","toString","slice","bitmap","configurable","writable","input","PREFERRED_STRING","fn","val","valueOf","propertyIsEnumerableModule","toIndexedObject","nativeGetOwnPropertyDescriptor","toObject","toLength","arraySpeciesCreate","createMethod","TYPE","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","keys","id","postfix","random","classof","propertyIsEnumerable","set","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","WeakMap","wmget","wmhas","wmset","metadata","STATE","getterFor","state","type","internalObjectKeys","concat","getOwnPropertyNames","Array","isArray","arg","path","aFunction","variable","namespace","method","arguments","defineProperties","enumBugKeys","html","documentCreateElement","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","appendChild","src","contentWindow","document","open","write","lt","close","F","Properties","createElement","EXISTS","indexOf","names","max","integer","toAbsoluteIndex","IS_INCLUDES","el","fromIndex","includes","nativePropertyIsEnumerable","NASHORN_BUG","1","V","SPECIES","wellKnownSymbol","originalArray","C","constructor","$","$find","addToUnscopables","SKIPS_HOLES","proto","getOwnPropertySymbols","METHOD_NAME","array","foo","Boolean","ownKeys","getOwnPropertyDescriptorModule","replacement","feature","detection","data","normalize","POLYFILL","NATIVE","string","replace","toLowerCase","UNSCOPABLES","ArrayPrototype","getBuiltIn","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","Iterators","defineIterator","setInternalState","iterated","kind","done","Arguments","g","e","re1","re2","regexpFlags","nativeExec","RegExp","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","lastIndex","NPCG_INCLUDED","str","reCopy","match","re","test","TO_STRING_TAG","TAG","b","apply","objectKeys","ObjectPrototype","NAME","getPrototypeOf","setPrototypeOf","DataView","DataViewPrototype","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","isPrototypeOf","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","ARRAY","TypedArrayConstructor","exportProto","KEY","exportStatic","isView","klass","$indexOf","sloppyArrayMethod","nativeIndexOf","NEGATIVE_ZERO","SLOPPY_METHOD","searchElement","propertyKey","nativeObjectCreate","getOwnPropertyNamesExternal","wrappedWellKnownSymbolModule","defineWellKnownSymbol","setToStringTag","$forEach","HIDDEN","TO_PRIMITIVE","$Symbol","JSON","nativeJSONStringify","stringify","nativeGetOwnPropertyNames","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","WellKnownSymbolsStore","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","wrap","tag","description","symbol","isSymbol","iterator","$defineProperty","$defineProperties","properties","$getOwnPropertySymbols","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","setter","keyFor","sym","useSetter","useSimple","replacer","$replacer","args","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","regexp","desc","charAt","point","DOMIterables","ArrayIteratorMethods","ITERATOR","ArrayValues","values","COLLECTION_NAME","Collection","CollectionPrototype","__webpack_amd_options__","nativeJoin","ES3_STRINGS","separator","CONVERT_TO_STRING","pos","first","second","S","position","size","charCodeAt","codeAt","CORRECT_PROTOTYPE_GETTER","ignoreCase","multiline","dotAll","unicode","sticky","createProperty","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","k","len","E","A","aPossiblePrototype","CORRECT_SETTER","__proto__","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","methods","nativeMethod","arg2","forceStringMethod","stringMethod","regexMethod","R","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","createIteratorConstructor","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","returnThis","Iterable","IteratorConstructor","next","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","PrototypeOfArrayIteratorPrototype","arrayIterator","DatePrototype","Date","nativeDateToString","getTime","NaN","whitespace","ltrim","rtrim","start","end","trim","$filter","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","classofRaw","CORRECT_ARGUMENTS","tryGet","callee","originalModule","webpackPolyfill","children","$map","flags","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","isRegExp","speciesConstructor","callRegExpExec","arrayPush","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","output","lastLastIndex","separatorCopy","splitter","unicodeMatching","q","z","nativeSlice","Constructor","fin","MATCH","windowNames","getWindowNames","defaultConstructor","splice","deleteCount","insertCount","actualDeleteCount","from","to","actualStart","argumentsLength","inheritIfRequired","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","third","radix","maxCode","digits","code","parseInt","NumberWrapper","dummy","$trim","forcedStringTrimMethod","nativeKeys","Wrapper","NewTarget","NewTargetPrototype","parseFloatImplementation","parseFloat","jQuery","nativeMatch","matcher","matchStr","FunctionPrototype","FunctionPrototypeToString","nameRE","parseIntImplementation","whitespaces","MaterialSelectViewRenderer","view","currentUuid","$nativeSelect","removeClass","parent","remove","hasClass","unwrap","setWrapperClasses","setMaterialSelectInitialValue","before","$selectWrapper","showResetButton","appendResetButton","appendDropdownIcon","appendMaterialSelect","appendMaterialOptionsList","appendNativeSelect","appendSelectLabel","appendCustomTemplateParts","shouldValidate","appendValidationFeedbackElements","isRequired","enableValidation","isDisabled","setMaterialOptionsListMaxHeight","dropdown","$materialSelect","hover","closeOnClick","resetScroll","shouldInheritTabindex","attr","isDefaultMaterialInput","$mainLabel","css","isCustomSelect","width","height","padding","fontSize","lineHeight","backgroundColor","border","addAccessibilityAttributes","markInitialized","addClass","marginTop","marginBottom","placeholder","prepend","sanitizedLabelHtml","$materialSelectInitialOption","$dropdownIcon","append","$btnReset","selectedIndex","hide","isSearchable","appendSearchInputOption","isEditable","appendAddOptionBtn","buildMaterialOptions","isMultiple","appendToggleAllCheckbox","$materialOptionsList","appendTo","$customTemplateParts","each","_","element","$btnSave","clone","$validFeedback","insertAfter","$invalidFeedback","top","left","opacity","$tempWrapper","visibility","show","$optionsListClone","multiplier","visibleOptions","additionalHeight","$materialOptions","not","optionHeight","text","eq","optionsCount","$searchInput","$toggleAll","maxHeight","role","divClass","inputClass","on","stopPropagation","$addOptionBtn","$nativeSelectChildren","option","is","buildSingleOption","$materialOptgroup","optgroupOption","firstOption","prop","after","$newOption","$nativeSelectChild","disabled","active","optgroupClass","iconUrl","fas","fasClasses","far","farClasses","fab","fabClasses","classes","iconHtml","checkboxHtml","secondaryText","copyClassesOption","validate","defaultMaterialInput","$includes","notARegExp","correctIsRegExpLogic","searchString","nativeParseFloat","Infinity","trimmedString","IS_RIGHT","memo","right","MaterialSelectView","_copyOptions","$noSearchResultsInfo","labels","noSearchResults","selectAll","_jQueryFallback","nextUntil","validFeedback","invalidFeedback","keyCodes","tab","enter","shift","alt","esc","space","home","arrowUp","arrowDown","renderer","navigator","userAgent","destroy","render","handler","_isPlaceholderPresent","$preselectedOption","indexOfPreselectedOption","preventDefault","_toggleResetButton","trigger","addNewOption","label","$selectedOption","_selectSingleOption","which","_updateDropdownScrollTop","isTab","isArrowUp","isArrowDown","isEnter","isEsc","isAltWithArrowDown","altKey","isAltWithArrowUp","isHome","isEnd","isSpace","isDropdownExpanded","_handleTabKey","_handleClosedArrowUpDownKey","_handleArrowUpDownKey","_handleHomeKey","_handleEndKey","_handleEnterKey","_handleLetterKey","checkbox","currentState","isToggleChecked","materialOptionIndex","materialOption","$materialOption","$optionCheckbox","toggleClass","_selectOption","_triggerChangeOnNativeSelect","removeData","scrollHeight","offsetHeight","selected","oldPropertyValue","hasOptgroup","thisIndex","_isToggleAllPresent","prevAll","_updateToggleAllOption","last","childNodes","ariaSelected","selectedOptionIndex","isEnterWithShift","shiftKey","focus","$ul","closest","$options","isOptionInList","$option","outerHTML","liValue","textContent","_handleEnterWithShiftKey","updatePosition","siblings","isMobileDevice","clientX","clientWidth","clientY","clientHeight","previousValue","$allOptionsButToggleAll","$checkedOptionsButToggleAll","isToggleAllChecked","_handleEscKey","_removeKeyboardActiveClass","keyCode","_getArrowMatchedActiveOptions","$matchedMaterialOption","$activeOption","keyboardActiveClass","scrollTop","closedDropdown","visible","$availableOptions","$firstOption","$lastOption","anySelected","$currentOption","$prevOption","prev","$nextOption","_selectBoundaryOption","firstOrLast","$boundaryOption","isLetter","isNumber","isBackspace","filterQueryString","letter","fromCharCode","nonLetters","keyboardEvt","KeyboardEvent","bubbles","cancelable","dispatchEvent","newOption","$preselected","scrollTo","extend","$lastElem","getFlags","setSpecies","NativeRegExp","CORRECT_NEW","RegExpWrapper","pattern","thisIsRegExp","patternIsRegExp","flagsAreUndefined","proxy","CONSTRUCTOR_NAME","nativeSort","sort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","comparefn","nativeLastIndexOf","lastIndexOf","nativeReverse","reverse","thisNumberValue","repeat","nativeToFixed","toFixed","pow","x","acc","fractionDigits","number","fractDigits","sign","multiply","c2","divide","dataToString","RangeError","x2","log","count","nativeParseInt","hex","$values","TO_ENTRIES","endPos","$reduce","reduce","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","isLittleEndian","intIndex","byteLength","byteOffset","pack","conversion","ArrayBufferPrototype","testView","nativeSetInt8","setInt8","getInt8","setUint8","bufferLength","offset","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","toPositiveInteger","BYTES","inputSelector","selector","textAreaSelector","$text","$body","$document","observe","attachEvent","event","addEventListener","resize","delayedResize","setTimeout","isNotValid","validity","badInput","updateTextFields","toggleActiveClass","addOnFocusEvent","addOnBlurEvent","addOnChangeEvent","addOnResetEvent","appendHiddenDiv","ChangeDateInputType","makeActiveAutofocus","textAreaAutoResize","action","selectors","noValue","isValid","noPlaceholder","validateField","$formReset","noDefaultValue","select","$select","$visibleInput","defaultValue","$hiddenDiv","$input","hasValue","hasPlaceholder","addOrRemove","valid","Number","$dateInputs","$item","$textarea","fontFamily","content","init","$navbar","mdbTreeview","off","treeviewToggle","$elements","$closed","$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","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","pageYOffset","clientTop","round","_value","sameValue","SEARCH","nativeSearch","searcher","previousLastIndex","y","isTouchDevice","toggleOpen","btn","querySelectorAll","classList","$btn","currentTarget","openFAB","closeFAB","$reveal","$clickedElem","isTitleClicked","isTitleIconClicked","isActivatorClicked","isActivatorIconClicked","takeRevealDown","takeRevealUp","revealElem","velocity","translateY","queue","easing","complete","$cardWrapper","$front","$back","$frontHeight","outerHeight","$backHeight","updateCounter","maxLength","actualLength","isValidLength","inputHasInvalidClass","addInputStyle","removeCounterElement","characterCounter","$counterElement","ready","accordionOpen","$collapsible","$panelHeaders","expandableOpen","stop","isChildOfPanelHeader","getPanelHeader","collapsible","defaults","accordion","collapsibleType","$pathInput","files","fileNames","file","MdbAutocomplete","dataColor","closeColor","closeBlurColor","inputFocus","inputBlur","inputFocusShadow","inputBlurShadow","enterCharCode","homeCharCode","endCharCode","arrowUpCharCode","arrowDownCharCode","nextScrollHeight","assignOptions","$clearButton","$autocompleteWrap","handleEvents","setData","inputKeyupData","inputLiClick","clearAutocomplete","setAutocompleteWrapHeight","changeSVGcolors","empty","$inputValue","appendOptions","$ulList","$ulItems","nextItemHeight","previousItemHeight","homeHandler","endHandler","arrowDownHandler","arrowUpHandler","item","fillSVG","color","mdbAutocomplete","windowLoaded","preloaderFading","fadeOut","removeAttr","load","rangeType","thumbHtml","rangeMousedown","updateThumbPosition","$thumb","minValue","maxValue","widthThumb","oneStep","leftPosition","thumbAnimation","tHeight","tWidth","tTop","tMarginLeft","tDuration","tEasing","marginLeft","showThumb","hideThumb","noThumb","isRightClick","addThumb","SideNav","settings","menuLeftMinBorder","menuLeftMaxBorder","menuRightMinBorder","menuRightMaxBorder","menuVelocityOffset","menuWidth","edge","breakpoint","timeDurationOpen","timeDurationClose","timeDurationOverlayOpen","timeDurationOverlayClose","easingOpen","easingClose","showOverlay","showCloseButton","slim","onOpen","onClose","$element","$elementCloned","menuOut","lastTouchVelocity","startPosition","startTime","endPosition","endTime","$menu","$sidenavOverlay","$dragTarget","newOptions","setMenuWidth","setMenuTranslation","openOnClick","bindTouchEvents","inputOnClick","handleSlim","removeMenu","$sidenavBg","innerWidth","xValue","callback","showSidenavOverlay","translateX","touchmoveEventHandler","touches","now","touchendEventHandler","borderTop","restoreMenu","overflow","hideSidenavOverlay","transition","touch","touchX","disableScrolling","buildSidenavOverlay","translateSidenavX","updateOverlayOpacity","changedTouches","velocityX","calculateTouchVelocityX","leftPos","rightPos","translateMenuX","enableScrolling","oldWidth","fromTo","isRightDirection","isLeftDirection","overlayPercentage","sideNav","elAttr","animate","setHash","parentsUntil","history","replaceState","Dropdown","$activator","$activates","inDuration","outDuration","easingEffectIn","easingEffectOut","constrainWidth","gutter","belowOrigin","alignment","isFocused","bindMultiLevelDropdownEvents","bindBootstrapEvents","submenu","$dropdown","effects","_getDropdownEffects","_dropdownEffectStart","effectIn","effectOut","_dropdownEffectEnd","mediaQuery","matchMedia","matches","defaultInEffect","defaultOutEffect","$dropdownMenu","$parentUl","parents","effectToStart","one","appendDropdownToActivator","handleHoverableDropdown","handleClickableDropdown","bindEvents","opened","unbind","placeDropdown","toEl","toElement","relatedTarget","hideDropdown","activatorClicked","activatorActive","dropdownContentClicked","eventType","outerWidth","showDropdown","durations","originHeight","offsetTop","currAlignment","_getHorizontalAlignment","gutterSpacing","$wrapper","verticalOffset","scrollOffset","doesNotFitFromBottom","doesNotFitFromTop","adjustedHeight","offsetLeft","elem","instances","returnPublicInterface","initAnimations","mdbDropdownAutoInit","FAILS_ON_PRIMITIVES","getOwnPropertyDescriptors","DropdownSearchable","$searchWrappers","fontWeight","borderRadius","borderColor","margin","bindSearchEvents","mdbDropSearch","originalVal","MaterialSelect","selectId","optionsSelected","maxSelectedOptions","uuid","_randomUUID","selectedOptionsIndexes","mutationObservers","observer","disconnect","customStatus","materialSelect","isInitialized","selectPreselectedOptions","optionIndex","_toggleSelectedValue","bindMutationObserverChange","bindResetButtonClick","_resetSelection","bindAddNewOptionClick","bindMaterialSelectFocus","bindMaterialSelectClick","bindMaterialSelectBlur","bindMaterialOptionsListTouchstart","bindMaterialSelectKeydown","bindMaterialSelectDropdownToggle","bindToggleAllClick","bindMaterialOptionMousedown","bindMaterialOptionClick","bindSingleMaterialOptionClick","bindSearchInputKeyup","bindHtmlClick","bindMobileDevicesMousedown","bindSaveBtnClick","MutationObserver","_onMutationObserverChange","attributes","childList","characterData","subtree","customId","clearMutationObservers","mutationsList","mutation","selectedValueIndex","isSelected","_setValueToMaterialSelect","selectedValuesCount","substring","ret","mdbSelectAutoInit","fill","$modal_dialog","def","swing","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","PI","easeOutSine","sin","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","sqrt","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","Velocity","isWindow","nodeType","isPlainObject","expando","u","dequeue","unshift","Error","pageXOffset","scrollLeft","clientLeft","offsetParent","nodeName","borderTopWidth","borderLeftWidth","Utilities","isWrapped","isNode","h","v","w","isFinite","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","loop","isAnimating","Lists","transforms3D","Values","tweensContainer","documentMode","innerHTML","getElementsByTagName","webkitRequestAnimationFrame","mozRequestAnimationFrame","isFunction","isNodeList","jquery","Zepto","zepto","isZ","isSVG","SVGElement","isEmptyObject","isMobile","isAndroid","isGingerbread","isChrome","chrome","isFirefox","prefixElement","prefixMatches","scrollAnchor","scrollPropertyLeft","scrollPropertyTop","CSS","Redirects","Promise","begin","_cacheValues","computedStyle","hook","mock","major","minor","patch","debug","parentNode","tension","friction","dx","dv","linear","spring","exp","RegEx","isHex","valueUnwrap","wrappedValueAlreadyExtracted","valueSplit","colors","transformsBase","templates","textShadow","boxShadow","clip","backgroundPosition","transformOrigin","perspectiveOrigin","register","cleanRootPropertyValue","isCSSNullValue","extractValue","injectValue","blur","zoom","substr","black","blue","gray","green","red","white","hexToRgb","Names","camelCase","toUpperCase","SVGAttribute","prefixCheck","getUnitType","getDisplayType","tagName","add","className","getPropertyValue","offsetWidth","getComputedStyle","getBBox","getAttribute","container","direction","alternateValue","setAttribute","translate","skewX","skewY","scale","rotate","promise","myParent","lastPosition","lastParent","lastFontSize","emToPx","lastEmToPx","percentToPxWidth","lastPercentToPxWidth","percentToPxHeight","lastPercentToPxHeight","createElementNS","removeChild","remToPx","vwToPx","vhToPx","axis","opts","M","I","B","W","G","Y","D","Q","resolver","velocityQueueEntryFlag","delayTimer","elements","rejecter","clearTimeout","backwards","stagger","drag","requestAnimationFrame","hidden","paddingTop","paddingBottom","define","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","getIteratorMethod","isArrayIteratorMethod","step","mapfn","mapping","iteratorMethod","$copyWithin","copyWithin","inc","$every","$fill","predicate","$findIndex","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","factory","Waves","$$","isTouchAvailable","getWavesElements","nodes","obj","stringRepr","docElem","win","doc","ownerDocument","defaultView","getWindow","convertStyle","styleObj","Effect","button","ripple","relativeY","relativeX","pageY","pageX","rippleStyle","transform","ripples","getElementsByClassName","removeRipple","removeEventListener","TagWrapper","contains","replaceChild","img","TouchHandler","allowEvent","allow","registerEvent","eType","showEffect","srcElement","parentElement","getWavesEffectElement","timer","hideEffect","hideEvent","removeListeners","touchMove","moveEvent","attach","elementsLen","wait","centre","mousedown","hideRipple","mouseup","calm","displayEffect","topSpacing","zIndex","stopper","stickyClass","hasIndex","hasStopper","thisHeight","thisWidth","pushPoint","$window","stickyScroll","windowTop","stopPoint","parentWidth","diff","div","elMatches","Element","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","query","queryChildren","child","cls","main","rtl","thumb","rail","consuming","clicking","scrolling","scrollingClassTimeout","addScrollingClass","removeScrollingClass","isAlive","scrollingThreshold","EventElement","handlers","prototypeAccessors","isEmpty","eventName","this$1","unbindAll","EventManager","eventElements","createEvent","CustomEvent","evt","initCustomEvent","processScrollDiff","useScrollingClass","forceFireReachEvent","fields","ref","contentHeight","containerHeight","up","down","reach","setScrollingClassInstantly","processScrollDiff$1","toInt","eventElement","ee","once","onceHandler","env","isWebKit","supportsTouch","maxTouchPoints","DocumentTouch","supportsIePointer","msMaxTouchPoints","updateGeometry","roundedScrollTop","rect","containerWidth","contentWidth","scrollWidth","scrollbarXRail","scrollbarYRail","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXWidth","railXMarginWidth","railXRatio","scrollbarXWidth","getThumbSize","scrollbarXLeft","negativeScrollAdjustment","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYHeight","railYMarginHeight","railYRatio","scrollbarYHeight","scrollbarYTop","xRailOffset","isRtl","isScrollbarXUsingBottom","bottom","scrollbarXBottom","scrollbarXTop","yRailOffset","isScrollbarYUsingRight","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","updateCss","thumbSize","minScrollbarLength","maxScrollbarLength","bindMouseScrollHandler","startingScrollTop","startingMousePageY","scrollBy","mouseMoveHandler","mouseUpHandler","bindMoves","touchMode","keyboard","isDefaultPrevented","defaultPrevented","activeElement","contentDocument","shadowRoot","deltaX","deltaY","metaKey","wheelPropagation","shouldPreventDefault","wheel","mousewheelHandler","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","getDeltaFromEvent","querySelector","cursor","overflowY","maxScrollTop","overflowX","maxScrollLeft","shouldBeConsumedByChild","shouldPrevent","useBothWheelAxes","wheelSpeed","isTop","isBottom","isLeft","isRight","ctrlKey","onwheel","onmousewheel","startOffset","speed","easingLoop","touchStart","touchEnd","PointerEvent","MSPointerEvent","applyTouchMove","differenceX","differenceY","getTouch","targetTouches","shouldHandle","pointerType","buttons","MSPOINTER_TYPE_MOUSE","clearInterval","currentOffset","currentTime","timeGap","magnitudeX","magnitudeY","swipeEasing","setInterval","PerfectScrollbar","userSettings","originalScrollLeft","isNegativeScroll","railXStyle","borderRightWidth","marginRight","railYStyle","styles","paddingLeft","paddingRight","borderBottomWidth","handlerName","lastScrollTop","lastScrollLeft","onScroll","update","removePsClasses","$container","listener","previousToast","toastId","toastType","info","success","warning","toastr","clear","$toastElement","clearOptions","getOptions","getContainer","clearToast","toastsToClear","clearContainer","removeToast","message","title","optionsOverride","notify","iconClass","iconClasses","subscribe","containerId","positionClass","createContainer","force","hideMethod","hideDuration","hideEasing","publish","preventDuplicates","shouldExit","intervalId","$titleElement","$messageElement","$progressElement","$closeElement","closeHtml","progressBar","hideEta","maxHideTime","response","toastClass","titleClass","messageClass","closeButton","newestOnTop","showMethod","showDuration","showEasing","onShown","timeOut","hideToast","updateProgress","stickAround","delayedHideToast","onclick","tapToDismiss","click","cancelBubble","override","onHidden","extendedTimeOut","percentage","deps","require","MaterialChips","$chipsWrapper","dataChip","secondaryPlaceholder","sortAutocompleteData","autocompleteDataCompareFn","$autocompleteList","backspace","arrowLeft","arrowRight","delete","comma","isPublicInterfaceCall","chips","initialized","renderChips","assign","bindChipsWrapperClick","bindChipsWrapperBlur","bindSingleChipClick","bindChipsWrapperKeydown","bindChipsInputClick","bindChipsInputFocusout","bindChipsInputKeydown","bindDeleteButtonClick","bindAutocompleteInputKeyup","bindAutocompleteOptionClick","getSelectedChip","chipIndex","selectChip","backspacePressed","deletePressed","leftArrowPressed","rightArrowPressed","nextIndex","deleteSelectedChip","selectLeftChip","selectRightChip","$chipsInput","enterPressed","commaPressed","addChip","lastChipIndex","deleteChip","lastChipText","$li","$selectedChip","siblingsLength","selectIndex","selectLeftRightChip","currentIndex","getSingleChipTemplate","setPlaceholder","chip","image","$newChip","insertBefore","$chip","materialChip","materialChips","nativeAssign","chr","Sticky","startScrolling","minWidth","elementWidth","elementHeight","initialScrollTop","$placeholder","setPushPoint","setStopperPosition","isScreenHeightEnough","$pushPoint","handleResize","$parent","appendPlaceholder","stickyStart","stickyEnd","hasZIndex","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","$html","supportsTransitions","PickerConstructor","ELEMENT","COMPONENT","OPTIONS","IS_DEFAULT_THEME","handlingOpen","SETTINGS","CLASSES","klasses","$ELEMENT","OPENCOUNTER","PickerInstance","$node","autofocus","getActiveElement","readOnly","editable","component","$root","picker","aria","$holder","createWrappedComponent","prepareElementHolder","formatSubmit","hiddenName","hiddenPrefix","hiddenSuffix","_hidden","format","func","context","later","timeout","immediate","callNow","handleKeydownEvent","haspopup","expanded","readonly","owns","containerHidden","onStart","onRender","onStop","onSet","currentStyle","theme","entireComponent","dontGiveFocus","getScrollbarWidth","frame","getRealEventTarget","isSimulated","keycode","keycodeToMove","go","highlighted","highlight","closeOnSelect","giveFocus","handleFocusToOpenEvent","focused","thing","thingItem","thingValue","thingIsObject","thingObject","updateInput","muted","formats","internal","thingName","thingMethod","namesCount","_trigger","methodList","node","holder","keydown","focusin","targetData","targetDisabled","navDisabled","href","nav","pick","closeOnClear","isKeycodeDelete","$outer","widthWithoutScroll","widthWithScroll","originalEvent","attribute","ariaSet","err","prefix","group","groupObject","loopObjectScope","nodesList","counter","lead","scope","isDate","isInteger","getDate","ariaAttr","attrVal","Component","componentData","Picker","inline","Popper","placement","modifiers","enabled","currentView","selectYear","buttonOk","Selector","CUSTOMFILE","CUSTOMFILELABEL","FORM","INPUT","getDefaultText","defaultText","findFirstChildNode","restoreDefaultText","bsCustomFileInput","fileApi","File","getSelectedFiles","hasAttribute","splittedValue","handleInputChange","inputValue","handleFormReset","customFileList","Event","formSelector","customFileInputList","formList","_i","_len","form","_i2","_len2","Chart","2","colorNames","getRgba","rgb","getHsla","alpha","getHwb","rgbaString","rgba","percentaString","hslaString","hsla","num","hexDouble","getRgb","getHsl","getAlpha","vals","hexString","rgbString","percentString","hslString","hwbString","hwb","keyword","reverseNames","3","convert","Color","hsl","hsv","cmyk","setValues","lightness","whiteness","cyan","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","hue","saturation","saturationv","blackness","magenta","yellow","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","dark","light","negate","lighten","ratio","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","degrees","mix","mixinColor","weight","w1","w2","toJSON","spaces","maxes","getValues","capped","chans","sname","svalues","4","rgb2hsl","delta","rgb2hsv","rgb2hwb","rgb2cmyk","rgb2keyword","reverseKeywords","rgb2xyz","rgb2lab","xyz","hsl2rgb","t1","t2","t3","hsv2rgb","hi","hwb2rgb","wh","bl","cmyk2rgb","xyz2rgb","xyz2lab","lab2xyz","lab","y2","lab2lch","atan2","lab2rgb","lch2lab","lch","hr","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","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","whitesmoke","yellowgreen","5","conversions","Converter","pair","convs","routeSpace","fspace","6","7","helpers","Animation","animationService","Interaction","layouts","platform","plugins","Scale","scaleService","Ticks","Tooltip","initialize","Legend","legend","_element","Title","pluginService","PluginBase","canvasHelpers","canvas","layoutService","8","Bar","config","9","Bubble","10","Doughnut","11","Line","12","PolarArea","13","Radar","14","Scatter","15","_set","scales","xAxes","categoryPercentage","barPercentage","gridLines","offsetGridLines","yAxes","rectangle","borderSkipped","tooltips","callbacks","yLabel","datasets","datasetIndex","xLabel","controllers","bar","DatasetController","dataElementType","Rectangle","meta","me","getMeta","stack","getDataset","reset","ilen","rects","_ruler","getRuler","updateElement","chart","dataset","custom","rectangleOptions","_xScale","getScaleForId","xAxisID","_yScale","yAxisID","_datasetIndex","_index","_model","datasetLabel","valueAtIndexOrDefault","borderWidth","updateElementGeometry","pivot","model","vscale","getValueScale","base","getBasePixel","horizontal","isHorizontal","ruler","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","center","getValueScaleId","getIndexScaleId","getIndexScale","_getStacks","stacked","stacks","getDatasetMeta","isDatasetVisible","getStackCount","getStackIndex","stackCount","pixels","getPixelForValue","isNullOrUndef","barThickness","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","onClick","legendItem","cutoutPercentage","circumference","tooltipItem","dataLabel","doughnut","pie","Arc","linkScales","noop","getRingIndex","ringIndex","availableWidth","availableHeight","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","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","onAnimationProgress","onAnimationComplete","23","onProgress","onComplete","frameDuration","animations","dropFrames","request","addAnimation","lazy","animating","cancelAnimation","requestAnimFrame","startDigest","framesToDrop","advance","24","updateConfig","removeBox","configMerge","ensureScalesHaveIDs","buildOrUpdateScales","tooltip","positionIsHorizontal","types","construct","initConfig","acquireContext","aspectRatio","_bufferedRender","retinaScale","devicePixelRatio","responsive","initToolTip","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","stepDecimal","easingValue","boxes","drawDatasets","_drawTooltip","drawDataset","getElementAtEvent","modes","single","getElementsAtEvent","intersect","getElementsAtXAxis","getElementsAtEventForMode","getDatasetAtEvent","_meta","generateLegend","unbindEvents","releaseContext","toBase64Image","toDataURL","_chartInstance","listeners","_listeners","eventHandler","events","updateHoverStyle","changed","handleEvent","_start","bufferedRequest","animationDuration","hoverOptions","onHover","arrayEquals","Controller","25","arrayEvents","unlistenArrayEvents","stub","_chartjs","addElements","scaleID","createMetaDataset","createMetaData","metaData","addElementAndReset","resyncElements","removeHoverStyle","merge","numMeta","numData","insertElements","onDataPush","onDataPop","pop","onDataShift","onDataSplice","onDataUnshift","inherits","26","27","configuration","_view","ease","actual","origin","c0","c1","interpolate","tooltipPosition","28","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","_getParentNode","constrainedNode","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","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","niceNum","fraction","oRequestAnimationFrame","msRequestAnimationFrame","getRelativePosition","mouseX","mouseY","boundingRect","getStyle","currentDevicePixelRatio","getConstraintWidth","getConstraintHeight","_calculatePadding","parentDimension","host","cw","forceRatio","pixelRatio","fontString","pixelSize","fontStyle","longestText","font","arrayOfThings","cache","gc","garbageCollect","longest","measureText","nestedThing","gcLen","textWidth","numberOfLabelLines","numberOfLines","CanvasGradient","defaultColor","colorValue","CanvasPattern","29","parseVisibleItems","jlen","getIntersectItems","inRange","getNearestItems","distanceMetric","minDistance","nearestItems","getCenterPoint","getDistanceMetricForAxis","useX","useY","indexMode","nearest","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","params","descriptors","$plugins","33","labelsFromTicks","getLineValue","lineValue","computeTextSize","tick","parseFontOptions","globalDefaults","family","parseLineHeight","toLineHeight","drawBorder","drawOnChartArea","drawTicks","tickMarkLength","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","formatters","_ticks","beforeUpdate","maxWidth","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","yLineValue","glWidth","glColor","glBorderDash","glBorderDashOffset","itemToDraw","save","setLineDash","lineDashOffset","beginPath","moveTo","lineTo","stroke","restore","lineCount","fillText","scaleLabelX","scaleLabelY","halfLineHeight","34","constructors","registerScaleType","scaleConstructor","scaleDefaults","updateScaleDefaults","additions","35","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","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","getAfterBody","getFooter","existingModel","_active","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","borderBottom","corners","startCorner","cornerAt","corner","bounds","41","42","clearRect","roundedRect","arcTo","edgeLength","xOffset","yOffset","SQRT2","leftX","topY","sideSize","drawImage","flip","bezierCurveTo","drawRoundedRectangle","43","thisArg","loopable","a0","a1","klen","_mergerIf","mergeIf","sources","setFn","extensions","ChartElement","Surrogate","__super__","callCallback","getValueOrDefault","getValueAtIndexOrDefault","44","easingEffects","45","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","nativeEvent","addResizeListener","ticking","resizer","cssText","expand","shrink","_reset","createResizer","renderProxy","reflow","watchForRender","firstChild","removeResizeListener","unwatchForRender","_enabled","keyframes","_style","createTextNode","getElementById","renderHeight","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","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","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","significand","tickVal","endExp","endSignificand","lastTick","tickValues","_getFirstTickValue","firstTickValue","58","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","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","as","determineUnitForFormatting","_majorUnit","distribution","buildLookupTable","_offsets","upper","lower","computeOffsets","_labelFormat","momentDate","hasTime","determineLabelFormat","majorUnit","ticksFromTimestamps","tooltipFormat","tickFormatFunction","formatOverride","displayFormats","minorFormat","majorFormat","majorTime","majorTickOpts","formatter","getPixelForOffset","getLabelWidth","ticksOpts","tickLabelWidth","sinRotation","exampleTime","exampleLabel","displayFormat","screen","deviceXDPI","logicalXDPI","utils","toTextLines","toFontString","parseFont","bound","arrayDiff","updates","rasterize","orient","x0","y0","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","positioner","textShadowBlur","textShadowColor","textStrokeColor","textStrokeWidth","th","tw","tx","ty","boundingRects","geometry","globalAlpha","bgColor","drawFrame","strokeColor","strokeWidth","textGeometry","shadowColor","drawText","helpers$2","rotated","cx","cy","projected","dp","toAxis","HitBox","_rotation","_rect","coordinates","vs","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","$context","$groups","_key","_dirty","handleMoveEvents","leave","_labels","_hovered","dispatchMoveEvents","datalabels","_actives","_listened","_datasets","afterDatasetUpdate","configs","afterDatasetsDraw","beforeEvent","handleClickEvents","actives","invalidate","ChartDataLabels","createHTML","forcedStringHTMLMethod","quot","PhotoSwipe","features","createEl","getScrollY","getChildByClass","nextSibling","arraySearch","sine","inOut","cubic","detectFeatures","oldIE","all","raf","caf","cancelAnimationFrame","pointerEvent","pointerEnabled","msPointerEnabled","appVersion","isOldIOSPhone","isOldAndroid","androidVersion","isMobileOpera","svg","createSVGRect","allowPanToNext","bgOpacity","mouseUsed","pinchToClose","closeOnScroll","closeOnVerticalDrag","verticalDragRange","hideAnimationDuration","showAnimationDuration","showHideOpacity","escKey","arrowKeys","mainScrollEndFriction","panEndFriction","isClickableElement","getDoubleTapZoom","initialZoomLevel","maxSpreadZoom","modal","scaleMode","J","K","U","X","Z","ba","ca","da","ea","ga","ha","ia","ja","ka","ma","na","oa","pa","qa","ra","ta","ua","va","wa","xa","ya","publicMethods","za","_b","Aa","Ba","Ca","Da","Ea","bg","Fa","currItem","fitRatio","Ga","lc","Ha","initialPosition","Ia","Ja","Ka","tb","La","Ma","Na","Oa","Ra","hc","Sa","Ta","Ua","Wa","returnValue","Xa","Ya","setScrollOffset","Za","$a","_a","ab","bb","cb","db","shout","listen","viewportSize","isMainScrollAnimating","getZoomLevel","getCurrentIndex","isDragging","isZooming","applyZoomPan","framework","template","scrollWrap","itemHolders","perspective","Va","updateSize","ui","$b","mainClass","setContent","updateCurrItem","bc","Wb","yb","panTo","goTo","updateCurrZoomItem","invalidateCurrItems","needsUpdate","cleanSlide","zoomTo","gb","hb","ib","jb","kb","lb","mb","nb","ob","pb","qb","rb","ub","xb","Cb","Db","prevent","Bb","Eb","identifier","Fb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Zb","pointerId","zb","Pb","Ob","vb","Ub","Gb","Qb","Rb","calculateSwipeSpeed","Tb","Vb","Sb","lastFlickOffset","lastFlickDist","lastFlickSpeed","slowDownRatio","slowDownRatioReverse","speedDecelerationRatio","speedDecelerationRatioAbs","distanceOffset","backAnimDestination","backAnimStarted","calculateOverBoundsAnimOffset","calculateAnimOffset","timeDiff","panAnimLoop","zoomPan","lastNow","initGestures","likelyTouchDevice","mousemove","Xb","Yb","initialLayout","getThumbBoundsFn","loadError","miniImg","webkitBackfaceVisibility","cc","dc","ec","errorMsg","forceProgressiveLoading","preload","getNumItemsFn","vGap","ic","imageAppended","loaded","jc","loading","loadComplete","onload","onerror","kc","lastChild","mc","baseDiv","clearPlaceholder","lazyLoadItem","initController","getItemAt","preloader","allowProgressiveImg","msrc","nc","qc","oc","pc","origEvent","releasePoint","initTap","onTapStart","onTapRelease","wb","initDesktopZoom","setupDesktopZoom","handleMouseWheel","mouseZoomedIn","detail","toggleDesktopZoom","rc","sc","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","galleryUID","Ec","Fc","Gc","galleryPIDs","pid","Hc","location","initHistory","updateURL","onHashChange","back","pushState","pathname","search","PhotoSwipeUI_Default","barsSize","closeElClasses","timeToIdle","timeToIdleOutside","loadingIndicatorDelay","addCaptionHTMLFn","closeEl","captionEl","fullscreenEl","zoomEl","shareEl","counterEl","arrowEl","preloaderEl","tapToClose","tapToToggleControls","clickToCloseNonZoomable","shareButtons","url","download","getImageURLForShare","getPageURLForShare","getTextForShare","indexIndicatorSep","fitControlsWidth","onTap","encodeURIComponent","parseShareButtonOut","setIdle","onInit","isFullscreen","exit","hideControls","showControls","onGlobalTap","onMouseOver","eventK","updateFullscreen","getFullscreenAPI","naturalWidth","updateIndexIndicator","supportsFullscreen","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","requestFullscreen","enterK","exitK","elementK","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","ALLOW_KEYBOARD_INPUT","gallerySelector","onThumbnailsClick","clickedListItem","clickedGallery","numChildNodes","nodeIndex","openPhotoSwipe","galleryElement","disableAnimation","fromURL","pswpElement","figureEl","linkEl","thumbElements","numNodes","parseThumbnailElements","thumbnail","pageYScroll","galleryElements","hashData","vars","gid","photoswipeParseHash","initPhotoSwipeFromDOM","DatePicker","collectionDisabled","calendar","elementValue","elementDataValue","valueString","formatString","isRTL","disable","enable","timeChange","highlightedObject","targetDate","date","selectMonth","includeToday","buttonToday","calendarItem","isInfiniteValue","getFullYear","getMonth","getDay","createRange","createDate","withinRange","dateUnit","overlapRanges","two","rel","setDate","navigate","targetDateObject","targetYear","targetMonth","isTargetArray","isTargetObject","viewsetObject","setHours","measure","viewset","dateObject","hasEnabledBeforeTarget","hasEnabledAfterTarget","reachedMin","reachedMax","originalDateObject","isFlippedBase","minLimitObject","maxLimitObject","hasEnabledWeekdays","dateTime","dateToVerify","isDisabledMatch","dateToDisable","firstDay","inverted","parsingObject","toArray","formattingLabel","formatLength","yyyy","yy","mm","dd","getWordLengthFromCollection","word","getFirstWordLength","ddd","weekdaysShort","dddd","weekdaysFull","mmm","monthsShort","mmmm","monthsFull","itemObject","isDateExact","isDateOverlap","flipEnable","deactivate","datesToDisable","disabledItems","unitToDisable","matchFound","activate","datesToEnable","disabledItemsCount","unitToEnable","disabledUnit","isExactRange","isOpen","fullCollection","nowObject","selectedObject","disabledCollection","tableHead","showWeekdaysFull","DAYS_IN_WEEK","weekdays","createMonthNav","controls","labelMonthNext","labelMonthPrev","createMonthLabel","monthsCollection","showMonthsShort","selectMonths","loopedMonth","labelMonthSelect","createYearLabel","focusedYear","numberYears","selectYears","minYear","maxYear","lowestYear","highestYear","availableYears","neededYears","loopedYear","labelYearSelect","header","WEEKS_IN_CALENDAR","rowCounter","shiftDateBy","isHighlighted","formattedDate","infocus","outfocus","activedescendant","today","buttonClear","buttonClose","navPrev","navNext","pickadate","$pickerInstance","labeldayFirstThreeLetters","monthFirstUC","elementOpenData","apiParams","scaleColors","normalizeFunction","selectedRegions","selectedMarkers","mapObject","regionName","vectorMap","jvm","Map","maps","orgEvent","absDelta","fix","HORIZONTAL_AXIS","pageHeight","lowestDelta","shouldAdjustOldDeltas","deltaFactor","nullLowestDeltaTimeout","nullLowestDelta","dispatch","handle","special","adjustOldDeltas","toFix","toBind","fixHooks","mouseHooks","mousewheel","setup","getLineHeight","getPageHeight","teardown","unmousewheel","temp","parentClass","mixin","MAX_VALUE","MIN_VALUE","whenImageLoaded","deferred","Deferred","reject","isImageUrl","AbstractElement","applyAttr","AbstractCanvasElement","setSize","rootElement","classPrefix","addPath","addCircle","addImage","addText","addGroup","parentGroup","AbstractShapeElement","isHovered","updateStyle","setStyle","attrs","mergeStyles","selectedHover","newStyles","svgns","getElementCtr","ctr","SVGGroupElement","SVGCanvasElement","defsElement","applyTransformParams","transX","transY","SVGShapeElement","patternEl","imageEl","images","then","setAttributeNS","imageCounter","SVGPathElement","SVGCircleElement","SVGImageElement","SVGTextElement","VMLElement","VMLInitialized","initializeVML","namespaces","rvml","createStyleSheet","addRule","VMLGroupElement","coordorigin","VMLCanvasElement","paths","coordsize","VMLShapeElement","fillElement","strokeElement","fillcolor","strokecolor","strokeweight","VMLPathElement","pathSvgToVml","matrix","ctrlx","ctrly","coords","VMLCircleElement","VectorCanvas","SVGAngle","impl","SimpleScale","getValue","OrdinalScale","NumericScale","setScale","setNormalizeFunction","clearMinValue","clearMaxValue","lengthes","fullLength","vectorLength","vectorSubtract","vectorToNum","vectorAdd","vectorMult","vector","vector1","vector2","extent","LN10","ColorScale","rgbToArray","numToRgb","arrayToRgb","ar","series","cssClass","vertical","legendCntVertical","legendCntHorizontal","sample","inner","markerStyle","background","labelRender","DataSeries","setAttributes","shape","Proj","degRad","radDeg","sgn","mill","lat","lng","mill_inv","atan","merc","merc_inv","aea","lambda0","fi1","fi2","fi","lambda","theta","ro","ro0","aea_inv","xCoord","yCoord","lcc","fi0","lcc_inv","MapObject","getLabelText","getLabelOffsets","offsets","setHovered","setSelected","Region","bbox","labelStyle","labelsGroup","updateLabelPosition","Marker","isImage","createShape","defaultParams","mapData","markers","regions","regionsColors","regionsData","defaultWidth","defaultHeight","setBackgroundColor","apiEvents","bindContainerTouchEvents","MSGesture","bindContainerPointerEvents","bindContainerEvents","bindElementEvents","createTip","zoomButtons","bindZoomButtons","createRegions","createMarkers","focusOn","setFocus","setSelectedRegions","setSelectedMarkers","createSeries","baseTransX","baseTransY","baseScale","curBaseScale","applyTransform","maxTransX","maxTransY","minTransX","minTransY","repositionMarkers","repositionLabels","oldPageX","oldPageY","mouseDown","panOnDrag","onContainerMouseUp","zoomOnScroll","zoomStep","zoomOnScrollSpeed","tip","touchStartScale","touchStartDistance","touchY","centerTouchX","centerTouchY","lastTouchesLength","handleTouchEvent","transXOld","transYOld","gesture","translationX","translationY","addPointer","mouseMoved","delegate","baseVal","tipText","tipShowEvent","overEvent","tipWidth","tipHeight","clickEvent","regionsSelectable","markersSelectable","clearSelected","zoomAnimate","anchorX","anchorY","isCentered","scaleStart","scaleDiff","transXStart","transXDiff","transYStart","transYDiff","viewportChangeEvent","zoomMax","zoomMin","itemBbox","codes","latLngToPoint","getSelected","getSelectedRegions","getSelectedMarkers","clearSelectedRegions","clearSelectedMarkers","getMapObject","getRegionName","regionLabelsGroup","regionStyle","regionLabelStyle","marker","markerConfig","markersArray","markersGroup","markerLabelsGroup","latLng","getMarkerPosition","markerLabelStyle","removeMarkers","projection","addMarker","seriesData","addMarkers","removeAllMarkers","inset","proj","centralMeridian","getInsetForPoint","pointToLatLng","nx","ny","insets","onRegionTipShow","onRegionOver","onRegionOut","onRegionClick","onRegionSelected","onMarkerTipShow","onMarkerOver","onMarkerOut","onMarkerClick","onMarkerSelected","onViewportChange","MultiMap","maxLevel","multiMapLevel","addMap","defaultProjection","mapsLoaded","backButton","goBack","spinner","cnt","multimap","mapName","mapNameByCode","drillDownPromise","drillDown","downloadMap","mapUrlByCode","currentMap","focusPromise","downloadPromise","always","when","prevMap","multiMap","currentVisibleMinYear","focusedMonth","isToday","renderView","ok","toggleView","cancel","datepicker","readyState","_typeof","eval","_liteReady2","_interopRequireDefault","_global","_jarallax2","default","oldPlugin","jarallax","noConflict","jQueryPlugin","oldJqPlugin","_slicedToArray","arr","_arr","_n","_d","_e","_s","sliceIterator","_createClass","protoProps","staticProps","_rafl2","isIE","supportTransform","prefixes","wndW","wndH","wndY","forceResizeParallax","forceScrollParallax","updateWndVars","jarallaxList","oldPageData","updateParallax","isResized","isScrolled","resizeObserver","ResizeObserver","entry","instanceID","Jarallax","userOptions","instance","_classCallCheck","imgSrc","imgElement","imgSize","imgPosition","imgRepeat","keepImg","elementInViewport","disableParallax","disableVideo","automaticResize","videoSrc","videoStartTime","videoEndTime","videoVolume","videoPlayOnlyVisible","onDestroy","onCoverImage","deprecatedDataAttribute","oldDataOptions","dataOptions","pureDataOptions","loweCaseOption","pureOptions","noAndroid","noIos","disableParallaxRegexp","disableVideoRegexp","elementInVP","useImgTag","initImg","canInitParallax","_arguments","$imgElement","cloneNode","$itemParent","containerStyles","pointerEvents","imageStyles","curStyle","curImgStyle","parentWithTransform","$itemParents","parentTransform","addToParallaxList","removeFromParallaxList","originalStylesTag","originalStylesImgTag","$clipStyles","styleSheet","contH","isScroll","scrollDist","resultH","resultMT","parallaxScrollDistance","isElementInViewport","contT","viewportRect","beforeTop","beforeTopEnd","afterTop","beforeBottom","beforeBottomEnd","afterBottom","fromViewportCenter","visiblePercent","positionY","section","coverImage","clipContainer","HTMLElement","ms","req","webkitCancelAnimationFrame","mozCancelAnimationFrame","_videoWorker2","_global2","_jarallaxVideo2","VideoWorker","_done","_fail","execute","fail","ID","YoutubeAPIadded","VimeoAPIadded","loadingYoutubePlayer","loadingVimeoPlayer","loadingYoutubeDefer","loadingVimeoDefer","options_default","autoplay","mute","volume","showContols","videoID","parseURL","loadAPI","videoFormats","Youtube","Vimeo","vmUrl","getVimeoID","Local","userEventsList","_this","_this2","player","playVideo","seekTo","YT","PlayerState","PLAYING","getPlayerState","setCurrentTime","getPaused","paused","play","pauseVideo","pause","setVolume","$video","unMute","getVolume","isMuted","videoImage","availableSizes","tempImg","Image","XMLHttpRequest","onreadystatechange","status","responseText","thumbnail_large","send","getVideo","onAPIready","hiddenDiv","playerOptions","videoId","playerVars","autohide","playsinline","iv_load_policy","modestbranding","showinfo","disablekb","ytStarted","ytProgressInterval","onReady","fire","onStateChange","ENDED","PAUSED","getCurrentTime","firstInit","playerID","Player","videoWidth","videoHeight","getVideoWidth","getVideoHeight","vmStarted","seconds","locStarted","onYouTubeIframeAPIReady","vimeoInterval","defInit","video","defCoverImage","imageData","ml","mt","defInitImg","defaultResult","defaultInitImgResult","defCanInitParallax","oldOnScroll","isVisible","$default_item","imgWidth","imgHeight","getImageURL","defDestroy","OFI","propRegex","testImg","supportsObjectFit","supportsObjectPosition","supportsOFI","supportsCurrentSrc","currentSrc","nativeGetAttribute","nativeSetAttribute","autoModeEnabled","onImageReady","fixOne","parsed","ofi","skipTest","srcset","naturalHeight","ss","keepSrcUsable","picturefill","pf","evaled","fillImg","reselect","curSrc","supported","polyfillCurrentSrc","backgroundImage","backgroundRepeat","backgroundOrigin","backgroundSize","imgs","startAutoMode","watchMQ","getOfiImageMaybe","HTMLImageElement","hijackAttributes","$win","$doc","svgNS","svgSupported","namespaceURI","transitionSupported","touchSupported","mousedownEvent","mousemoveEvent","mouseupEvent","vibrate","webkitVibrate","createSvgElement","debounce","leadingZero","idCounter","dialRadius","tickRadius","diameter","tpl","ClockPicker","popover","plate","hoursView","minutesView","amPmBlock","isInput","isAppended","isShown","spanHours","spanMinutes","spanAmPm","amOrPm","isTwelvehour","twelvehour","minTime","maxTime","minMinutes","maxMinutes","minHours","maxHours","isInvalidTimeScope","parseTimeOptions","period","amPmButtonsTemplate","togglePeriod","previsiousPeriod","disableOutOfRangeElements","ampmclickable","darktheme","donetext","cleartext","clearInput","radian","tickTpl","hourstep","incrementValue","minutestep","isTouch","moved","movingTimer","setHand","hours","minutes","autoclose","currentHours","bearing","hand","fg","raiseCallback","callbackFunction","DEFAULTS","fromnow","ampmSubmit","toggle","locate","parseInputValue","getHours","getMinutes","beforeShow","afterShow","beforeHide","afterHide","$hoursTick","$minutesTick","$amBtn","$pmBtn","$doneBtn","raiseAfterHourSelect","beforeHourSelect","isHours","nextView","hideView","resetClock","toggleViewTimer","afterHourSelect","roundBy5","dragging","vibrateTimer","afterDone","selectedTime","setMinutes","setSeconds","beforeDone","outHours","isHTML5","pickatime","handleClockPickerRequest","openElementData","dateTimePicker","delimiter","$timePicker","$datePicker","timeValue","dateValue","icon","closetext","inputshowpicker","hoursBeforeChange","minutesBeforeChange","rest","closeInput","isNewValueOutOfRange","newValue","timepicker"],"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 = 227);\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 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 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 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 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","// `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 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","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","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\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","module.exports = {};\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","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 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","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","// 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 id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\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 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 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","module.exports = false;\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 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 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 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 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","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 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 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","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","'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","exports.f = Object.getOwnPropertySymbols;\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","module.exports = require('../internals/global');\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 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 = function (it) {\n  if (typeof it != 'function') {\n    throw TypeError(String(it) + ' is not a function');\n  } return it;\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","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 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","'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","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 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 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 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","module.exports = {};\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 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","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","'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","'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","'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","'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 $ = 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","// 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","// `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 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","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","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\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 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","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 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","'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","'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","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 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, '$<a>') !== '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","'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 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 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 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 $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","'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","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","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","'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 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 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","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 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","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","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 $ = 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","'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","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","'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","'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","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/forced-string-trim-method');\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n  trim: function trim() {\n    return $trim(this);\n  }\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","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","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","module.exports = jQuery;","'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 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","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","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n  });\n};\n","export default class MaterialSelectViewRenderer {\n\n  constructor(view) {\n\n    this.view = view;\n  }\n\n  get shouldValidate() {\n    return this.view.options.validate;\n  }\n\n  get shouldInheritTabindex() {\n    return this.view.$nativeSelect.data('inherit-tabindex') !== false;\n  }\n\n  get isMultiple() {\n    return this.view.isMultiple;\n  }\n\n  get isSearchable() {\n    return this.view.isSearchable;\n  }\n\n  get isRequired() {\n    return this.view.isRequired;\n  }\n\n  get isEditable() {\n    return this.view.isEditable;\n  }\n\n  get isDisabled() {\n    return this.view.isDisabled;\n  }\n\n  get isDefaultMaterialInput() {\n    return this.view.options.defaultMaterialInput;\n  }\n\n  get isCustomSelect() {\n    return this.view.$materialSelect.hasClass('custom-select') && this.view.$materialSelect.hasClass('select-dropdown');\n  }\n\n  destroy() {\n\n    const currentUuid = this.view.$nativeSelect.data('select-id');\n\n    this.view.$nativeSelect.data('select-id', null).removeClass('initialized');\n    this.view.$nativeSelect.parent().find('span.caret').remove();\n    this.view.$nativeSelect.parent().find('input').remove();\n    \n    if( this.view.$nativeSelect.hasClass('select-wrapper')) {\n      this.view.$nativeSelect.find('select').unwrap();\n    }\n   \n    $(`ul#select-options-${currentUuid}`).remove();\n  }\n\n  render() {\n\n    this.setWrapperClasses();\n    this.setMaterialSelectInitialValue();\n\n    this.view.$nativeSelect.data('select-id', this.view.properties.id);\n    this.view.$nativeSelect.before(this.view.$selectWrapper);\n\n    if (this.view.options.showResetButton) {\n\n      this.appendResetButton();\n    }\n\n    this.appendDropdownIcon();\n    this.appendMaterialSelect();\n    this.appendMaterialOptionsList();\n    this.appendNativeSelect();\n    this.appendSelectLabel();\n    this.appendCustomTemplateParts();\n\n    if (this.shouldValidate) {\n\n      this.appendValidationFeedbackElements();\n    }\n\n    if (this.isRequired) {\n\n      this.enableValidation();\n    }\n\n    if (!this.isDisabled) {\n\n      this.setMaterialOptionsListMaxHeight();\n      this.view.dropdown = this.view.$materialSelect.dropdown({\n        hover: false,\n        closeOnClick: false,\n        resetScroll: false\n      });\n    }\n\n    if (this.shouldInheritTabindex) {\n\n      this.view.$materialSelect.attr('tabindex', this.view.$nativeSelect.attr('tabindex'));\n    }\n\n    if (this.isDefaultMaterialInput) {\n\n      this.view.$mainLabel.css('top', '-7px');\n    }\n\n    if (this.isCustomSelect) {\n\n      this.view.$materialSelect.css({\n        display: 'inline-block',\n        width: '100%',\n        height: 'calc(1.5em + .75rem + 2px)',\n        padding: '.375rem 1.75rem .375rem .75rem',\n        fontSize: '1rem',\n        lineHeight: '1.5',\n        backgroundColor: '#fff',\n        border: '1px solid #ced4da'\n      });\n    }\n\n    this.addAccessibilityAttributes();\n    this.markInitialized();\n  }\n\n  setWrapperClasses() {\n\n    if (this.isDefaultMaterialInput) {\n\n      this.view.$selectWrapper\n        .addClass(\n          this.view.$nativeSelect.attr('class').split(' ').filter((el) => el !== 'md-form').join(' ')\n        )\n        .css({\n          marginTop: '1.5rem',\n          marginBottom: '1.5rem'\n        });\n\n    } else {\n      this.view.$selectWrapper.addClass(this.view.$nativeSelect.attr('class'));\n    }\n  }\n\n  setMaterialSelectInitialValue() {\n\n    if (!this.view.options.placeholder) {\n\n      const sanitizedLabelHtml = this.view.$materialSelectInitialOption.replace(/\"/g, '&quot;').replace(/  +/g, ' ').trim();\n      this.view.$materialSelect.val(sanitizedLabelHtml);\n    } else {\n\n      this.view.$materialSelect.attr('placeholder', this.view.options.placeholder);\n      if (!this.view.$nativeSelect.find('option[value=\"\"][selected][disabled][data-mdb-placeholder]').length) {\n\n        this.view.$nativeSelect.prepend('<option value=\"\" selected disabled data-mdb-placeholder></option>');\n      }\n    }\n  }\n\n  appendDropdownIcon() {\n\n    if (this.isDisabled) {\n\n      this.view.$dropdownIcon.addClass('disabled');\n    }\n\n    this.view.$selectWrapper.append(this.view.$dropdownIcon);\n  }\n\n  appendResetButton() {\n\n    if (this.isDisabled) {\n\n      this.view.$btnReset.addClass('disabled');\n    }\n\n    if (this.view.$nativeSelect.get(0).selectedIndex === -1) {\n\n      this.view.$btnReset.hide();\n    }\n\n    this.view.$selectWrapper.append(this.view.$btnReset);\n  }\n\n  appendMaterialSelect() {\n\n    this.view.$selectWrapper.append(this.view.$materialSelect);\n  }\n\n  appendMaterialOptionsList() {\n\n    if (this.isSearchable) {\n\n      this.appendSearchInputOption();\n    }\n\n    if (this.isEditable && this.isSearchable) {\n\n      this.appendAddOptionBtn();\n    }\n\n    this.buildMaterialOptions();\n\n    if (this.isMultiple) {\n\n      this.appendToggleAllCheckbox();\n    }\n\n    this.view.$selectWrapper.append(this.view.$materialOptionsList);\n  }\n\n  appendNativeSelect() {\n\n    this.view.$nativeSelect.appendTo(this.view.$selectWrapper);\n  }\n\n  appendSelectLabel() {\n\n    if (this.view.$materialSelect.val() || this.view.options.placeholder) {\n\n      this.view.$mainLabel.addClass('active');\n    }\n\n    this.view.$mainLabel[this.isDisabled ? 'addClass' : 'removeClass']('disabled');\n\n    this.view.$mainLabel.appendTo(this.view.$selectWrapper);\n  }\n\n  appendCustomTemplateParts() {\n\n    this.view.$customTemplateParts.each((_, element) => {\n\n      const $templatePart = $(element);\n      $templatePart.appendTo(this.view.$materialOptionsList).wrap('<li></li>');\n    });\n\n    this.view.$btnSave.appendTo(this.view.$selectWrapper).clone().appendTo(this.view.$materialOptionsList);\n  }\n\n  appendValidationFeedbackElements() {\n\n    this.view.$validFeedback.insertAfter(this.view.$selectWrapper);\n    this.view.$invalidFeedback.insertAfter(this.view.$selectWrapper);\n  }\n\n  enableValidation() {\n\n    this.view.$nativeSelect.css({\n      position: 'absolute',\n      top: '1rem',\n      left: '0',\n      height: '0',\n      width: '0',\n      opacity: '0',\n      padding: '0',\n      'pointer-events': 'none'\n    });\n\n    if (this.view.$nativeSelect.attr('style').indexOf('inline!important') === -1) {\n\n      this.view.$nativeSelect.attr('style', `${this.view.$nativeSelect.attr('style')} display: inline!important;`);\n    }\n\n    this.view.$nativeSelect.attr('tabindex', -1);\n    this.view.$nativeSelect.data('inherit-tabindex', false);\n  }\n\n  setMaterialOptionsListMaxHeight() {\n    const $tempWrapper = $('<div />').appendTo($('body'));\n    $tempWrapper.css({\n      position: 'absolute !important',\n      visibility: 'hidden !important',\n      display: 'block !important'\n    });\n\n    this.view.$materialOptionsList.show();\n    const $optionsListClone = this.view.$materialOptionsList.clone().appendTo($tempWrapper);\n\n    const multiplier = this.view.options.visibleOptions;\n    let additionalHeight = 0;\n    const $materialOptions = $optionsListClone.find('li').not('.disabled');\n    const optionHeight = $materialOptions.first().text().trim() === '' ? $materialOptions.eq(1).height() : $materialOptions.first().height();\n\n    const optionsCount = $materialOptions.length;\n\n    if (this.isSearchable) {\n      additionalHeight += this.view.$searchInput.height();\n    }\n\n    if (this.isMultiple) {\n      additionalHeight += this.view.$toggleAll.height();\n    }\n\n    this.view.$materialOptionsList.hide();\n    $tempWrapper.remove();\n\n    if (multiplier >= 0 && multiplier < optionsCount) {\n\n      const maxHeight = optionHeight * multiplier + additionalHeight;\n      this.view.$materialOptionsList.css('max-height', maxHeight);\n      this.view.$materialSelect.data('maxheight', maxHeight);\n    }\n  }\n\n  addAccessibilityAttributes() {\n\n    this.view.$materialSelect.attr({\n      role: this.isSearchable ? 'combobox' : 'listbox',\n      'aria-multiselectable': this.isMultiple,\n      'aria-disabled': this.isDisabled,\n      'aria-required': this.isRequired,\n      'aria-labelledby': this.view.$mainLabel.attr('id'),\n      'aria-haspopup': true,\n      'aria-expanded': false\n    });\n\n    if (this.view.$searchInput) {\n\n      this.view.$searchInput.attr('role', 'searchbox');\n    }\n\n    this.view.$materialOptionsList.find('li').each(function () {\n\n      const $this = $(this);\n      $this.attr({\n        role: 'option',\n        'aria-selected': $this.hasClass('active'),\n        'aria-disabled': $this.hasClass('disabled')\n      });\n    });\n  }\n\n  markInitialized() {\n\n    this.view.$nativeSelect.addClass('initialized');\n  }\n\n  appendSearchInputOption() {\n\n    const placeholder = this.view.$nativeSelect.attr('searchable');\n    const divClass = this.isDefaultMaterialInput ? '' : 'md-form';\n    const inputClass = this.isDefaultMaterialInput ? 'select-default mb-2' : '';\n\n    this.view.$searchInput = $(`<span class=\"search-wrap ml-2\"><div class=\"${divClass} mt-0\"><input type=\"text\" class=\"search w-100 d-block ${inputClass}\" tabindex=\"-1\" placeholder=\"${placeholder}\"></div></span>`);\n    this.view.$materialOptionsList.append(this.view.$searchInput);\n    this.view.$searchInput.on('click', (e) => e.stopPropagation());\n  }\n\n  appendAddOptionBtn() {\n\n    this.view.$searchInput.append(this.view.$addOptionBtn);\n  }\n\n  buildMaterialOptions() {\n\n    this.view.$nativeSelectChildren.each((index, option) => {\n\n      const $this = $(option);\n\n      if ($this.is('option')) {\n\n        this.buildSingleOption($this, this.isMultiple ? 'multiple' : '');\n      } else if ($this.is('optgroup')) {\n\n        const $materialOptgroup = $(`<li class=\"optgroup\"><span>${$this.attr('label')}</span></li>`);\n        this.view.$materialOptionsList.append($materialOptgroup);\n\n        const $optgroupOptions = $this.children('option');\n        $optgroupOptions.each((index, optgroupOption) => {\n\n          this.buildSingleOption($(optgroupOption), 'optgroup-option');\n        });\n      }\n    });\n  }\n\n  appendToggleAllCheckbox() {\n\n    const firstOption = this.view.$materialOptionsList.find('li').first();\n    if (firstOption.hasClass('disabled') && firstOption.find('input').prop('disabled')) {\n      firstOption.after(this.view.$toggleAll);\n    } else {\n      this.view.$materialOptionsList.find('li').first().before(this.view.$toggleAll);\n    }\n\n  }\n\n  addNewOption() {\n\n    const val = this.view.$searchInput.find('input').val();\n    const $newOption = $(`<option value=\"${val.toLowerCase()}\" selected>${val}</option>`).prop('selected', true);\n    if (!this.isMultiple) {\n      this.view.$nativeSelectChildren.each((index, option) => {\n        $(option).attr('selected', false);\n      });\n    }\n    this.view.$nativeSelect.append($newOption);\n  }\n\n  buildSingleOption($nativeSelectChild, type) {\n\n    const disabled = $nativeSelectChild.is(':disabled') ? 'disabled' : '';\n    const active = $nativeSelectChild.is(':selected') ? 'active' : '';\n    const optgroupClass = type === 'optgroup-option' ? 'optgroup-option' : '';\n    const iconUrl = $nativeSelectChild.data('icon');\n    const fas = $nativeSelectChild.data('fas') ? `<i class=\"fa-pull-right m-2 fas fa-${$nativeSelectChild.data('fas')} ${this.view.options.fasClasses}\"></i> ` : '';\n    const far = $nativeSelectChild.data('far') ? `<i class=\"fa-pull-right m-2 far fa-${$nativeSelectChild.data('far')} ${this.view.options.farClasses}\"></i> ` : '';\n    const fab = $nativeSelectChild.data('fab') ? `<i class=\"fa-pull-right m-2 fab fa-${$nativeSelectChild.data('fab')} ${this.view.options.fabClasses}\"></i> ` : '';\n\n    const classes = $nativeSelectChild.attr('class');\n\n    const iconHtml = iconUrl ? `<img alt=\"\" src=\"${iconUrl}\" class=\"${classes}\">` : '';\n    const checkboxHtml = this.isMultiple ? `<input type=\"checkbox\" class=\"form-check-input\" ${disabled}/><label></label>` : '';\n    const secondaryText = $nativeSelectChild.data('secondary-text') ? `<p class=\"text-muted pt-0 mb-0\" disabled>${$nativeSelectChild.data('secondary-text')}</p>` : '';\n\n    this.view.$materialOptionsList.append($(`<li class=\"${disabled} ${active} ${optgroupClass}\">${iconHtml}<span class=\"filtrable ${this.view.options.copyClassesOption ? classes : ''}\">${checkboxHtml} ${$nativeSelectChild.html()} ${fas} ${far} ${fab} ${secondaryText}</span></li>`));\n  }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~String(requireObjectCoercible(this))\n      .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\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","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","import MaterialSelectViewRenderer from './material-select-view-renderer';\n\nexport default class MaterialSelectView {\n\n  // eslint-disable-next-line object-curly-newline\n  constructor($nativeSelect, { options, properties: { id } }) {\n\n    this.properties = {\n      id,\n      isMultiple: Boolean($nativeSelect.attr('multiple')),\n      isSearchable: Boolean($nativeSelect.attr('searchable')),\n      isRequired: Boolean($nativeSelect.attr('required')),\n      isEditable: Boolean($nativeSelect.attr('editable'))\n    };\n\n    this.options = this._copyOptions(options);\n\n    this.$nativeSelect = $nativeSelect;\n    this.$selectWrapper = $('<div class=\"select-wrapper\"></div>');\n    this.$materialOptionsList = $(`<ul id=\"select-options-${this.properties.id}\" class=\"dropdown-content select-dropdown w-100 ${this.properties.isMultiple ? 'multiple-select-dropdown' : ''}\"></ul>`);\n    this.$materialSelectInitialOption = $nativeSelect.find('option:selected').text() || $nativeSelect.find('option:first').text() || '';\n    this.$nativeSelectChildren = this.$nativeSelect.children('option, optgroup');\n    this.$materialSelect = $(`<input type=\"text\" class=\"${this.options.defaultMaterialInput ? 'browser-default custom-select multi-bs-select select-dropdown form-control' : 'select-dropdown form-control'}\" ${!this.options.validate && 'readonly=\"true\"'} required=\"${this.options.validate ? 'true' : 'false'}\" ${this.$nativeSelect.is(' :disabled') ? 'disabled' : ''} data-activates=\"select-options-${this.properties.id}\" value=\"\"/>`);\n    this.$dropdownIcon = this.options.defaultMaterialInput ? '' : $('<span class=\"caret\">&#9660;</span>');\n    this.$searchInput = null;\n    this.$noSearchResultsInfo = $(`<li><span><i>${this.options.labels.noSearchResults}</i></span></li>`);\n    this.$toggleAll = $(`<li class=\"select-toggle-all\"><span><input type=\"checkbox\" class=\"form-check-input\"><label>${this.options.labels.selectAll}</label></span></li>`);\n    this.$addOptionBtn = $('<i class=\"select-add-option fas fa-plus\"></i>');\n    this.$mainLabel = this._jQueryFallback(this.$nativeSelect.next('label.mdb-main-label'), $(`label[for='${this.properties.id}']`));\n    this.$customTemplateParts = this._jQueryFallback(this.$nativeSelect.nextUntil('select', '.mdb-select-template-part'), $(`[data-mdb-select-template-part-for='${this.properties.id}']`));\n    this.$btnSave = this.$nativeSelect.nextUntil('select', '.btn-save'); // @Depreciated\n    this.$btnReset = $('<span class=\"reset-select-btn\">&times;</span>');\n\n    this.$validFeedback = $(`<div class=\"valid-feedback\">${this.options.labels.validFeedback}</div>`);\n    this.$invalidFeedback = $(`<div class=\"invalid-feedback\">${this.options.labels.invalidFeedback}</div>`);\n\n    this.keyCodes = {\n      tab: 9,\n      enter: 13,\n      shift: 16,\n      alt: 18,\n      esc: 27,\n      space: 32,\n      end: 35,\n      home: 36,\n      arrowUp: 38,\n      arrowDown: 40\n    };\n    \n    // eslint-disable-next-line no-undef\n    this.renderer = new MaterialSelectViewRenderer(this);\n    this.dropdown = null;\n  }\n\n  static get isMobileDevice() {\n\n    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n  }\n\n  get isMultiple() {\n    return this.properties.isMultiple;\n  }\n\n  get isSearchable() {\n    return this.properties.isSearchable;\n  }\n\n  get isRequired() {\n    return this.properties.isRequired;\n  }\n\n  get isEditable() {\n    return this.properties.isEditable;\n  }\n\n  get isDisabled() {\n    return this.$nativeSelect.is(':disabled');\n  }\n\n  destroy() {\n\n    this.renderer.destroy();\n  }\n\n  render() {\n\n    this.renderer.render();\n  }\n\n  selectPreselectedOptions(handler) {\n\n    if (this.isMultiple) {\n\n      this.$nativeSelect.find('option:selected:not(:disabled)').each((i, element) => {\n\n        let index = element.index;\n        handler(index);\n\n        if (this._isPlaceholderPresent())\n          index -= 1;\n        \n        this.$materialOptionsList.find('li:not(.optgroup):not(.select-toggle-all)').eq(index).addClass('selected active').find(':checkbox').prop('checked', true);\n        \n      });\n    } else {\n\n      const $preselectedOption = this.$nativeSelect.find('option:selected').first();\n      const indexOfPreselectedOption = this.$nativeSelect.find('option').index($preselectedOption.get(0));\n      if ($preselectedOption.get(0) && $preselectedOption.attr('disabled') !== 'disabled') {\n        handler(indexOfPreselectedOption);\n      }\n    }\n  }\n\n  bindResetButtonClick(handler) {\n\n    this.$btnReset.on('click', (e) => {\n\n      e.preventDefault();\n\n      if (!this.$nativeSelect.find('option[value=\"\"][selected][disabled][data-mdb-novalue]').length) {\n\n        this._toggleResetButton(true);\n\n        this.$materialSelect.val(this.isMultiple ? [] : '');\n        this.$materialSelect.trigger('close');\n        this.$mainLabel.removeClass('active');\n        this.$materialOptionsList.find('li.active, li.selected').removeClass('active').removeClass('selected');\n        this.$materialOptionsList.find('li[aria-selected=\"true\"]').attr('aria-selected', 'false');\n        this.$materialOptionsList.find('input[type=\"checkbox\"]').prop('checked', false);\n\n        handler();\n      }\n    });\n  }\n\n  bindAddNewOptionClick() {\n\n    this.$addOptionBtn.on('click', this.renderer.addNewOption.bind(this.renderer));\n  }\n\n  bindMaterialSelectFocus() {\n\n    this.$materialSelect.on('focus', (e) => {\n      \n      const $this = $(e.target);\n      \n      $this.parent().addClass('active');\n\n      if ($('ul.select-dropdown').not(this.$materialOptionsList.get(0)).is(':visible')) {\n\n        $('input.select-dropdown').trigger('close');\n      }\n\n      this.$mainLabel.addClass('active');\n\n      if (!this.$materialOptionsList.is(':visible')) {\n\n        const label = $this.val();\n        const $selectedOption = this.$materialOptionsList.find('li').filter(function () {\n\n          return $(this).text().toLowerCase() === label.toLowerCase();\n        }).get(0);\n\n        this._selectSingleOption($selectedOption);\n      }\n\n      if (!this.isMultiple) {\n\n        this.$mainLabel.addClass('active');\n      }\n    });\n  }\n\n  bindMaterialSelectClick() {\n\n    this.$materialSelect.on('mousedown', (e) => {\n\n      if (e.which === 3) {\n        e.preventDefault();\n      }\n    });\n\n    this.$materialSelect.on('click', (e) => {\n\n      e.stopPropagation();\n\n      this.$mainLabel.addClass('active');\n\n      this._updateDropdownScrollTop();\n    });\n  }\n\n  bindMaterialSelectBlur() {\n\n    this.$materialSelect.on('blur', (e) => {\n\n      const $this = $(e.target);\n\n      $this.parent().removeClass('active');\n\n      if (!this.isMultiple && !this.isSearchable) {\n\n        $this.trigger('close');\n      }\n\n      this.$materialOptionsList.find('li.selected').removeClass('selected');\n    });\n  }\n\n  bindMaterialOptionsListTouchstart() {\n\n    this.$materialOptionsList.on('touchstart', (e) => e.stopPropagation());\n  }\n\n  bindMaterialSelectKeydown() {\n\n    // eslint-disable-next-line complexity\n    this.$materialSelect.on('keydown', (e) => {\n\n      const $this = $(e.target);\n\n      const isTab = e.which === this.keyCodes.tab;\n\n      const isArrowUp = e.which === this.keyCodes.arrowUp;\n      const isArrowDown = e.which === this.keyCodes.arrowDown;\n      const isEnter = e.which === this.keyCodes.enter;\n      const isEsc = e.which === this.keyCodes.esc;\n      const isAltWithArrowDown = isArrowDown && e.altKey;\n      const isAltWithArrowUp = isArrowUp && e.altKey;\n      const isHome = e.which === this.keyCodes.home;\n      const isEnd = e.which === this.keyCodes.end;\n      const isSpace = e.which === this.keyCodes.space;\n\n      const isDropdownExpanded = this.$materialOptionsList.is(':visible');\n\n      switch (true) {\n        case isTab:\n          return this._handleTabKey($this);\n\n        case !isDropdownExpanded && (isEnter || isAltWithArrowDown):\n        case this.isMultiple && !isDropdownExpanded && (isArrowDown || isArrowUp):\n          $this.trigger('open');\n          return this._updateDropdownScrollTop();\n\n        case isDropdownExpanded && (isEsc || isAltWithArrowUp):\n          return $this.trigger('close');\n\n        case !isDropdownExpanded && (isArrowDown || isArrowUp):\n          return this._handleClosedArrowUpDownKey(e.which);\n\n        case isDropdownExpanded && (isArrowDown || isArrowUp):\n          return this._handleArrowUpDownKey(e.which);\n\n        case isDropdownExpanded && isHome:\n          return this._handleHomeKey();\n\n        case isDropdownExpanded && isEnd:\n          return this._handleEndKey();\n\n        case isDropdownExpanded && (isEnter || isSpace):\n          return this._handleEnterKey($this);\n\n        default:\n          return this._handleLetterKey(e);\n      }\n    });\n  }\n\n  bindMaterialSelectDropdownToggle() {\n\n    this.$materialSelect.on('open', () => this.$materialSelect.attr('aria-expanded', 'true'));\n    this.$materialSelect.on('close', () => this.$materialSelect.attr('aria-expanded', 'false'));\n  }\n\n  bindToggleAllClick(handler) {\n\n    this.$toggleAll.on('click', (e) => {\n\n      const checkbox = $(this.$toggleAll).find('input[type=\"checkbox\"]').first();\n      const currentState = Boolean($(checkbox).prop('checked'));\n      const isToggleChecked = !currentState;\n\n      $(checkbox).prop('checked', !currentState);\n\n      this.$materialOptionsList.find('li:not(.optgroup):not(.select-toggle-all)').each((materialOptionIndex, materialOption) => {\n\n        const $materialOption = $(materialOption);\n        const $optionCheckbox = $materialOption.find('input[type=\"checkbox\"]');\n\n        $materialOption.attr('aria-selected', isToggleChecked);\n\n        if (isToggleChecked && $optionCheckbox.is(':checked') || !isToggleChecked && !$optionCheckbox.is(':checked') || $(materialOption).is(':hidden') || $(materialOption).is('.disabled')) {\n\n          return;\n        }\n\n        $optionCheckbox.prop('checked', isToggleChecked);\n        this.$nativeSelect.find('option').eq(materialOptionIndex).prop('selected', isToggleChecked);\n\n        $materialOption.toggleClass('active');\n        this._selectOption(materialOption);\n        handler(materialOptionIndex);\n      });\n\n      this.$nativeSelect.data('stop-refresh', true);\n      this._triggerChangeOnNativeSelect();\n      this.$nativeSelect.removeData('stop-refresh');\n      e.stopPropagation();\n    });\n  }\n\n  bindMaterialOptionMousedown() {\n\n    this.$materialOptionsList.on('mousedown', (e) => {\n\n      const option = e.target;\n\n      const inModal = $('.modal-content').find(this.$materialOptionsList).length;\n      if (inModal && option.scrollHeight > option.offsetHeight) {\n\n        e.preventDefault();\n      }\n    });\n  }\n\n  bindMaterialOptionClick(handler) {\n\n    this.$materialOptionsList.find('li:not(.optgroup)').not(this.$toggleAll).each((materialOptionIndex, materialOption) => {\n      $(materialOption).on('click', (e) => {\n\n        e.stopPropagation();\n\n        this._toggleResetButton(false);\n\n        const $this = $(materialOption);\n\n        if ($this.hasClass('disabled') || $this.hasClass('optgroup')) {\n\n          return;\n        }\n\n        let selected = true;\n\n        if (this.isMultiple) {\n\n          $this.find('input[type=\"checkbox\"]').prop('checked', (index, oldPropertyValue) => !oldPropertyValue);\n\n          const hasOptgroup = Boolean(this.$nativeSelect.find('optgroup').length);\n          const thisIndex = this._isToggleAllPresent() && !this._isPlaceholderPresent() ? $this.index() - 1 : $this.index();\n\n          /* eslint-disable max-statements-per-line */\n          switch (true) {\n            case this.isSearchable && hasOptgroup: selected = handler(thisIndex - $this.prevAll('.optgroup').length - 1); break;\n            case this.isSearchable: selected = handler(thisIndex - 1); break;\n            case hasOptgroup: selected = handler(thisIndex - $this.prevAll('.optgroup').length); break;\n            default: selected = handler(thisIndex); break;\n          }\n          /* eslint-enable max-statements-per-line */\n\n          if (this._isToggleAllPresent()) {\n\n            this._updateToggleAllOption();\n          }\n\n          this.$materialSelect.trigger('focus');\n        } else {\n          \n          this.$materialOptionsList.find('li').removeClass('active').attr('aria-selected', 'false');\n          const $selectedOption = $this.children().last()[0].childNodes[0];\n          this.$materialSelect.val($($selectedOption).text().replace(/  +/g, ' ').trim());\n          this.$materialSelect.trigger('close');\n        }\n        \n        $this.toggleClass('active');\n        const ariaSelected = $this.attr('aria-selected');\n        $this.attr('aria-selected', ariaSelected === 'true' ? 'false' : 'true');\n        this._selectSingleOption($this);\n        this.$nativeSelect.data('stop-refresh', true);\n        const selectedOptionIndex = this._isPlaceholderPresent() ? materialOptionIndex + 1 : materialOptionIndex;\n        this.$nativeSelect.find('option').eq(selectedOptionIndex).prop('selected', selected);\n        this.$nativeSelect.removeData('stop-refresh');\n        this._triggerChangeOnNativeSelect();\n        \n        if (this.$materialSelect.val()) {\n\n          this.$mainLabel.addClass('active');\n        }\n\n        if ($this.hasClass('li-added')) {\n\n          this.renderer.buildSingleOption($this, '');\n        }\n      });\n    });\n  }\n\n  bindSingleMaterialOptionClick() {\n\n    this.$materialOptionsList.find('li').on('click', () => {\n\n      this.$materialSelect.trigger('close');\n    });\n  }\n\n  bindSearchInputKeyup() {\n\n    this.$searchInput.find('.search').on('keyup', (e) => {\n\n      const $this = $(e.target);\n\n      const isTab = e.which === this.keyCodes.tab;\n      const isEsc = e.which === this.keyCodes.esc;\n      const isEnter = e.which === this.keyCodes.enter;\n      const isEnterWithShift = isEnter && e.shiftKey;\n      const isArrowUp = e.which === this.keyCodes.arrowUp;\n      const isArrowDown = e.which === this.keyCodes.arrowDown;\n\n      if (isArrowDown || isTab || isEsc || isArrowUp) {\n\n        this.$materialSelect.focus();\n        this._handleArrowUpDownKey(e.which);\n        return;\n      }\n\n      const $ul = $this.closest('ul');\n      const searchValue = $this.val();\n      const $options = $ul.find('li span.filtrable');\n\n      let isOptionInList = false;\n\n      $options.each(function () {\n\n        const $option = $(this);\n        if (typeof this.outerHTML === 'string') {\n\n          const liValue = this.textContent.toLowerCase();\n\n          if (liValue.includes(searchValue.toLowerCase())) {\n\n            $option.show().parent().show();\n          } else {\n            $option.hide().parent().hide();\n          }\n\n          if (liValue.trim() === searchValue.toLowerCase()) {\n            isOptionInList = true;\n          }\n        }\n      });\n\n      if (isEnter) {\n        if (this.isEditable && !isOptionInList) {\n          this.renderer.addNewOption();\n          return;\n        }\n        if (isEnterWithShift) {\n          this._handleEnterWithShiftKey($this);\n        }\n        this.$materialSelect.trigger('open');\n        return;\n      }\n\n      this.$addOptionBtn[searchValue && this.isEditable && !isOptionInList ? 'show' : 'hide']();\n\n      const anyOptionMatch = $options.filter((_, e) => $(e).is(':visible') && !$(e).parent().hasClass('disabled')).length !== 0;\n      if (!anyOptionMatch) {\n\n        this.$toggleAll.hide();\n        this.$materialOptionsList.append(this.$noSearchResultsInfo);\n      } else {\n\n        this.$toggleAll.show();\n        this.$materialOptionsList.find(this.$noSearchResultsInfo).remove();\n        this._updateToggleAllOption();\n      }\n\n      this.dropdown.updatePosition(this.$materialSelect, this.$materialOptionsList);\n    });\n  }\n\n  bindHtmlClick() {\n\n    $('html').on('click', (e) => {\n\n      if (!$(e.target).closest(`#select-options-${this.properties.id}`).length && !$(e.target).hasClass('mdb-select') && $(`#select-options-${this.properties.id}`).hasClass('active')) {\n\n        this.$materialSelect.trigger('close');\n\n        if (!this.$materialSelect.val() && !this.options.placeholder) {\n\n          this.$mainLabel.removeClass('active');\n        }\n      }\n\n      if (this.isSearchable && this.$searchInput !== null && this.$materialOptionsList.hasClass('active')) {\n\n        this.$materialOptionsList.find('.search-wrap input.search').focus();\n      }\n    });\n  }\n\n  bindMobileDevicesMousedown() {\n\n    $('select').siblings('input.select-dropdown', 'input.multi-bs-select').on('mousedown', (e) => {\n      if (MaterialSelectView.isMobileDevice && (e.clientX >= e.target.clientWidth || e.clientY >= e.target.clientHeight)) {\n        e.preventDefault();\n      }\n    });\n  }\n\n  bindSaveBtnClick() { // @Depreciated\n\n    this.$btnSave.on('click', () => {\n\n      this.$materialSelect.trigger('close');\n    });\n  }\n\n  _toggleResetButton(hide) {\n\n    const previousValue = this.$nativeSelect.data('stop-refresh');\n    this.$nativeSelect.attr('data-stop-refresh', 'true');\n\n    if (hide) {\n\n      this.$nativeSelect.prepend('<option value=\"\" selected disabled data-mdb-novalue></option>');\n    } else {\n\n      this.$nativeSelect.find('option[data-mdb-novalue]').remove();\n    }\n\n    this.$nativeSelect.attr('data-stop-refresh', previousValue);\n    this.$btnReset[hide ? 'hide' : 'show']();\n  }\n\n  _isToggleAllPresent() {\n\n    return this.$materialOptionsList.find(this.$toggleAll).length;\n  }\n\n  _isPlaceholderPresent() {\n    if (this.$nativeSelect.attr('data-placeholder') || this.options.placeholder) {\n      return true;\n    } else {\n      return false;\n    }\n    \n  }\n\n  _updateToggleAllOption() {\n\n    const $allOptionsButToggleAll = this.$materialOptionsList.find('li').not('.select-toggle-all, .disabled, :hidden').find('[type=checkbox]');\n    const $checkedOptionsButToggleAll = $allOptionsButToggleAll.filter(':checked');\n    const isToggleAllChecked = this.$toggleAll.find('[type=checkbox]').is(':checked');\n\n    if ($checkedOptionsButToggleAll.length === $allOptionsButToggleAll.length && !isToggleAllChecked) {\n\n      this.$toggleAll.find('[type=checkbox]').prop('checked', true);\n    } else if ($checkedOptionsButToggleAll.length < $allOptionsButToggleAll.length && isToggleAllChecked) {\n\n      this.$toggleAll.find('[type=checkbox]').prop('checked', false);\n    }\n  }\n\n  _handleTabKey($materialSelect) {\n\n    this._handleEscKey($materialSelect);\n  }\n\n  _handleEnterWithShiftKey($materialSelect) {\n\n    if (!this.isMultiple) {\n\n      this._handleEnterKey($materialSelect);\n    } else {\n\n      this.$toggleAll.trigger('click');\n    }\n  }\n\n  _handleEnterKey($materialSelect) {\n\n    const $activeOption = this.$materialOptionsList.find('li.selected:not(.disabled)');\n\n    $activeOption.trigger('click').addClass('active');\n\n    this._removeKeyboardActiveClass();\n\n    if (!this.isMultiple) {\n\n      $materialSelect.trigger('close');\n    }\n  }\n\n  _handleArrowUpDownKey(keyCode) {\n\n    // eslint-disable-next-line object-curly-newline\n    const { $matchedMaterialOption, $activeOption } = this._getArrowMatchedActiveOptions(keyCode, false);\n\n    this._selectSingleOption($matchedMaterialOption);\n    this._removeKeyboardActiveClass();\n\n    if (!$matchedMaterialOption.find('input').is(':checked')) {\n\n      $matchedMaterialOption.removeClass(this.options.keyboardActiveClass);\n    }\n\n    if (!$activeOption.hasClass('selected') && !$activeOption.find('input').is(':checked') && this.isMultiple) {\n\n      $activeOption.removeClass('active', this.options.keyboardActiveClass);\n    }\n\n    $matchedMaterialOption.addClass(this.options.keyboardActiveClass);\n\n    if ($matchedMaterialOption.position()) {\n      this.$materialOptionsList.scrollTop(this.$materialOptionsList.scrollTop() + $matchedMaterialOption.position().top);\n    }\n  }\n\n  _handleClosedArrowUpDownKey(keyCode) {\n\n    // eslint-disable-next-line object-curly-newline\n    const { $matchedMaterialOption } = this._getArrowMatchedActiveOptions(keyCode, true);\n\n    $matchedMaterialOption.trigger('click').addClass('active');\n\n    this._updateDropdownScrollTop();\n    this._selectSingleOption($matchedMaterialOption);\n  }\n\n  _getArrowMatchedActiveOptions(keyCode, closedDropdown) {\n\n    const visible = closedDropdown ? '' : ':visible';\n    const $availableOptions = this.$materialOptionsList.find(`li${visible}`).not('.disabled, .select-toggle-all');\n\n    const $firstOption = $availableOptions.first();\n    const $lastOption = $availableOptions.last();\n    const anySelected = this.$materialOptionsList.find('li.selected').length > 0;\n\n    let $matchedMaterialOption = null;\n    let $activeOption = null;\n\n    const isArrowUp = keyCode === this.keyCodes.arrowUp;\n    if (isArrowUp) {\n\n      const $currentOption = anySelected ? this.$materialOptionsList.find('li.selected').first() : $lastOption;\n      let $prevOption = $currentOption.prev(`li${visible}:not(.disabled, .select-toggle-all)`);\n      $activeOption = $prevOption;\n\n      $availableOptions.each((key, el) => {\n        if ($(el).hasClass(this.options.keyboardActiveClass)) {\n          $prevOption = $availableOptions.eq(key - 1);\n          $activeOption = $availableOptions.eq(key);\n        }\n      });\n\n      $matchedMaterialOption = $currentOption.is($firstOption) || !anySelected ? $currentOption : $prevOption;\n    } else {\n\n      const $currentOption = anySelected ? this.$materialOptionsList.find('li.selected').first() : $firstOption;\n      let $nextOption = $currentOption.next(`li${visible}:not(.disabled, .select-toggle-all)`);\n      $activeOption = $nextOption;\n\n      $availableOptions.each((key, el) => {\n        if ($(el).hasClass(this.options.keyboardActiveClass)) {\n          $nextOption = $availableOptions.eq(key + 1);\n          $activeOption = $availableOptions.eq(key);\n        }\n      });\n\n      $matchedMaterialOption = $currentOption.is($lastOption) || !anySelected ? $currentOption : $nextOption;\n    }\n\n    return {\n      $matchedMaterialOption,\n      $activeOption\n    };\n  }\n\n  _handleHomeKey() {\n\n    this._selectBoundaryOption('first');\n  }\n\n  _handleEndKey() {\n\n    this._selectBoundaryOption('last');\n  }\n\n  _selectBoundaryOption(firstOrLast = '') {\n\n    const $boundaryOption = this.$materialOptionsList.find('li:visible').not('.disabled, .select-toggle-all')[firstOrLast]();\n\n    this._selectSingleOption($boundaryOption);\n\n    this._removeKeyboardActiveClass();\n\n    if (!$boundaryOption.find('input').is(':checked')) {\n\n      $boundaryOption.removeClass(this.options.keyboardActiveClass);\n    }\n\n    $boundaryOption.addClass(this.options.keyboardActiveClass);\n\n    if ($boundaryOption.position()) {\n      this.$materialOptionsList.scrollTop(this.$materialOptionsList.scrollTop() + $boundaryOption.position().top);\n    }\n  }\n\n  _handleEscKey($materialSelect) {\n\n    this._removeKeyboardActiveClass();\n    $materialSelect.trigger('close');\n  }\n\n  _handleLetterKey(e) {\n\n    this._removeKeyboardActiveClass();\n\n    if (this.isSearchable) {\n\n      const isLetter = e.which > 46 && e.which < 91;\n      const isNumber = e.which > 93 && e.which < 106;\n      const isBackspace = e.which === 8;\n\n      if (isLetter || isNumber) {\n        this.$searchInput.find('input').focus();\n      }\n      if (isBackspace) {\n        this.$searchInput.find('input').val('').focus();\n      }\n\n    } else {\n\n      let filterQueryString = '';\n      const letter = String.fromCharCode(e.which).toLowerCase();\n      const nonLetters = Object.keys(this.keyCodes).map((key) => this.keyCodes[key]);\n      const isLetterSearchable = letter && nonLetters.indexOf(e.which) === -1;\n\n      if (isLetterSearchable) {\n\n        filterQueryString += letter;\n\n        const $matchedMaterialOption = this.$materialOptionsList.find('li').filter((index, element) => $(element).text().toLowerCase().includes(filterQueryString)).first();\n\n        if (!this.isMultiple) {\n\n          this.$materialOptionsList.find('li').removeClass('active');\n        }\n\n        $matchedMaterialOption.addClass('active');\n        this._selectSingleOption($matchedMaterialOption);\n        this._updateDropdownScrollTop();\n      }\n    }\n  }\n\n  _removeKeyboardActiveClass() {\n\n    this.$materialOptionsList.find('li').removeClass(this.options.keyboardActiveClass);\n  }\n\n  _triggerChangeOnNativeSelect() {\n\n    const keyboardEvt = new KeyboardEvent('change', {\n      bubbles: true,\n      cancelable: true\n    });\n    this.$nativeSelect.get(0).dispatchEvent(keyboardEvt);\n  }\n\n  _selectSingleOption(newOption) {\n\n    this.$materialOptionsList.find('li.selected').removeClass('selected');\n\n    this._selectOption(newOption);\n  }\n\n  _updateDropdownScrollTop() {\n\n    const $preselected = this.$materialOptionsList.find('li.active').not('.disabled').first();\n    if ($preselected.length) {\n      this.$materialOptionsList.scrollTo($preselected);\n    } else {\n      this.$materialOptionsList.scrollTop(0);\n    }\n  }\n\n  _selectOption(newOption) {\n\n    const option = $(newOption);\n    option.addClass('selected');\n  }\n\n  _copyOptions(options) {\n\n    return $.extend({}, options);\n  }\n\n  _jQueryFallback(...$elements) {\n\n    let $lastElem = null;\n    for (let i = 0; i < $elements.length; i++) {\n\n      $lastElem = $elements[i];\n      if ($lastElem.length) {\n        return $lastElem;\n      }\n    }\n\n    return $lastElem;\n  }\n}\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 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 isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (e) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (f) { /* empty */ }\n  } return false;\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","'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","'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 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","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 $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.github.io/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n  values: function values(O) {\n    return $values(O);\n  }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n  return function (it) {\n    var O = toIndexedObject(it);\n    var keys = objectKeys(O);\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      key = keys[i++];\n      if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n        result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n      }\n    }\n    return result;\n  };\n};\n\nmodule.exports = {\n  // `Object.entries` method\n  // https://tc39.github.io/ecma262/#sec-object.entries\n  entries: createMethod(true),\n  // `Object.values` method\n  // https://tc39.github.io/ecma262/#sec-object.values\n  values: createMethod(false)\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","'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 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 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 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","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","jQuery(($) => {\n\n  class Forms {\n\n    constructor() {\n      this.inputSelector = `${['text', 'password', 'email', 'url', 'tel', 'number', 'search', 'search-md']\n        .map((selector) => `input[type=${selector}]`)\n        .join(', ')}, textarea`;\n      this.textAreaSelector = '.materialize-textarea';\n      this.$text = $('.md-textarea-auto');\n      this.$body = $('body');\n      this.$document = $(document);\n    }\n\n    init() {\n\n      if (this.$text.length) {\n        let observe;\n  \n        if (window.attachEvent) {\n          observe = function (element, event, handler) {\n            element.attachEvent(`on${event}`, handler);\n          };\n        } else {\n          observe = function (element, event, handler) {\n            element.addEventListener(event, handler, false);\n          };\n        }\n  \n        this.$text.each(function () {\n          const self = this;\n  \n          function resize() {\n            self.style.height = 'auto';\n            self.style.height = `${self.scrollHeight}px`;\n          }\n  \n          function delayedResize() {\n            window.setTimeout(resize, 0);\n          }\n  \n          observe(self, 'change', resize);\n          observe(self, 'cut', delayedResize);\n          observe(self, 'paste', delayedResize);\n          observe(self, 'drop', delayedResize);\n          observe(self, 'keydown', delayedResize);\n  \n          resize();\n        });\n      }\n\n      $(this.inputSelector).each((index, input) => {\n        const $this = $(input);\n        const isNotValid = input.validity.badInput;\n        this.updateTextFields($this);\n\n        if (isNotValid) {\n          this.toggleActiveClass($this, 'add');\n        }\n      });\n      \n      this.addOnFocusEvent();\n      this.addOnBlurEvent();\n      this.addOnChangeEvent();\n      this.addOnResetEvent();\n      this.appendHiddenDiv();\n      this.ChangeDateInputType();\n      this.makeActiveAutofocus();\n\n      $(this.textAreaSelector).each(this.textAreaAutoResize);\n      this.$body.on('keyup keydown', this.textAreaSelector, this.textAreaAutoResize);\n    }\n\n    makeActiveAutofocus() {\n\n      this.toggleActiveClass($('input[autofocus]'), 'add');\n    }\n\n    toggleActiveClass($this, action) {\n      let selectors;\n      action = `${action}Class`;\n      \n      if ($this.parent().hasClass('timepicker')) {\n        selectors = 'label';\n      } else {\n        selectors = 'label, i, .input-prefix';\n      }\n      $this.siblings(selectors)[action]('active');\n    }\n\n    addOnFocusEvent() {\n      this.$document.on('focus', this.inputSelector, (e) => {\n        this.toggleActiveClass($(e.target), 'add');\n      });\n    }\n\n    addOnBlurEvent() {\n      this.$document.on('blur', this.inputSelector, (e) => {\n        const $this = $(e.target);\n        const noValue = !$this.val();\n        const isValid = !e.target.validity.badInput;\n        const noPlaceholder = $this.attr('placeholder') === undefined;\n    \n        if (noValue && isValid && noPlaceholder) {\n          this.toggleActiveClass($this, 'remove');\n        } \n\n        if (!noValue && isValid && noPlaceholder) {\n          $this.siblings('i, .input-prefix').removeClass('active');\n        }\n\n        this.validateField($this);\n      });\n    }\n\n    addOnChangeEvent() {\n      this.$document.on('change', this.inputSelector, (e) => {\n        const $this = $(e.target);\n    \n        this.updateTextFields($this);\n        this.validateField($this);\n      });\n    }\n\n    addOnResetEvent() {\n      this.$document.on('reset', (e) => {\n        const $formReset = $(e.target);\n    \n        if ($formReset.is('form')) {\n          const $formInputs = $formReset.find(this.inputSelector);\n    \n          $formInputs\n            .removeClass('valid invalid')\n            .each((index, input) => {\n              const $this = $(input);\n              const noDefaultValue = !$this.val();\n              const noPlaceholder = !$this.attr('placeholder');\n    \n              if (noDefaultValue && noPlaceholder) {\n                this.toggleActiveClass($this, 'remove');\n              }\n            });\n    \n          $formReset.find('select.initialized').each((index, select) => {\n            const $select = $(select);\n            const $visibleInput = $select.siblings('input.select-dropdown');\n            const defaultValue = $select.children('[selected]').val();\n    \n            $select.val(defaultValue);\n            $visibleInput.val(defaultValue);\n          });\n        }\n      });\n    }\n\n    appendHiddenDiv() {\n      if (!$('.hiddendiv').first().length) {\n        const $hiddenDiv = $('<div class=\"hiddendiv common\"></div>');\n        this.$body.append($hiddenDiv);\n      }\n    }\n\n    updateTextFields($input) {\n\n      const hasValue = Boolean($input.val().length);\n      const hasPlaceholder = Boolean($input.attr('placeholder'));\n      const addOrRemove = hasValue || hasPlaceholder ? 'add' : 'remove';\n  \n      this.toggleActiveClass($input, addOrRemove);\n    }\n\n    validateField($input) {\n      if ($input.hasClass('validate')) {\n        const value = $input.val();\n        const noValue = !value.length;\n        const isValid = !$input[0].validity.badInput;\n  \n        if (noValue && isValid) {\n          $input.removeClass('valid').removeClass('invalid');\n        } else {\n          const valid = $input[0].validity.valid;\n          const length = Number($input.attr('length')) || 0;\n  \n          if (valid && (!length || length > value.length)) {\n            $input.removeClass('invalid').addClass('valid');\n          } else {\n            $input.removeClass('valid').addClass('invalid');\n          }\n        }\n      }\n    }\n\n    ChangeDateInputType() {\n      const $dateInputs = $('input[type=\"date\"]');\n    \n      $dateInputs.each((index, $item) => {\n        $item.type = 'text';\n      });\n    \n      $dateInputs.on('focus', $item => {\n        $item.target.type = 'date';\n      });\n    \n      $dateInputs.on('blur', $item => {\n        $item.target.type = 'text';\n        if($item.target.value.length === 0) {\n          $(`label[for=${$item.target.id}]`).removeClass('active');\n        }\n      });    \n    }\n  \n    textAreaAutoResize() {\n      const $textarea = $(this);\n  \n      if ($textarea.val().length) {\n        const $hiddenDiv = $('.hiddendiv');\n        const fontFamily = $textarea.css('font-family');\n        const fontSize = $textarea.css('font-size');\n  \n        if (fontSize) {\n          $hiddenDiv.css('font-size', fontSize);\n        }\n  \n        if (fontFamily) {\n          $hiddenDiv.css('font-family', fontFamily);\n        }\n  \n        if ($textarea.attr('wrap') === 'off') {\n          $hiddenDiv.css('overflow-wrap', 'normal').css('white-space', 'pre');\n        }\n  \n        $hiddenDiv.text(`${$textarea.val()}\\n`);\n        const content = $hiddenDiv.html().replace(/\\n/g, '<br>');\n        $hiddenDiv.html(content);\n  \n        // When textarea is hidden, width goes crazy.\n        // Approximate with half of window size\n        $hiddenDiv.css('width', $textarea.is(':visible') ? $textarea.width() : $(window).width() / 2);\n        $textarea.css('height', $hiddenDiv.height());\n      }\n    }    \n  }\n\n  //auto init Forms\n  const forms = new Forms();\n  forms.init();\n\n});\n","jQuery(function ($) {\n\n  const SCROLLING_NAVBAR_OFFSET_TOP = 50;\n\n  $(window).on('scroll', () => {\n\n    const $navbar = $('.navbar');\n    \n    if (!$navbar.length) return;\n\n    $('.scrolling-navbar')[$navbar.offset().top > SCROLLING_NAVBAR_OFFSET_TOP ? 'addClass' : 'removeClass']('top-nav-collapse');\n  });\n});\n","jQuery(($) => {\n  $.fn.mdbTreeview = function () {\n\n    const $this = $(this);\n\n    if ($this.hasClass('treeview')) {\n      treeviewToggle($this);\n    }\n\n    if ($this.hasClass('treeview-animated')) {\n      treeviewAnimated($this);\n    }\n\n    if ($this.hasClass('treeview-colorful')) {\n      treeviewColorful($this);\n    }\n  };\n\n  function treeviewToggle($this) {\n    const $toggler = $this.find('.rotate');\n\n    $toggler.each(function () {\n      const $this = $(this);\n\n      $this.off('click');\n      $this.on('click', function () {\n        const $this = $(this);\n\n        $this.siblings('.nested').toggleClass('active');\n        $this.toggleClass('down');\n      });\n    });\n  }\n\n  function treeviewAnimated($this) {\n    const $elements = $this.find('.treeview-animated-element');\n    const $closed = $this.find('.closed');\n\n    $this.find('.nested').hide();\n\n    $closed.off('click');\n    $closed.on('click', function () {\n      const $this = $(this);\n      const $target = $this.siblings('.nested');\n      const $pointer = $this.children('.fa-angle-right');\n\n      $this.toggleClass('open');\n      $pointer.toggleClass('down');\n\n      if (!$target.hasClass('active')) {\n        $target.addClass('active').slideDown();\n      } else {\n        $target.removeClass('active').slideUp();\n      }\n    });\n\n    $elements.off('click');\n    $elements.on('click', function () {\n      const $this = $(this);\n\n      if ($this.hasClass('opened')) {\n        $this.removeClass('opened');\n      } else {\n        $elements.removeClass('opened');\n        $this.addClass('opened');\n      }\n    });\n  }\n\n  function treeviewColorful($this) {\n    const $elements = $this.find('.treeview-colorful-element');\n    const $header = $this.find('.treeview-colorful-items-header');\n\n    $this.find('.nested').hide();\n\n    $header.off('click');\n    $header.on('click', function () {\n      const $this = $(this);\n      const $target = $this.siblings('.nested');\n      const $pointerPlus = $this.children('.fa-plus-circle');\n      const $pointerMinus = $this.children('.fa-minus-circle');\n\n      $this.toggleClass('open');\n      $pointerPlus.removeClass('fa-plus-circle');\n      $pointerPlus.addClass('fa-minus-circle');\n      $pointerMinus.removeClass('fa-minus-circle');\n      $pointerMinus.addClass('fa-plus-circle');\n\n      if (!$target.hasClass('active')) {\n        $target.addClass('active').slideDown();\n      } else {\n        $target.removeClass('active').slideUp();\n      }\n    });\n\n    $elements.off('click');\n    $elements.on('click', function () {\n      const $this = $(this);\n\n      if ($this.hasClass('opened')) {\n        $elements.removeClass('opened');\n      } else {\n        $elements.removeClass('opened');\n        $this.addClass('opened');\n      }\n    });\n  }\n});\n","jQuery($ => {\n\n  class WOW {\n    init() {\n      $('.wow').wow();\n    }\n  }\n\n  class MDBWow {\n    constructor($wowElement, customization) {\n      this.$wowElement = $wowElement;\n      this.customization = customization;\n      this.animated = true;\n      this.options = this.assignElementCustomization();\n    }\n\n    init() {\n      $(window).scroll(() => {\n        if (this.animated) {\n          this.hide();\n        } else {\n          this.mdbWow();\n        }\n      });\n\n      this.appear();\n    }\n\n    assignElementCustomization() {\n      return {\n        animationName: this.$wowElement.css('animation-name'),\n        offset: 100,\n        iteration: this.fallback()\n          .or(this.$wowElement.data('wow-iteration'))\n          .or(1)\n          .value(),\n        duration: this.fallback()\n          .or(this.$wowElement.data('wow-duration'))\n          .or(1000)\n          .value(),\n        delay: this.fallback()\n          .or(this.$wowElement.data('wow-delay'))\n          .or(0)\n          .value()\n      };\n    }\n\n    mdbWow() {\n      if (this.$wowElement.css('visibility') === 'visible') {\n        return;\n      }\n\n      if (this.shouldElementBeVisible(true)) {\n        setTimeout(() => this.$wowElement.removeClass('animated'), this.countRemoveTime());\n        this.appear();\n      }\n    }\n\n    appear() {\n      this.$wowElement.addClass('animated');\n      this.$wowElement.css({\n        visibility: 'visible',\n        'animation-name': this.options.animationName,\n        'animation-iteration-count': this.options.iteration,\n        'animation-duration': this.options.duration,\n        'animation-delay': this.options.delay\n      });\n    }\n\n    hide() {\n      if (this.shouldElementBeVisible(false)) {\n        this.$wowElement.removeClass('animated');\n        this.$wowElement.css({\n          'animation-name': 'none',\n          visibility: 'hidden'\n        });\n      } else {\n        setTimeout(() => {\n          this.$wowElement.removeClass('animated');\n        }, this.countRemoveTime());\n      }\n      this.mdbWow();\n      this.animated = !this.animated;\n    }\n\n    shouldElementBeVisible(state) {\n      const thisElementOffset = this.getOffset(this.$wowElement[0]);\n      const thisElementHeight = this.$wowElement.height();\n      const documentHeight = $(document).height();\n      const windowHeight = window.innerHeight;\n      const scroll = window.scrollY;\n\n      const isElementTopVisible = windowHeight + scroll - this.options.offset > thisElementOffset;\n      const isElementBottomVisible = windowHeight + scroll - this.options.offset > thisElementOffset + thisElementHeight;\n      const isScrolledToTop = scroll < thisElementOffset;\n      const isScrolledToBottom = scroll < thisElementOffset + thisElementHeight;\n      const isDocumentHeightEqual = windowHeight + scroll === documentHeight;\n      const isOffsetHigherThanDocument = thisElementOffset + this.options.offset > documentHeight;\n      const isElementBottomHidden = windowHeight + scroll - this.options.offset < thisElementOffset;\n      const isScrolledOverTop = scroll > thisElementOffset + this.options.offset;\n      const isNotScrolledToTop = scroll < thisElementOffset + this.options.offset;\n      const isScrolledOverElement = thisElementOffset + thisElementHeight > documentHeight - this.options.offset;\n\n      let returnLogic = false;\n\n      if (state) {\n        returnLogic = isElementTopVisible && isScrolledToTop ||\n                      isElementBottomVisible && isScrolledToBottom ||\n                      isDocumentHeightEqual && isOffsetHigherThanDocument;\n      } else {\n        returnLogic = isElementTopVisible && isScrolledOverTop ||\n                      isElementBottomHidden && isNotScrolledToTop ||\n                      isScrolledOverElement;\n      }\n      return returnLogic;\n    }\n\n    countRemoveTime() {\n      const defaultAnimationTime = this.$wowElement.css('animation-duration').slice(0, -1) * 1000;\n      let removeTime = 0;\n\n      if (this.options.duration) {\n        removeTime = defaultAnimationTime + this.checkOptionsStringFormat(this.options.duration);\n      }\n      if (this.options.delay) {\n        removeTime += this.checkOptionsStringFormat(this.options.delay);\n      }\n      return removeTime;\n    }\n\n    checkOptionsStringFormat(element) {\n      let valueToReturn;\n\n      if (element.toString().slice(-1) === 's') {\n        valueToReturn =  element.toString().slice(0, -1);\n      } else if (!isNaN(element.toString().slice(-1))) {\n        valueToReturn = element;\n      } else {\n        return console.log('Not supported animation customization format.');\n      }\n\n      return valueToReturn;\n    }\n\n    getOffset(element) {\n      const box = element.getBoundingClientRect();\n      const body = document.body;\n      const docEl = document.documentElement;\n      const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\n      const clientTop = docEl.clientTop || body.clientTop || 0;\n      const top = box.top + scrollTop - clientTop;\n\n      return Math.round(top);\n    }\n\n    fallback() {\n      return {\n        _value: undefined,\n        or(value) {\n          if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\n            this._value = value;\n          }\n          return this;\n        },\n        value() {\n          return this._value;\n        }\n      };\n    }\n  }\n\n  $.fn.wow = function (options) {\n    this.each(function () {\n      const mdbWow = new MDBWow($(this), options);\n      mdbWow.init();\n    });\n  };\n\n  window.WOW = WOW;\n\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n  return [\n    // `String.prototype.search` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.search\n    function search(regexp) {\n      var O = requireObjectCoercible(this);\n      var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n      return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n    },\n    // `RegExp.prototype[@@search]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n    function (regexp) {\n      var res = maybeCallNative(nativeSearch, regexp, this);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n\n      var previousLastIndex = rx.lastIndex;\n      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n      var result = regExpExec(rx, S);\n      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n      return result === null ? -1 : result.index;\n    }\n  ];\n});\n","// `SameValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-samevalue\nmodule.exports = Object.is || function is(x, y) {\n  // eslint-disable-next-line no-self-compare\n  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","jQuery(($) => {\n  const isTouchDevice = 'ontouchstart' in document.documentElement;\n\n  const toggleOpen = (btn, open) => {\n    if (open && !btn.hasClass('active') || !open && btn.hasClass('active')) {\n      btn[open ? 'addClass' : 'removeClass']('active');\n      const btnList = document.querySelectorAll('ul .btn-floating');\n      btnList.forEach((el) => el.classList[open ? 'add' : 'remove']('shown'));\n    }\n  };\n\n  const handleClick = btn => {\n    if (btn.hasClass('active')) {\n      toggleOpen(btn, false);\n    } else {\n      toggleOpen(btn, true);\n    }\n  };\n\n  const $btn = $('.fixed-action-btn:not(.smooth-scroll) > .btn-floating');\n  $btn.on('mouseenter', e => {\n    if (!isTouchDevice) {\n      toggleOpen($(e.currentTarget).parent(), true);\n    }\n  });\n  $btn.parent().on('mouseleave', e => toggleOpen($(e.currentTarget), false));\n  $btn.on('click', e => {\n    e.preventDefault();\n    handleClick($(e.currentTarget).parent());\n  });\n\n  $.fn.extend({\n    openFAB() {\n      toggleOpen($(this), true);\n    },\n    closeFAB() {\n      toggleOpen($(this), false);\n    }\n  });\n});\n\n","jQuery(function ($) {\n\n  $(document).on('click.card', '.card', function (e) {\n\n    const $this = $(this);\n    const $reveal = $this.find('.card-reveal');\n\n    if ($reveal.length) {\n\n      const $clickedElem = $(e.target);\n      const isTitleClicked = $clickedElem.is('.card-reveal .card-title');\n      const isTitleIconClicked = $clickedElem.is('.card-reveal .card-title i');\n      const isActivatorClicked = $clickedElem.is('.card .activator');\n      const isActivatorIconClicked = $clickedElem.is('.card .activator i');\n\n      if (isTitleClicked || isTitleIconClicked) {\n        takeRevealDown($reveal);\n      } else if (isActivatorClicked || isActivatorIconClicked) {\n        takeRevealUp($reveal);\n      }\n    }\n  });\n\n  const takeRevealUp = (revealElem) => {\n\n    revealElem.css({\n      display: 'block'\n    }).velocity({\n      translateY: '-100%'\n    }, {\n      duration: 300,\n      queue: false,\n      easing: 'easeInOutQuad'\n    });\n  };\n\n  const takeRevealDown = (revealElem) => {\n\n    revealElem.velocity({\n      translateY: 0\n    }, {\n      duration: 225,\n      queue: false,\n      easing: 'easeInOutQuad',\n      complete: function complete() {\n        revealElem.css({\n          display: 'none'\n        });\n      }\n    });\n  };\n\n  $('.rotate-btn').on('click', function () {\n\n    $(this).closest('.card').toggleClass('flipped');\n\n  });\n\n  $(window).on('load', function () {\n\n    const $rotatingCards = $('.card-rotating');\n    $rotatingCards.each(function () {\n      const $this = $(this);\n\n      const $cardWrapper = $this.parent();\n      const $front = $this.find('.front');\n      const $back = $this.find('.back');\n      const $frontHeight = $this.find('.front').outerHeight();\n      const $backHeight = $this.find('.back').outerHeight();\n\n      if ($frontHeight > $backHeight) $($cardWrapper, $back).height($frontHeight);\n      else if ($frontHeight < $backHeight) $($cardWrapper, $front).height($backHeight);\n      else $($cardWrapper).height($backHeight);\n    });\n\n  });\n\n  $('.card-share > a').on('click', function (e) {\n\n    e.preventDefault();\n\n    $(this)\n      .toggleClass('share-expanded')\n      .parent()\n      .find('div')\n      .toggleClass('social-reveal-active');\n  });\n\n  $('.map-card').on('click', function () {\n    $(this).find('.card-body').toggleClass('closed');\n  });\n\n});\n","jQuery(($) => {\n\n  $.fn.characterCounter = function () {\n\n    return this.each(function () {\n\n      const $this = $(this);\n      const hasLengthAttribute = $this.attr('length') !== undefined;\n\n      if (hasLengthAttribute) {\n\n        $this.on('input focus', updateCounter);\n        $this.on('blur', removeCounterElement);\n\n        addCounterElement($this);\n      }\n    });\n  };\n\n  function updateCounter() {\n\n    const $this = $(this);\n    const maxLength = Number($this.attr('length'));\n    const actualLength = Number($this.val().length);\n    const isValidLength = actualLength <= maxLength;\n\n    $this.parent().find('span[class=\"character-counter\"]')\n      .html(`${actualLength}/${maxLength}`);\n\n    addInputStyle(isValidLength, $this);\n  }\n\n  function addCounterElement($input) {\n\n    const $counterElement = $('<span/>')\n      .addClass('character-counter')\n      .css('float', 'right')\n      .css('font-size', '12px')\n      .css('height', 1);\n\n    $input.parent().append($counterElement);\n  }\n\n  function removeCounterElement() {\n\n    $(this).parent().find('span[class=\"character-counter\"]').html('');\n  }\n\n  function addInputStyle(isValidLength, $input) {\n\n    const inputHasInvalidClass = $input.hasClass('invalid');\n    if (isValidLength && inputHasInvalidClass) {\n\n      $input.removeClass('invalid');\n    } else if (!isValidLength && !inputHasInvalidClass) {\n\n      $input.removeClass('valid');\n      $input.addClass('invalid');\n    }\n  }\n\n  $(document).ready(() => {\n\n    $('input, textarea').characterCounter();\n  });\n});\n","jQuery(($) => {\n\n  $.fn.collapsible = function (options) {\n\n    const defaults = {\n      accordion: undefined\n    };\n\n    options = $.extend(defaults, options);\n\n    return this.each(function () {\n\n      const $this = $(this);\n\n      const $panelHeaders = $this.find('> li > .collapsible-header');\n\n      const collapsibleType = $this.data('collapsible');\n\n      $this.off('click.collapse', '.collapsible-header');\n      $panelHeaders.off('click.collapse');\n\n\n      if (options.accordion || collapsibleType === 'accordion' || collapsibleType === undefined) {\n\n        $panelHeaders.on('click.collapse', (e) => {\n\n          let element = $(e.target);\n\n          if (isChildOfPanelHeader(element)) {\n\n            element = getPanelHeader(element);\n          }\n\n          element.toggleClass('active');\n          accordionOpen($this, element);\n        });\n\n        accordionOpen($this, $panelHeaders.filter('.active').first());\n      } else {\n\n        $panelHeaders.each(function () {\n\n          $(this).on('click.collapse', (e) => {\n\n            let element = $(e.target);\n            if (isChildOfPanelHeader(element)) {\n\n              element = getPanelHeader(element);\n            }\n            element.toggleClass('active');\n            expandableOpen(element);\n          });\n\n          if ($(this).hasClass('active')) {\n\n            expandableOpen($(this));\n          }\n\n        });\n      }\n    });\n  };\n\n  function accordionOpen($collapsible, object) {\n\n    const $panelHeaders = $collapsible.find('> li > .collapsible-header');\n\n    expandableOpen(object);\n\n    $panelHeaders.not(object)\n      .removeClass('active')\n      .parent()\n      .removeClass('active')\n      .children('.collapsible-body')\n      .stop(true, false)\n      .slideUp({\n        duration: 350,\n        easing: 'easeOutQuart',\n        queue: false,\n        complete() {\n          $(this).css('height', '');\n        }\n      });\n\n  }\n\n  function expandableOpen(object) {\n\n    if (object.hasClass('active')) {\n      object.parent().addClass('active');\n    } else {\n      object.parent().removeClass('active');\n    }\n\n    if (object.parent().hasClass('active')) {\n      object.siblings('.collapsible-body').stop(true, false).slideDown({\n        duration: 350,\n        easing: 'easeOutQuart',\n        queue: false,\n        complete() {\n          $(this).css('height', '');\n        }\n      });\n    } else {\n      object.siblings('.collapsible-body').stop(true, false).slideUp({\n        duration: 350,\n        easing: 'easeOutQuart',\n        queue: false,\n        complete() {\n          $(this).css('height', '');\n        }\n      });\n    }\n  }\n\n  function isChildOfPanelHeader(object) {\n\n    const $panelHeader = getPanelHeader(object);\n    return $panelHeader.length > 0;\n  }\n\n  function getPanelHeader(object) {\n\n    return object.closest('li > .collapsible-header');\n  }\n\n  $('.collapsible').collapsible();\n\n});\n","jQuery(($) => {\n\n  $(document).on('change', '.file-field input[type=\"file\"]',  function () {\n\n    const $this = $(this);\n    console.log($this);\n    const $fileField = $this.closest('.file-field');\n    const $pathInput = $fileField.find('input.file-path');\n    const files = $this.get(0).files;\n    let fileNames = [];\n\n    if (Array.isArray(files)) {\n      fileNames = files.map(file => file.name);\n    } else {\n      fileNames = Object.values(files).map(file => file.name);\n    }\n    $pathInput.val(fileNames.join(', '));\n    $pathInput.trigger('change');\n  });\n});\n","(($) => {\n\n  class MdbAutocomplete {\n\n    constructor(input, options) {\n\n      this.defaults = {\n        data: {},\n        dataColor: '',\n        closeColor: '#4285f4',\n        closeBlurColor: '#ced4da',\n        inputFocus: '1px solid #4285f4',\n        inputBlur: '1px solid #ced4da',\n        inputFocusShadow: '0 1px 0 0 #4285f4',\n        inputBlurShadow: '',\n        visibleOptions: 5\n      };\n\n      this.enterCharCode = 13;\n      this.homeCharCode = 36;\n      this.endCharCode = 35;\n      this.arrowUpCharCode = 38;\n      this.arrowDownCharCode = 40;\n      this.count = -1;\n      this.nextScrollHeight = -45;\n      this.$input = input;\n      this.options = this.assignOptions(options);\n      this.$clearButton = this.$input.next('.mdb-autocomplete-clear');\n      this.$autocompleteWrap = $('<ul class=\"mdb-autocomplete-wrap\"></ul>');\n    }\n\n    init() {\n      \n      this.handleEvents();\n    }\n\n    handleEvents() {\n\n      this.setData();\n      this.inputFocus();\n      this.inputBlur();\n      this.inputKeyupData();\n      this.inputLiClick();\n      this.clearAutocomplete();\n      this.setAutocompleteWrapHeight();\n    }\n\n    assignOptions(options) {\n\n      return $.extend({}, this.defaults, options);\n    }\n\n    setAutocompleteWrapHeight() {\n      this.$autocompleteWrap.css('max-height', `${this.options.visibleOptions * 45}px`);\n    }\n\n    setData() {\n\n      if (Object.keys(this.options.data).length) {\n        this.$autocompleteWrap.insertAfter(this.$input);\n      }\n    }\n\n    inputFocus() {\n\n      this.$input.on('focus', () => {\n\n        this.changeSVGcolors();\n        this.$input.css('border-bottom', this.options.inputFocus);\n        this.$input.css('box-shadow', this.options.inputFocusShadow);\n      });\n    }\n\n    inputBlur() {\n\n      this.$input.on('blur', () => {\n\n        this.$input.css('border-bottom', this.options.inputBlur);\n        this.$input.css('box-shadow', this.options.inputBlurShadow);\n      });\n    }\n\n    inputKeyupData() {\n\n      this.$input.on('keyup', e => {\n\n        if (e.which === this.enterCharCode) {\n          if (!this.options.data.includes(this.$input.val())) {\n            this.options.data.push(this.$input.val());\n          }\n          this.$autocompleteWrap.find('.selected').trigger('click');\n          this.$autocompleteWrap.empty();\n          this.inputBlur();\n          this.count = -1;\n          this.nextScrollHeight = -45;\n          return this.count;\n        }\n\n        const $inputValue = this.$input.val();\n\n        this.$autocompleteWrap.empty();\n\n        if ($inputValue.length) {\n\n          this.appendOptions(this.options.data, $inputValue);\n\n          const $ulList = this.$autocompleteWrap;\n          const $ulItems = this.$autocompleteWrap.find('li');\n          const nextItemHeight = $ulItems.eq(this.count).outerHeight();\n          const previousItemHeight = $ulItems.eq(this.count - 1).outerHeight();\n\n          if (e.which === this.homeCharCode) {\n\n            this.homeHandler($ulList, $ulItems);\n          }\n\n          if (e.which === this.endCharCode) {\n\n            this.endHandler($ulList, $ulItems);\n          }\n\n          if (e.which === this.arrowDownCharCode) {\n\n            this.arrowDownHandler($ulList, $ulItems, nextItemHeight);\n          } else if (e.which === this.arrowUpCharCode) {\n\n            this.arrowUpHandler($ulList, $ulItems, nextItemHeight, previousItemHeight);\n          }\n\n\n          if ($inputValue.length === 0) {\n\n            this.$clearButton.css('visibility', 'hidden');\n          } else {\n\n            this.$clearButton.css('visibility', 'visible');\n          }\n\n          this.$autocompleteWrap.children().css('color', this.options.dataColor);\n        } else {\n          this.$clearButton.css('visibility', 'hidden');\n        }\n      });\n    }\n\n    endHandler($ulList, $ulItems) {\n\n      this.count = $ulItems.length - 1;\n      this.nextScrollHeight = ($ulItems.length * 45 - 45);\n      $ulList.scrollTop(($ulItems.length) * 45);\n      $ulItems.eq(-1).addClass('selected');\n    }\n\n    homeHandler($ulList, $ulItems) {\n      this.count = 0;\n      this.nextScrollHeight = -45;\n      $ulList.scrollTop(0);\n      $ulItems.eq(0).addClass('selected');\n    }\n\n    arrowDownHandler($ulList, $ulItems, nextItemHeight) {\n\n      if (this.count > $ulItems.length - 2) {\n\n        this.count = -1;\n        $ulItems.scrollTop(0);\n        this.nextScrollHeight = -45;\n        return;\n      } else {\n\n        this.count++;\n      }\n\n      this.nextScrollHeight += nextItemHeight;\n      $ulList.scrollTop(this.nextScrollHeight);\n      $ulItems.eq(this.count).addClass('selected');\n    }\n\n    arrowUpHandler($ulList, $ulItems, nextItemHeight, previousItemHeight) {\n\n      if (this.count < 1) {\n        this.count = $ulItems.length;\n        $ulList.scrollTop($ulList.prop('scrollHeight'));\n        this.nextScrollHeight = $ulList.prop('scrollHeight') - nextItemHeight;\n      } else {\n\n        this.count--;\n      }\n      this.nextScrollHeight -= previousItemHeight;\n      $ulList.scrollTop(this.nextScrollHeight);\n      $ulItems.eq(this.count).addClass('selected');\n    }\n\n    appendOptions(data, $inputValue) {\n\n      for (const item in data) {\n\n        if (data[item].toLowerCase().indexOf($inputValue.toLowerCase()) !== -1) {\n\n          const option = $(`<li>${data[item]}</li>`);\n\n          this.$autocompleteWrap.append(option);\n        }\n      }\n    }\n\n    inputLiClick() {\n\n      this.$autocompleteWrap.on('click', 'li', e => {\n        e.preventDefault();\n\n        this.$input.val($(e.target).text());\n        this.$autocompleteWrap.empty();\n      });\n    }\n\n    clearAutocomplete() {\n\n      this.$clearButton.on('click', e => {\n        e.preventDefault();\n\n        this.count = -1;\n        this.nextScrollHeight = -45;\n        const $this = $(e.currentTarget);\n\n        $this.parent().find('.mdb-autocomplete').val('');\n        $this.css('visibility', 'hidden');\n        this.$autocompleteWrap.empty();\n        $this.parent().find('label').removeClass('active');\n      });\n    }\n\n    changeSVGcolors() {\n\n      if (this.$input.hasClass('mdb-autocomplete')) {\n\n        this.$input.on('keyup', e => {\n\n          this.fillSVG(e, this.options.closeColor);\n        });\n\n        this.$input.on('blur', e => {\n\n          this.fillSVG(e, this.options.closeBlurColor);\n        });\n      }\n    }\n\n    fillSVG(e, color) {\n      e.preventDefault();\n\n      $(e.target).parent().find('.mdb-autocomplete-clear').find('svg').css('fill', color);\n    }\n  }\n\n  $.fn.mdbAutocomplete = function (options) {\n    return this.each(function () {\n      const mdbAutocomplete = new MdbAutocomplete($(this), options);\n      mdbAutocomplete.init();\n    });\n  };\n\n})(jQuery);\n","let loader_path = './dev/dist/mdb-addons/preloader.html';\nlet windowLoaded = false;\n\n$(window).on('load', function () {\n\n  windowLoaded = true;\n});\n\njQuery(function ($) { \n  $('body').attr('aria-busy', true);\n\n  $('#preloader-markup').load(loader_path, function () {\n\n    if (windowLoaded) {\n    \n      preloaderFading();\n    } else {\n    \n      $(window).on('load', function () {  \n\n       preloaderFading(); \n      });\n    }\n  });\n});\n\nfunction preloaderFading() {\n  $('#mdb-preloader').fadeOut('slow');\n  $('body').removeAttr('aria-busy');\n};\n","jQuery(($) => {\n\n  const rangeWrapper = '.range-field';\n  const rangeType    = 'input[type=range]:not(.custom-range):not(.multi-range)';\n  const thumbHtml    = '<span class=\"thumb\" style=\"margin-left: 7px\"><span class=\"value\"></span></span>';\n  let rangeMousedown = false;\n\n  function addThumb() {\n    const $thumb = $(thumbHtml);\n    $(rangeType).after($thumb);\n  }\n\n  $(document).on('change', rangeType, function () {\n    const $thumb = $(this);\n    const $thumbValue = $thumb.siblings('.thumb').find('.value');\n    $thumbValue.html($thumb.val());\n  });\n\n\n  $(document).on('mousedown touchstart contextmenu', rangeType, function (e) {\n    const $this = $(this);\n    const noThumb = !$this.siblings('.thumb').length;\n    const isRightClick = e.type === 'contextmenu';\n\n    if (noThumb) {\n      addThumb();\n    }\n\n    // this must be here. if you define $thumb before it's create $thumb be empty element.\n    const $thumb = $this.siblings('.thumb');\n\n    // prevent show thumb when mousemove after right click;\n    if (isRightClick) {\n      rangeMousedown = false;\n    } else {\n      rangeMousedown = true;\n    }\n\n    $this.addClass('active');\n\n    if (!$thumb.hasClass('active')) {\n      showThumb($thumb);\n    }\n\n    updateThumbPosition($(this), $thumb);\n\n    // Set indicator value\n    $thumb.find('.value').html($this.val());\n\n  });\n\n  $(document).on('mouseup touchend', rangeWrapper, function () {\n    const $thumb = $(this).children('.thumb');\n\n    rangeMousedown = false;\n\n    if ($thumb.hasClass('active')) {\n      hideThumb($thumb);\n    }\n\n    $thumb.removeClass('active');\n\n  });\n\n  $(document).on('input mousemove touchmove', rangeWrapper, function () {\n    const $thumb = $(this).children('.thumb');\n\n    if (rangeMousedown) {\n      if (!$thumb.hasClass('active')) {\n        showThumb($thumb);\n      }\n\n      updateThumbPosition($(this).children(rangeType), $thumb);\n\n      $thumb.find('.value').html($thumb.siblings(rangeType).val());\n    }\n  });\n\n  $(document).on('mouseout touchleave', rangeWrapper, function () {\n    if (!rangeMousedown) {\n      const $thumb = $(this).children('.thumb');\n\n      if ($thumb.hasClass('active')) {\n        hideThumb($thumb);\n      }\n\n      $thumb.removeClass('active');\n    }\n  });\n\n  function updateThumbPosition($this, $thumb) {\n    const minValue = $this.attr('min');\n    const maxValue = $this.attr('max');\n    const widthThumb = $this.width() - 13.5;\n    const oneStep = widthThumb / (maxValue - minValue);\n    let leftPosition = oneStep * $this.val() - oneStep * minValue;\n\n    if (leftPosition < 0) {\n      leftPosition = 0;\n    } else if (leftPosition > widthThumb) {\n      leftPosition = widthThumb;\n    }\n\n    $thumb.addClass('active').css('left', leftPosition);\n  }\n\n  function thumbAnimation($thumb, tHeight, tWidth, tTop, tMarginLeft, tDuration, tEasing) {\n    $thumb.velocity({\n      height: tHeight,\n      width: tWidth,\n      top: tTop,\n      marginLeft: tMarginLeft\n    },\n    {\n      duration: tDuration,\n      easing: tEasing ? tEasing : 'swing'\n    });\n  }\n\n  function showThumb($thumb) {\n    thumbAnimation($thumb, '30px', '30px', '-27px', '-7px', 200, 'easeOutExpo');\n  }\n\n  function hideThumb($thumb) {\n    thumbAnimation($thumb, '0', '0', '10px', '7px', 200);\n  }\n});\n","jQuery(($) => {\n\n  class SideNav {\n\n    constructor(element, options) {\n\n      this.settings = {\n        menuLeftMinBorder: 0.3,\n        menuLeftMaxBorder: -0.5,\n        menuRightMinBorder: -0.3,\n        menuRightMaxBorder: 0.5,\n        menuVelocityOffset: 10\n      };\n\n      this.defaults = {\n        menuWidth: 240,\n        edge: 'left',\n        closeOnClick: false,\n        breakpoint: 1440,\n        timeDurationOpen: 500,\n        timeDurationClose: 500,\n        timeDurationOverlayOpen: 200,\n        timeDurationOverlayClose: 200,\n        easingOpen: 'easeInOutQuad',\n        easingClose: 'easeInOutQuad',\n        showOverlay: true,\n        showCloseButton: false,\n        slim: false,\n        onOpen: null,\n        onClose: null\n      };\n\n      this.$element = element;\n\n      this.$elementCloned = element.clone().css({\n        display: 'inline-block',\n        lineHeight: '24px'\n      }).html('<i class=\"fas fa-times\"></i>');\n\n      this.options = this.assignOptions(options);\n\n      this.menuOut = false;\n      this.lastTouchVelocity = {\n        x: {\n          startPosition: 0,\n          startTime: 0,\n          endPosition: 0,\n          endTime: 0\n        }\n      };\n\n      this.$body = $('body');\n      this.$menu = $(`#${this.$element.attr('data-activates')}`);\n      this.$sidenavOverlay = $('#sidenav-overlay');\n      this.$dragTarget = $('<div class=\"drag-target\"></div>');\n      this.$body.append(this.$dragTarget);\n\n    }\n\n    assignOptions(newOptions) {\n\n      return $.extend({}, this.defaults, newOptions);\n    }\n\n    init() {\n      this.setMenuWidth();\n      this.setMenuTranslation();\n      this.closeOnClick();\n      this.openOnClick();\n      this.bindTouchEvents();\n      this.showCloseButton();\n      this.inputOnClick();\n      if (this.options.slim === true) {\n        this.handleSlim();\n      }\n      this.onOpen();\n      this.onClose();\n      if(this.options[0] + this.options[1] + this.options[2] + this.options[3] === 'show' && this.menuOut === false) {\n        this.$element.trigger('click')\n      }\n      if(this.options[0] + this.options[1] + this.options[2] + this.options[3] === 'hide' && this.menuOut === true) {\n        this.removeMenu();\n      }\n    }\n\n    setMenuWidth() {\n\n      const $sidenavBg = $(`#${this.$menu.attr('id')}`).find('> .sidenav-bg');\n\n      this.$menu.css('width', this.options.menuWidth);\n      $sidenavBg.css('width', this.options.menuWidth);\n\n    }\n\n    setMenuTranslation() {\n\n      if (this.options.edge === 'left') {\n\n        this.$menu.css('transform', 'translateX(-100%)');\n        this.$dragTarget.css({\n          left: 0\n        });\n\n      } else {\n\n        this.$menu.addClass('right-aligned').css('transform', 'translateX(100%)');\n        this.$dragTarget.css({\n          right: 0\n        });\n      }\n\n      if (!this.$menu.hasClass('fixed')) {\n        return;\n      }\n\n      if (window.innerWidth > this.options.breakpoint) {\n\n        this.menuOut = true; \n        this.$menu.css('transform', 'translateX(0)');\n      } else {\n\n        this.menuOut = false; \n      }\n\n      this.$menu.find('input[type=text]').on('touchstart', () => {\n\n        this.$menu.addClass('transform-fix-input');\n      });\n\n      $(window).on('resize', () => {\n\n        $('.fixed-sn main, .fixed-sn footer').css('padding-left', this.options.menuWidth);\n        if (window.innerWidth > this.options.breakpoint) {\n          \n          if (this.$sidenavOverlay.length) {\n            \n            this.removeMenu(true);\n            $('.fixed-sn main, .fixed-sn footer').css('padding-left', this.options.menuWidth);\n          } else {\n\n            if(this.menuOut === false) { $(this).trigger('sidenav_open', [this.options.onOpen]) }\n\n            this.$menu.css('transform', 'translateX(0%)');\n            this.menuOut = true; \n          }\n        } else if (this.menuOut === false) {\n          \n          const xValue = this.options.edge === 'left' ? '-100' : '100';\n          this.$menu.css('transform', `translateX(${xValue}%)`);\n          this.removeMenu(true);\n        } else {\n          this.menuOut = false; \n          this.removeMenu(true);\n        }\n      });\n\n    }\n\n    closeOnClick() {\n\n      if (this.options.closeOnClick === true) {\n\n        this.$menu.on('click', 'a:not(.collapsible-header)', () => this.removeMenu());\n\n        if (this.$menu.css('transform') === 'translateX(0)') {\n          this.$menu.on('click', () => this.removeMenu());\n        }\n      }\n    }\n\n    onOpen(callback) {\n\n      $(this).on('sidenav_open', (event, callback) => {\n        if (typeof callback === 'function') {\n\n          callback();\n        }\n      });\n    }\n\n    onClose(callback) {\n\n      $(this).on('sidenav_close', (event, callback) => {\n        if (typeof callback === 'function') {\n\n          callback();\n        }\n      });\n    }\n\n    openOnClick() {\n      \n      // eslint-disable-next-line consistent-return\n      this.$element.on('click', e => {\n\n        e.preventDefault();\n        if (this.menuOut === true) {\n          return this.removeMenu();\n        } else {\n          $(this).trigger('sidenav_open', [this.options.onOpen]);\n        }\n\n        if (this.options.showOverlay === true) {\n          if (!$('#sidenav-overlay').length) {\n            \n            this.showSidenavOverlay()\n          }\n        } else {\n          this.showCloseButton();\n        }\n\n        let translateX = [];\n\n        if (this.options.edge === 'left') {\n\n          translateX = [0, -1 * this.options.menuWidth];\n        } else {\n\n          translateX = [0, this.options.menuWidth];\n        }\n        if (this.$menu.css('transform') !== 'matrix(1, 0, 0, 1, 0, 0)') {\n          this.$menu.velocity({\n            translateX\n          }, {\n            duration: this.options.timeDurationOpen,\n            queue: false,\n            easing: this.options.easingOpen\n          });\n        }\n        // this.$sidenavOverlay.on('click', () => this.removeMenu());\n\n        this.$sidenavOverlay.on('touchmove', this.touchmoveEventHandler.bind(this));\n        this.$menu.on('touchmove', e => {\n\n          e.preventDefault();\n\n          this.$menu.find('.custom-scrollbar').css('padding-bottom', '30px');\n\n        });\n\n        if(this.options.showOverlay === false) {\n          \n          this.menuOut = true;\n        }\n      });\n    }\n\n    bindTouchEvents() {\n\n      this.$dragTarget.on('click', () => {\n        \n        if (this.menuOut) {\n          this.removeMenu();\n        }       \n      } );\n\n      this.$dragTarget.on('touchstart', e => {\n\n        this.lastTouchVelocity.x.startPosition = e.touches[0].clientX;\n        this.lastTouchVelocity.x.startTime = Date.now();\n      });\n      this.$dragTarget.on('touchmove', this.touchmoveEventHandler.bind(this));\n      this.$dragTarget.on('touchend', this.touchendEventHandler.bind(this));\n    }\n\n    showCloseButton() {\n\n      if (this.options.showCloseButton === true) {\n\n        this.$menu.prepend(this.$elementCloned);\n        this.$menu.find('.logo-wrapper').css({\n          borderTop: '1px solid rgba(153,153,153,.3)'\n        });\n      }\n    }\n\n    inputOnClick() {\n\n      this.$menu.find('input[type=text]').on('touchstart', () => this.$menu.css('transform', 'translateX(0)'));\n    }\n\n    removeMenu(restoreMenu) {\n\n      this.$body.css({\n        overflow: '',\n        width: ''\n      });\n\n      this.$menu.velocity({\n        translateX: this.options.edge === 'left' ? '-100%' : '100%'\n      }, {\n        duration: this.options.timeDurationClose,\n        queue: false,\n        easing: this.options.easingClose,\n        complete: () => {\n          if (restoreMenu === true) {\n            this.$menu.removeAttr('style');\n            this.$menu.css('width', this.options.menuWidth);\n          }\n        }\n      });\n\n      this.$menu.removeClass('transform-fix-input');\n      this.hideSidenavOverlay();\n      this.menuOut = false;\n      \n      $('.fixed-sn .double-nav').css('padding-left', 'unset');\n      $('.fixed-sn main, .fixed-sn footer').css({\n        'padding-left': '0'\n      });\n      $(this).trigger('sidenav_close', [this.options.onClose]);\n    }\n\n    handleSlim() {\n\n      const $toggle = $('#toggle');\n      $toggle.on('click', () => {\n        if (this.$menu.hasClass('slim')) {\n          this.$menu.removeClass('slim');\n          $('.sv-slim-icon').removeClass('fa-angle-double-right').addClass('fa-angle-double-left');\n          $('.fixed-sn .double-nav').css({\n            transition: 'all .3s ease-in-out',\n            'padding-left': '15.9rem'\n          });\n\n          $('.fixed-sn main, .fixed-sn footer').css({\n            transition: 'all .3s ease-in-out',\n            'padding-left': '15rem'\n          });\n\n        } else {\n\n          this.$menu.addClass('slim');\n          $('.sv-slim-icon').removeClass('fa-angle-double-left').addClass('fa-angle-double-right');\n          $('.fixed-sn .double-nav').css('padding-left', '4.6rem');\n          $('.fixed-sn main, .fixed-sn footer').css({\n            'padding-left': '3.7rem'\n          });\n        }\n      });\n    }\n\n    touchmoveEventHandler(e) {\n\n      if (e.type !== 'touchmove') {\n\n        return;\n      }\n\n      const [touch] = e.touches;\n      let touchX = touch.clientX;\n\n      // calculate velocity every 20ms\n      if (Date.now() - this.lastTouchVelocity.x.startTime > 20) {\n\n        this.lastTouchVelocity.x.startPosition = touch.clientX;\n        this.lastTouchVelocity.x.startTime = Date.now();\n      }\n\n      this.disableScrolling();\n\n      const overlayExists = this.$sidenavOverlay.length !== 0;\n      if (!overlayExists) {\n\n        this.buildSidenavOverlay();\n      }\n\n      // Keep within boundaries\n      if (this.options.edge === 'left') {\n\n        if (touchX > this.options.menuWidth) {\n\n          touchX = this.options.menuWidth;\n        } else if (touchX < 0) {\n\n          touchX = 0;\n        }\n      }\n\n      this.translateSidenavX(touchX);\n      this.updateOverlayOpacity(touchX);\n    }\n\n    calculateTouchVelocityX() {\n\n      const distance = Math.abs(this.lastTouchVelocity.x.endPosition - this.lastTouchVelocity.x.startPosition);\n      const time = Math.abs(this.lastTouchVelocity.x.endTime - this.lastTouchVelocity.x.startTime);\n\n      return distance / time;\n    }\n\n    touchendEventHandler(e) {\n\n      if (e.type !== 'touchend') {\n\n        return;\n      }\n\n      const touch = e.changedTouches[0];\n\n      this.lastTouchVelocity.x.endTime = Date.now();\n      this.lastTouchVelocity.x.endPosition = touch.clientX;\n      const velocityX = this.calculateTouchVelocityX();\n\n      const touchX = touch.clientX;\n      let leftPos = touchX - this.options.menuWidth;\n      let rightPos = touchX - this.options.menuWidth / 2;\n      if (leftPos > 0) {\n        leftPos = 0;\n      }\n      if (rightPos < 0) {\n        rightPos = 0;\n      }\n\n      if (this.options.edge === 'left') {\n\n        // If velocityX <= 0.3 then the user is flinging the menu closed so ignore this.menuOut\n        if (this.menuOut || velocityX <= this.settings.menuLeftMinBorder || velocityX < this.options.menuLeftMaxBorder) {\n\n          if (leftPos !== 0) {\n\n            this.translateMenuX([0, leftPos], '300');\n          }\n\n          this.showSidenavOverlay();\n\n        } else if (!this.menuOut || velocityX > this.settings.menuLeftMinBorder) {\n\n          this.enableScrolling();\n          this.translateMenuX([-1 * this.options.menuWidth - this.options.menuVelocityOffset, leftPos], '200');\n          this.hideSidenavOverlay();\n        }\n\n        this.$dragTarget.css({\n          width: '10px',\n          right: '',\n          left: 0\n        });\n      } else if (this.menuOut && velocityX >= this.settings.menuRightMinBorder || velocityX > this.settings.menuRightMaxBorder) {\n\n        this.translateMenuX([0, rightPos], '300');\n        this.showSidenavOverlay();\n\n        this.$dragTarget.css({\n          width: '50%',\n          right: '',\n          left: 0\n        });\n      } else if (!this.menuOut || velocityX < this.settings.menuRightMinBorder) {\n\n        this.enableScrolling();\n        this.translateMenuX([this.options.menuWidth + this.options.menuVelocityOffset, rightPos], '200');\n        this.hideSidenavOverlay();\n\n        this.$dragTarget.css({\n          width: '10px',\n          right: 0,\n          left: ''\n        });\n      }\n    }\n\n    buildSidenavOverlay() {\n\n      if (this.options.showOverlay === true) {\n\n        this.$sidenavOverlay = $('<div id=\"sidenav-overlay\"></div>');\n        this.$sidenavOverlay.css('opacity', 0).on('click', () => this.removeMenu());\n\n        this.$body.append(this.$sidenavOverlay);\n      }\n    }\n\n    disableScrolling() {\n\n      const oldWidth = this.$body.innerWidth();\n      this.$body.css('overflow', 'hidden');\n      this.$body.width(oldWidth);\n    }\n\n    enableScrolling() {\n\n      this.$body.css({\n        overflow: '',\n        width: ''\n      });\n    }\n\n    translateMenuX(fromTo, duration) {\n\n      this.$menu.velocity({\n        translateX: fromTo\n      }, {\n        duration: typeof duration === 'string' ? Number(duration) : duration,\n        queue: false,\n        easing: this.options.easingOpen\n      });\n    }\n\n    translateSidenavX(touchX) {\n\n      if (this.options.edge === 'left') {\n\n        const isRightDirection = touchX >= this.options.menuWidth / 2;\n        this.menuOut = isRightDirection;\n\n        this.$menu.css('transform', `translateX(${touchX - this.options.menuWidth}px)`);\n      } else {\n\n        const isLeftDirection = touchX < window.innerWidth - this.options.menuWidth / 2;\n        this.menuOut = isLeftDirection;\n\n        let rightPos = touchX - this.options.menuWidth / 2;\n        if (rightPos < 0) {\n          rightPos = 0;\n        }\n\n        this.$menu.css('transform', `translateX(${rightPos}px)`);\n      }\n    }\n\n    updateOverlayOpacity(touchX) {\n\n      let overlayPercentage;\n      if (this.options.edge === 'left') {\n\n        overlayPercentage = touchX / this.options.menuWidth;\n      } else {\n\n        overlayPercentage = Math.abs((touchX - window.innerWidth) / this.options.menuWidth);\n      }\n\n      this.$sidenavOverlay.velocity({\n        opacity: overlayPercentage\n      }, {\n        duration: 10,\n        queue: false,\n        easing: this.options.easingOpen\n      });\n    }\n\n    showSidenavOverlay() {\n\n      if (this.options.showOverlay === true && !$('#sidenav-overlay').length) {\n        this.buildSidenavOverlay();\n      }\n      this.$sidenavOverlay.velocity({\n        opacity: 1\n      }, {\n        duration: this.options.timeDurationOverlayOpen,\n        queue: false,\n        easing: this.options.easingOpen\n      });\n    }\n\n    hideSidenavOverlay() {\n\n      this.$sidenavOverlay.velocity({\n        opacity: 0\n      }, {\n        duration: this.options.timeDurationOverlayClose,\n        queue: false,\n        easing: this.options.easingOpen,\n        complete() {\n          $(this).remove();\n        }\n      });\n    }\n\n  }\n\n  $.fn.sideNav = function (options) {\n    $(this).each(function () {\n      const sidenav = new SideNav($(this), options);\n      sidenav.init();\n    });\n  };\n\n  $('.side-nav').on('touchmove', function (e) {\n    e.stopPropagation();\n  }, false);\n\n});\n","jQuery(() => {\n  const SMOOTH_SCROLL_DURATION = 700;\n\n  $('.smooth-scroll').on('click', 'a', function (e) {\n    e.preventDefault();\n\n    const $this = $(this);\n    const elAttr = $this.attr('href');\n\n    if (typeof elAttr !== undefined && elAttr.indexOf('#') === 0) {\n\n      const offset = $(this).attr('data-offset') || 0;\n\n      $('body,html').animate({\n        scrollTop: $(elAttr).offset().top - offset\n      }, SMOOTH_SCROLL_DURATION);\n\n      const setHash = $this.parentsUntil('.smooth-scroll').last().parent().attr('data-allow-hashes');\n\n      if (typeof setHash !== undefined && setHash !== false) {\n\n        history.replaceState(null, null, elAttr);\n      }\n    }\n  });\n});\n","jQuery(($) => {\n\n  class Dropdown {\n\n    constructor($activator, options = {}) {\n\n      this.$activator = $activator;\n      this.$activates = $(`#${$activator.attr('data-activates')}`);\n      /* eslint-disable newline-per-chained-call */\n      this.options = {\n        inDuration: this.fallback().or($activator.data('induration')).or($activator.attr('data-in-duration')).or(options.inDuration).or(300).value(),\n        outDuration: this.fallback().or($activator.data('outduration')).or($activator.attr('data-out-duration')).or(options.outDuration).or(225).value(),\n        easingEffectIn: this.fallback().or($activator.data('easingeffectin')).or($activator.attr('data-easing-effect-in')).or(options.easingEffectIn).or('easeOutCubic').value(),\n        easingEffectOut: this.fallback().or($activator.data('easingeffectout')).or($activator.attr('data-easing-effect-out')).or(options.easingEffectOut).or('swing').value(),\n        constrainWidth: this.fallback().or($activator.data('constrainwidth')).or($activator.attr('data-constrain-width')).or(options.constrainWidth).or(true).value(),\n        hover: this.fallback().or($activator.data('hover')).or($activator.attr('data-hover')).or(options.hover).or(false).value(),\n        gutter: this.fallback().or($activator.data('gutter')).or($activator.attr('data-gutter')).or(options.gutter).or(0).value(),\n        belowOrigin: this.fallback().or($activator.data('beloworigin')).or($activator.attr('data-below-origin')).or(options.belowOrigin).or(false).value(),\n        alignment: this.fallback().or($activator.data('alignment')).or($activator.attr('data-alignment')).or(options.alignment).or('left').value(),\n        maxHeight: this.fallback().or($activator.data('maxheight')).or($activator.attr('data-max-height')).or(options.maxHeight).or('').value(),\n        resetScroll: this.fallback().or($activator.data('resetscroll')).or($activator.attr('data-reset-scroll')).or(options.resetScroll).or(true).value()\n      };\n      /* eslint-enable newline-per-chained-call */\n      this.isFocused = false;\n    }\n\n    static mdbDropdownAutoInit() {\n\n      $('.dropdown-button').dropdown();\n\n      this.bindMultiLevelDropdownEvents();\n      this.bindBootstrapEvents();\n    }\n\n    static bindMultiLevelDropdownEvents() {\n\n      $('.multi-level-dropdown .dropdown-submenu > a').on(\"mouseenter\", function(e) {\n        var submenu = $(this);\n        $('.multi-level-dropdown .dropdown-submenu .dropdown-menu').removeClass('show');\n        submenu.next('.dropdown-menu').addClass('show');\n        e.stopPropagation();\n      });\n  \n      $('.multi-level-dropdown .dropdown').on(\"hidden.bs.dropdown\", function() {\n        // hide any open menus when parent closes\n        $('.multi-level-dropdown .dropdown-menu.show').removeClass('show');\n      });\n    }\n\n    static bindBootstrapEvents() {\n\n      const $dropdowns = $('.dropdown, .dropup');\n      $dropdowns.on({\n        'show.bs.dropdown': (e) => {\n\n          const $dropdown = $(e.target);\n          const effects = this._getDropdownEffects($dropdown);\n          this._dropdownEffectStart($dropdown, effects.effectIn);\n        },\n        'shown.bs.dropdown': (e) => {\n\n          const $dropdown = $(e.target);\n          const effects = this._getDropdownEffects($dropdown);\n          if (effects.effectIn && effects.effectOut) {\n\n            this._dropdownEffectEnd($dropdown, effects);\n          }\n        },\n        'hide.bs.dropdown': (e) => {\n\n          const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n          const $dropdown = $(e.target);\n          const effects = this._getDropdownEffects($dropdown);\n          if (effects.effectOut) {\n            \n            if(!mediaQuery) {\n              e.preventDefault();\n            }\n\n            this._dropdownEffectStart($dropdown, effects.effectOut);\n            this._dropdownEffectEnd($dropdown, effects, () => {\n\n              $dropdown.removeClass('show');\n              $dropdown.find('.dropdown-menu').removeClass('show');\n            });\n          }\n        }\n      });\n    }\n\n    static _getDropdownEffects($dropdown) {\n\n      let defaultInEffect = 'fadeIn';\n      let defaultOutEffect = 'fadeOut';\n      const $dropdownMenu = $dropdown.find('.dropdown-menu');\n      const $parentUl = $dropdown.parents('ul.nav');\n\n      if ($parentUl.height > 0) {\n\n        defaultInEffect = $parentUl.data('dropdown-in') || null;\n        defaultOutEffect = $parentUl.data('dropdown-out') || null;\n      }\n\n      return {\n        effectIn: $dropdownMenu.data('dropdown-in') || defaultInEffect,\n        effectOut: $dropdownMenu.data('dropdown-out') || defaultOutEffect\n      };\n    }\n\n    static _dropdownEffectStart($dropdown, effectToStart) {\n\n      if (effectToStart) {\n\n        $dropdown.addClass('dropdown-animating');\n        $dropdown.find('.dropdown-menu').addClass(['animated', effectToStart].join(' '));\n      }\n    }\n\n    static _dropdownEffectEnd($dropdown, effects, callback) {\n\n      $dropdown.one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', () => {\n\n        $dropdown.removeClass('dropdown-animating');\n        $dropdown.find('.dropdown-menu').removeClass(['animated', effects.effectIn, effects.effectOut].join(' '));\n\n        if (typeof callback === 'function') {\n\n          callback();\n        }\n      });\n    }\n\n    returnPublicInterface() {\n\n      return {\n        $activator: this.$activator,\n        $activates: this.$activates,\n        updatePosition: this.updatePosition.bind(this)\n      };\n    }\n\n    init() {\n\n      this.appendDropdownToActivator();\n\n      if (this.options.hover) {\n\n        this.handleHoverableDropdown();\n\n      } else {\n\n        this.handleClickableDropdown();\n      }\n\n      this.bindEvents();\n    }\n\n    appendDropdownToActivator() {\n\n      this.$activator.after(this.$activates);\n    }\n\n    handleHoverableDropdown() {\n\n      let opened = false;\n\n      this.$activator.unbind(`click.${this.$activator.attr('id')}`);\n\n      this.$activator.on('mouseenter', () => {\n\n        if (opened === false) {\n\n          this.placeDropdown();\n          opened = true;\n        }\n      });\n\n      this.$activator.on('mouseleave', (e) => {\n\n        const toEl = e.toElement || e.relatedTarget;\n        const mouseHoversDropdown = $(toEl).closest('.dropdown-content').is(this.$activates);\n        if (!mouseHoversDropdown) {\n\n          this.$activates.stop(true, true);\n          this.hideDropdown();\n          opened = false;\n        }\n      });\n\n      this.$activates.on('mouseleave', (e) => {\n\n        const toEl = e.toElement || e.relatedTarget;\n        const mouseHoversActivator = $(toEl).closest('.dropdown-button').is(this.$activator);\n        if (!mouseHoversActivator) {\n\n          this.$activates.stop(true, true);\n          this.hideDropdown();\n          opened = false;\n        }\n      });\n    }\n\n    handleClickableDropdown() {\n\n      this.$activator.unbind(`click.${this.$activator.attr('id')}`);\n      this.$activator.bind(`click.${this.$activator.attr('id')}`, (e) => {\n\n        if (this.isFocused) {\n\n          return;\n        }\n\n        const activatorClicked = this.$activator.get(0) === e.currentTarget;\n        const activatorActive = this.$activator.hasClass('active');\n        const dropdownContentClicked = $(e.target).closest('.dropdown-content').length !== 0;\n        if (activatorClicked && !activatorActive && !dropdownContentClicked) {\n\n          e.preventDefault();\n          this.placeDropdown('click');\n        } else if (activatorActive) {\n\n          this.hideDropdown();\n          $(document).unbind(`click.${this.$activates.attr('id')} touchstart.${this.$activates.attr('id')}`);\n        }\n\n        if (this.$activates.hasClass('active')) {\n\n          $(document).bind(`click.${this.$activates.attr('id')} touchstart.${this.$activates.attr('id')}`, (e) => {\n\n            const clickedOutsideDropdown = !this.$activates.is(e.target) && !this.$activator.is(e.target) && !this.$activator.find(e.target).length;\n            if (clickedOutsideDropdown) {\n\n              this.hideDropdown();\n              $(document).unbind(`click.${this.$activates.attr('id')} touchstart.${this.$activates.attr('id')}`);\n            }\n          });\n        }\n      });\n    }\n\n    bindEvents() {\n\n      this.$activator.on('open', (e, eventType) => {\n\n        this.placeDropdown(eventType);\n      });\n\n      this.$activator.on('close', this.hideDropdown.bind(this));\n    }\n\n    placeDropdown(eventType) {\n\n      if (eventType === 'focus') {\n\n        this.isFocused = true;\n      }\n\n      this.$activates.addClass('active');\n      this.$activator.addClass('active');\n\n      if (this.options.constrainWidth === true) {\n\n        this.$activates.css('width', this.$activator.outerWidth());\n      } else {\n\n        this.$activates.css('white-space', 'nowrap');\n      }\n\n      this.updatePosition();\n\n      this.showDropdown();\n    }\n\n    showDropdown() {\n\n      this.$activates.stop(true, true).css('opacity', 0)\n        .slideDown({\n          queue: false,\n          duration: this.options.inDuration,\n          easing: this.options.easingEffectIn,\n          complete() {\n            $(this).css('height', '');\n          }\n        })\n        .animate({\n          opacity: 1,\n          // eslint-disable-next-line object-curly-newline\n          ...this.options.resetScroll && { scrollTop: 0 }\n        }, {\n          queue: false,\n          duration: this.options.inDuration,\n          easing: 'easeOutSine'\n        });\n    }\n\n    hideDropdown() {\n\n      this.isFocused = false;\n      this.$activates.fadeOut({\n        durations: this.options.outDuration,\n        easing: this.options.easingEffectOut\n      });\n      this.$activates.removeClass('active');\n      this.$activator.removeClass('active');\n\n      setTimeout(() => {\n        this.$activates.css('max-height', this.options.maxHeight);\n      }, this.options.outDuration);\n    }\n\n    updatePosition() {\n\n      const windowHeight = window.innerHeight;\n      const originHeight = this.$activator.innerHeight();\n      const offsetTop = this.$activator.offset().top - $(window).scrollTop();\n\n      const currAlignment = this._getHorizontalAlignment();\n      let gutterSpacing = 0;\n      let leftPosition = 0;\n\n      const $wrapper = this.$activator.parent();\n      let verticalOffset = this.options.belowOrigin ? originHeight : 0;\n      const scrollOffset = !$wrapper.is('body') && $wrapper.get(0).scrollHeight > $wrapper.get(0).clientHeight ? $wrapper.get(0).scrollTop : 0;\n\n      const doesNotFitFromBottom = offsetTop + this.$activates.innerHeight() > windowHeight;\n      const doesNotFitFromTop = offsetTop + originHeight - this.$activates.innerHeight() < 0;\n      if (doesNotFitFromBottom && doesNotFitFromTop) {\n\n        const adjustedHeight = windowHeight - offsetTop - verticalOffset;\n        this.$activates.css('max-height', adjustedHeight);\n      } else if (doesNotFitFromBottom) {\n\n        if (!verticalOffset) {\n          verticalOffset += originHeight;\n        }\n\n        verticalOffset -= this.$activates.innerHeight();\n      }\n\n      if (currAlignment === 'left') {\n\n        gutterSpacing = this.options.gutter;\n        leftPosition = this.$activator.position().left + gutterSpacing;\n      } else if (currAlignment === 'right') {\n\n        const offsetRight = this.$activator.position().left + this.$activator.outerWidth() - this.$activates.outerWidth();\n        gutterSpacing = -this.options.gutter;\n        leftPosition = offsetRight + gutterSpacing;\n      }\n\n      this.$activates.css({\n        position: 'absolute',\n        top: this.$activator.position().top + verticalOffset + scrollOffset,\n        left: leftPosition\n      });\n    }\n\n    _getHorizontalAlignment() {\n\n      const offsetLeft = this.$activator.offset().left;\n\n      if (offsetLeft + this.$activates.innerWidth() > $(window).width()) {\n\n        return 'right';\n      } else if (offsetLeft - this.$activates.innerWidth() + this.$activator.innerWidth() < 0) {\n\n        return 'left';\n      }\n\n      return this.options.alignment;\n    }\n\n    fallback() {\n\n      return {\n        _value: undefined,\n        or(value) {\n          if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\n            this._value = value;\n          }\n          return this;\n        },\n        value() {\n          return this._value;\n        }\n      };\n    }\n  }\n\n  $.fn.scrollTo = function (elem) {\n\n    this.scrollTop(this.scrollTop() - this.offset().top + $(elem).offset().top);\n    return this;\n  };\n\n  $.fn.dropdown = function (options) {\n\n    if (this.length > 1) {\n\n      const instances = [];\n\n      this.each(function () {\n\n        const dropdown = new Dropdown(this, options);\n        dropdown.init();\n\n        instances.push(dropdown.returnPublicInterface());\n      });\n\n      return instances;\n    }\n\n    const dropdown = new Dropdown(this, options);\n    dropdown.init();\n\n    return dropdown.returnPublicInterface();\n  };\n  $.dropdown = {\n    initAnimations: () => {\n      Dropdown.bindBootstrapEvents();\n    }\n  };\n  \n  Dropdown.mdbDropdownAutoInit();\n\n});\n\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n    return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n  }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIndexedObject(object);\n    var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var index = 0;\n    var key, descriptor;\n    while (keys.length > index) {\n      descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n      if (descriptor !== undefined) createProperty(result, key, descriptor);\n    }\n    return result;\n  }\n});\n","jQuery(($) => {\n\n  class DropdownSearchable {\n\n    constructor($searchWrappers, options = {}) {\n\n      this.$searchWrappers = $searchWrappers;\n      this.options = {\n        color: this.fallback().or(options.color).or('#000').value(),\n        backgroundColor: this.fallback().or(options.backgroundColor).or('').value(),\n        fontSize: this.fallback().or(options.fontSize).or('.9rem').value(),\n        fontWeight: this.fallback().or(options.fontWeight).or('400').value(),\n        borderRadius: this.fallback().or(options.borderRadius).or('').value(),\n        borderColor: this.fallback().or(options.borderColor).or('').value(),\n        margin: this.fallback().or(options.margin).or('').value()\n      };\n    }\n\n    init() {\n\n      this.bindSearchEvents();\n\n      return this.$searchWrappers.css({\n        color: this.options.color,\n        backgroundColor: this.options.backgroundColor,\n        fontSize: this.options.fontSize,\n        fontWeight: this.options.fontWeight,\n        borderRadius: this.options.borderRadius,\n        borderColor: this.options.borderColor,\n        margin: this.options.margin\n      });\n    }\n\n    bindSearchEvents() {\n\n      this.$searchWrappers.each(function () {\n\n        const $searchInput = $(this).find('input').first();\n        $searchInput.on('keyup', () => {\n\n          const $linksInDropMenu = $searchInput.closest('div[id]').find('a, li');\n          $linksInDropMenu.each(function () {\n\n            const $this = $(this);\n            if ($this.html().toLowerCase().indexOf($searchInput.val().toLowerCase()) > -1) {\n\n              $this.css({\n                display: ''\n              });\n            } else {\n\n              $this.css({\n                display: 'none'\n              });\n            }\n          });\n        });\n      });\n    }\n\n    fallback() {\n\n      return {\n        _value: undefined,\n        or(value) {\n          if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\n            this._value = value;\n          }\n          return this;\n        },\n        value() {\n          return this._value;\n        }\n      };\n    }\n  }\n\n  $.fn.mdbDropSearch = function (options) {\n\n    const dropdownSearchable = new DropdownSearchable(this, options);\n    return dropdownSearchable.init();\n  };\n});\n","import MaterialSelectView from './material-select-view';\n\njQuery(($) => {\n\n  class MaterialSelect {\n\n    constructor($nativeSelect, options = {}) {\n\n      this.options = {\n        destroy: this.fallback().or(options.destroy).or(false).value(),\n        validate: this.fallback().or($nativeSelect.attr('data-validate')).or(options.validate).or(false).value(),\n        selectId: this.fallback().or($nativeSelect.attr('data-select-id')).or(options.selectId).or(null).value(),\n        defaultMaterialInput: this.fallback().or($nativeSelect.attr('data-default-material-input')).or(options.defaultMaterialInput).or(false).value(),\n        fasClasses: this.fallback().or($nativeSelect.attr('data-fas-classes')).or(options.fasClasses).or('').value(),\n        farClasses: this.fallback().or($nativeSelect.attr('data-far-classes')).or(options.farClasses).or('').value(),\n        fabClasses: this.fallback().or($nativeSelect.attr('data-fab-classes')).or(options.fabClasses).or('').value(),\n        copyClassesOption: this.fallback().or($nativeSelect.attr('data-copy-classes-option')).or(options.copyClassesOption).or(false).value(),\n        labels: {\n          selectAll: this.fallback().or($nativeSelect.attr('data-label-select-all')).or((options.labels || {}).selectAll).or('Select all').value(),\n          optionsSelected: this.fallback().or($nativeSelect.attr('data-label-options-selected')).or((options.labels || {}).optionsSelected).or('options selected').value(),\n          validFeedback: this.fallback().or($nativeSelect.attr('data-label-valid-feedback')).or((options.labels || {}).validFeedback).or('Ok').value(),\n          invalidFeedback: this.fallback().or($nativeSelect.attr('data-label-invalid-feedback')).or((options.labels || {}).invalidFeedback).or('Incorrect value').value(),\n          noSearchResults: this.fallback().or($nativeSelect.attr('data-label-no-search-results')).or((options.labels || {}).noSearchResults).or('No results').value()\n        },\n        keyboardActiveClass: this.fallback().or($nativeSelect.attr('data-keyboard-active-class')).or(options.keyboardActiveClass).or('heavy-rain-gradient').value(),\n        placeholder: this.fallback().or($nativeSelect.attr('data-placeholder')).or(options.placeholder).or(null).value(),\n        visibleOptions: this.fallback().or($nativeSelect.attr('data-visible-options')).or(options.visibleOptions).or(5).value(),\n        maxSelectedOptions: this.fallback().or($nativeSelect.attr('data-max-selected-options')).or(options.maxSelectedOptions).or(5).value(),\n        showResetButton: this.fallback().or($nativeSelect.attr('data-show-reset-button')).or(options.showResetButton).or(false).value()\n      };\n\n      this.uuid = $nativeSelect.attr('id') || this.options.selectId || this._randomUUID();\n\n      // eslint-disable-next-line no-undef\n      this.view = new MaterialSelectView(\n        $nativeSelect,\n        {\n          options: this.options,\n          properties: {\n            id: this.uuid\n          }\n        }\n      );\n\n      this.selectedOptionsIndexes = []; // jQuery indexes; `.eq()` is operating on these\n\n      MaterialSelect.mutationObservers = [];\n    }\n\n    get isInitialized() {\n\n      return Boolean(this.view.$nativeSelect.data('select-id')) && this.view.$nativeSelect.hasClass('initialized');\n    }\n\n    static clearMutationObservers() {\n\n      MaterialSelect.mutationObservers.forEach((observer) => {\n\n        observer.disconnect();\n        observer.customStatus = 'stopped';\n      });\n    }\n\n    static mdbSelectAutoInit() {\n\n      $('.mdb-select.mdb-select-autoinit').materialSelect();\n    }\n\n    init() {\n\n      if (this.options.destroy) {\n\n        this.view.destroy();\n        return;\n      }\n\n      if (this.isInitialized) {\n\n        this.view.destroy();\n      }\n\n      this.view.render();\n      this.view.selectPreselectedOptions((optionIndex) => this._toggleSelectedValue(optionIndex));\n\n      this.bindEvents();\n    }\n\n    bindEvents() {\n\n      this.bindMutationObserverChange();\n\n      if (this.view.isEditable && this.view.isSearchable) {\n\n        this.view.bindResetButtonClick(() => this._resetSelection());\n      }\n\n      this.view.bindAddNewOptionClick();\n      this.view.bindMaterialSelectFocus();\n      this.view.bindMaterialSelectClick();\n      this.view.bindMaterialSelectBlur();\n      this.view.bindMaterialOptionsListTouchstart();\n      this.view.bindMaterialSelectKeydown();\n      this.view.bindMaterialSelectDropdownToggle();\n      this.view.bindToggleAllClick((materialOptionIndex) => this._toggleSelectedValue(materialOptionIndex));\n      this.view.bindMaterialOptionMousedown();\n      this.view.bindMaterialOptionClick((optionIndex) => this._toggleSelectedValue(optionIndex));\n\n      if (!this.view.isMultiple && this.view.isSearchable) {\n\n        this.view.bindSingleMaterialOptionClick();\n      }\n\n      if (this.view.isSearchable) {\n\n        this.view.bindSearchInputKeyup();\n      }\n\n      this.view.bindHtmlClick();\n      this.view.bindMobileDevicesMousedown();\n      this.view.bindSaveBtnClick(); // @Depreciated\n    }\n\n    bindMutationObserverChange() {\n\n      const config = {\n        attributes: true,\n        childList: true,\n        characterData: true,\n        subtree: true\n      };\n      const observer = new MutationObserver(this._onMutationObserverChange.bind(this));\n      observer.observe(this.view.$nativeSelect.get(0), config);\n      observer.customId = this.uuid;\n      observer.customStatus = 'observing';\n\n      MaterialSelect.clearMutationObservers();\n      MaterialSelect.mutationObservers.push(observer);\n    }\n\n    _onMutationObserverChange(mutationsList) {\n\n      mutationsList.forEach((mutation) => {\n\n        const $select = $(mutation.target).closest('select');\n        if ($select.data('stop-refresh') !== true && (mutation.type === 'childList' || mutation.type === 'attributes' && $(mutation.target).is('option'))) {\n\n          // eslint-disable-next-line object-curly-newline\n          $select.materialSelect({ destroy: true });\n          $select.materialSelect();\n        }\n      });\n    }\n\n    _resetSelection() {\n\n      this.selectedOptionsIndexes = [];\n      this.view.$nativeSelect.find('option').prop('selected', false);\n    }\n\n    _toggleSelectedValue(optionIndex) {\n\n      const selectedValueIndex = this.selectedOptionsIndexes.indexOf(optionIndex);\n      const isSelected = selectedValueIndex !== -1;\n\n      if (!isSelected) {\n\n        this.selectedOptionsIndexes.push(optionIndex);\n      } else {\n\n        this.selectedOptionsIndexes.splice(selectedValueIndex, 1);\n      }\n\n      this.view.$nativeSelect.find('option').eq(optionIndex).prop('selected', !isSelected);\n\n      this._setValueToMaterialSelect();\n\n      return !isSelected;\n    }\n\n    _setValueToMaterialSelect() {\n\n      let value = '';\n      const selectedValuesCount = this.selectedOptionsIndexes.length;\n\n      this.selectedOptionsIndexes.forEach((index) => value += `, ${this.view.$nativeSelect.find('option').eq(index).text().replace(/  +/g, ' ').trim()}`);\n\n      if (this.options.maxSelectedOptions >= 0 && selectedValuesCount > this.options.maxSelectedOptions) {\n        value = `${selectedValuesCount} ${this.options.labels.optionsSelected}`;\n      } else {\n        value = value.substring(2);\n      }\n\n      if (value.length === 0) {\n        value = this.view.$nativeSelect.find('option:disabled').eq(0).text();\n      }\n\n      this.view.$nativeSelect.siblings(`${this.options.defaultMaterialInput ? 'input.multi-bs-select' : 'input.select-dropdown'}`).val(value);\n    }\n\n    _randomUUID() {\n\n      let d = new Date().getTime();\n\n      return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n\n        // eslint-disable-next-line no-bitwise\n        const r = (d + Math.random() * 16) % 16 | 0;\n        d = Math.floor(d / 16);\n        // eslint-disable-next-line no-bitwise\n        return (c === 'x' ? r : r & 0x3 | 0x8).toString(16);\n      });\n    }\n\n    fallback() {\n\n      return {\n        _value: undefined,\n        or(value) {\n          if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\n            this._value = value;\n          }\n          return this;\n        },\n        value() {\n          return this._value;\n        }\n      };\n    }\n  }\n\n  $.fn.materialSelect = function (options) {\n\n    $(this).not('.browser-default').not('.custom-select').each(function () {\n\n      const materialSelect = new MaterialSelect($(this), options);\n      materialSelect.init();\n    });\n  };\n\n  (function (originalVal) {\n\n    $.fn.val = function (value) {\n\n      if (!arguments.length) {\n\n        return originalVal.call(this);\n      }\n\n      if (this.data('stop-refresh') !== true && this.hasClass('mdb-select') && this.hasClass('initialized')) {\n\n        MaterialSelect.clearMutationObservers();\n\n        this.materialSelect({\n          destroy: true\n        });\n\n        const ret = originalVal.call(this, value);\n        this.materialSelect();\n\n        return ret;\n      }\n\n      return originalVal.call(this, value);\n    };\n  }($.fn.val));\n\n  MaterialSelect.mdbSelectAutoInit();\n});\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","/*\n    Enhanced Bootstrap Modals\n    https://mdbootstrap.com\n    office@mdbootstrap.com\n*/\n\n(function($){\n  $('body').on('shown.bs.modal', '.modal', function() {\n    if(!$('.modal-backdrop').length) {\n\n      $modal_dialog = $(this).children('.modal-dialog')\n\n      if($modal_dialog.hasClass('modal-side')) {\n        $(this).addClass('modal-scrolling');\n        $('body').addClass('scrollable');\n      }\n\n      if($modal_dialog.hasClass('modal-frame')) {\n        $(this).addClass('modal-content-clickable');\n        $('body').addClass('scrollable');\n      }\n    }\n  });\n  $('body').on('hidden.bs.modal', '.modal', function() {\n    $('body').removeClass('scrollable');\n  });\n})(jQuery);\n","/*\n * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/\n *\n * Uses the built in easing capabilities added In jQuery 1.1\n * to offer multiple easing options\n *\n * TERMS OF USE - jQuery Easing\n *\n * Open source under the BSD License.\n *\n * Copyright © 2008 George McGinley Smith\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * Neither the name of the author nor the names of contributors may be used to endorse\n * or promote products derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\n *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n*/\n\n// t: current time, b: begInnIng value, c: change In value, d: duration\njQuery.easing['jswing'] = jQuery.easing['swing'];\n\njQuery.extend( jQuery.easing,\n{\n    def: 'easeOutQuad',\n    swing: function (x, t, b, c, d) {\n        //alert(jQuery.easing.default);\n        return jQuery.easing[jQuery.easing.def](x, t, b, c, d);\n    },\n    easeInQuad: function (x, t, b, c, d) {\n        return c*(t/=d)*t + b;\n    },\n    easeOutQuad: function (x, t, b, c, d) {\n        return -c *(t/=d)*(t-2) + b;\n    },\n    easeInOutQuad: function (x, t, b, c, d) {\n        if ((t/=d/2) < 1) return c/2*t*t + b;\n        return -c/2 * ((--t)*(t-2) - 1) + b;\n    },\n    easeInCubic: function (x, t, b, c, d) {\n        return c*(t/=d)*t*t + b;\n    },\n    easeOutCubic: function (x, t, b, c, d) {\n        return c*((t=t/d-1)*t*t + 1) + b;\n    },\n    easeInOutCubic: function (x, t, b, c, d) {\n        if ((t/=d/2) < 1) return c/2*t*t*t + b;\n        return c/2*((t-=2)*t*t + 2) + b;\n    },\n    easeInQuart: function (x, t, b, c, d) {\n        return c*(t/=d)*t*t*t + b;\n    },\n    easeOutQuart: function (x, t, b, c, d) {\n        return -c * ((t=t/d-1)*t*t*t - 1) + b;\n    },\n    easeInOutQuart: function (x, t, b, c, d) {\n        if ((t/=d/2) < 1) return c/2*t*t*t*t + b;\n        return -c/2 * ((t-=2)*t*t*t - 2) + b;\n    },\n    easeInQuint: function (x, t, b, c, d) {\n        return c*(t/=d)*t*t*t*t + b;\n    },\n    easeOutQuint: function (x, t, b, c, d) {\n        return c*((t=t/d-1)*t*t*t*t + 1) + b;\n    },\n    easeInOutQuint: function (x, t, b, c, d) {\n        if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;\n        return c/2*((t-=2)*t*t*t*t + 2) + b;\n    },\n    easeInSine: function (x, t, b, c, d) {\n        return -c * Math.cos(t/d * (Math.PI/2)) + c + b;\n    },\n    easeOutSine: function (x, t, b, c, d) {\n        return c * Math.sin(t/d * (Math.PI/2)) + b;\n    },\n    easeInOutSine: function (x, t, b, c, d) {\n        return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;\n    },\n    easeInExpo: function (x, t, b, c, d) {\n        return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;\n    },\n    easeOutExpo: function (x, t, b, c, d) {\n        return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;\n    },\n    easeInOutExpo: function (x, t, b, c, d) {\n        if (t==0) return b;\n        if (t==d) return b+c;\n        if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;\n        return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;\n    },\n    easeInCirc: function (x, t, b, c, d) {\n        return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;\n    },\n    easeOutCirc: function (x, t, b, c, d) {\n        return c * Math.sqrt(1 - (t=t/d-1)*t) + b;\n    },\n    easeInOutCirc: function (x, t, b, c, d) {\n        if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;\n        return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;\n    },\n    easeInElastic: function (x, t, b, c, d) {\n        var s=1.70158;var p=0;var a=c;\n        if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;\n        if (a < Math.abs(c)) { a=c; var s=p/4; }\n        else var s = p/(2*Math.PI) * Math.asin (c/a);\n        return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\n    },\n    easeOutElastic: function (x, t, b, c, d) {\n        var s=1.70158;var p=0;var a=c;\n        if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;\n        if (a < Math.abs(c)) { a=c; var s=p/4; }\n        else var s = p/(2*Math.PI) * Math.asin (c/a);\n        return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;\n    },\n    easeInOutElastic: function (x, t, b, c, d) {\n        var s=1.70158;var p=0;var a=c;\n        if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);\n        if (a < Math.abs(c)) { a=c; var s=p/4; }\n        else var s = p/(2*Math.PI) * Math.asin (c/a);\n        if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\n        return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;\n    },\n    easeInBack: function (x, t, b, c, d, s) {\n        if (s == undefined) s = 1.70158;\n        return c*(t/=d)*t*((s+1)*t - s) + b;\n    },\n    easeOutBack: function (x, t, b, c, d, s) {\n        if (s == undefined) s = 1.70158;\n        return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;\n    },\n    easeInOutBack: function (x, t, b, c, d, s) {\n        if (s == undefined) s = 1.70158;\n        if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;\n        return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;\n    },\n    easeInBounce: function (x, t, b, c, d) {\n        return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;\n    },\n    easeOutBounce: function (x, t, b, c, d) {\n        if ((t/=d) < (1/2.75)) {\n            return c*(7.5625*t*t) + b;\n        } else if (t < (2/2.75)) {\n            return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;\n        } else if (t < (2.5/2.75)) {\n            return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;\n        } else {\n            return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;\n        }\n    },\n    easeInOutBounce: function (x, t, b, c, d) {\n        if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;\n        return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;\n    }\n});\n\n/*\n *\n * TERMS OF USE - EASING EQUATIONS\n *\n * Open source under the BSD License.\n *\n * Copyright © 2001 Robert Penner\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * Neither the name of the author nor the names of contributors may be used to endorse\n * or promote products derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\n *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n */","/*! VelocityJS.org (1.2.3). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */\n/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */\n/*! Note that this has been modified by Materialize to confirm that Velocity is not already being imported. */\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;l<s.length;l++)n[\"[object \"+s[l]+\"]\"]=s[l].toLowerCase();r.fn.init.prototype=r.fn,e.Velocity={Utilities:r}}}(window),function(e){\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=e():\"function\"==typeof define&&define.amd?define(e):e()}(function(){return function(e,t,r,a){function n(e){for(var t=-1,r=e?e.length:0,a=[];++t<r;){var n=e[t];n&&a.push(n)}return a}function o(e){return m.isWrapped(e)?e=[].slice.call(e):m.isNode(e)&&(e=[e]),e}function i(e){var t=f.data(e,\"velocity\");return null===t?a:t}function s(e){return function(t){return Math.round(t*e)*(1/e)}}function l(e,r,a,n){function o(e,t){return 1-3*t+3*e}function i(e,t){return 3*t-6*e}function s(e){return 3*e}function l(e,t,r){return((o(t,r)*e+i(t,r))*e+s(t))*e}function u(e,t,r){return 3*o(t,r)*e*e+2*i(t,r)*e+s(t)}function c(t,r){for(var n=0;m>n;++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<v);return i}function d(t){for(var r=0,n=1,o=b-1;n!=o&&w[n]<=t;++n)r+=x;--n;var i=(t-w[n])/(w[n+1]-w[n]),s=r+i*x,l=u(s,e,a);return l>=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=\"<!--[if IE \"+e+\"]><span></span><![endif]-->\",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<S.Lists.colors.length;e++){var t=\"color\"===S.Lists.colors[e]?\"0 0 0 1\":\"255 255 255 1\";S.Hooks.templates[S.Lists.colors[e]]=[\"Red Green Blue Alpha\",t]}var r,a,n;if(d)for(r in S.Hooks.templates){a=S.Hooks.templates[r],n=a[0].split(\" \");var o=a[1].match(S.RegEx.valueSplit);\"Color\"===n[0]&&(n.push(n.shift()),o.push(o.shift()),S.Hooks.templates[r]=[n.join(\" \"),o.join(\" \")])}for(r in S.Hooks.templates){a=S.Hooks.templates[r],n=a[0].split(\" \");for(var e in n){var i=r+n[e],s=e;S.Hooks.registered[i]=[r,s]}}},getRoot:function(e){var t=S.Hooks.registered[e];return t?t[0]:e},cleanRootPropertyValue:function(e,t){return S.RegEx.valueUnwrap.test(t)&&(t=t.match(S.RegEx.valueUnwrap)[1]),S.Values.isCSSNullValue(t)&&(t=S.Hooks.templates[e][1]),t},extractValue:function(e,t){var r=S.Hooks.registered[e];if(r){var a=r[0],n=r[1];return t=S.Hooks.cleanRootPropertyValue(a,t),t.toString().match(S.RegEx.valueSplit)[n]}return t},injectValue:function(e,t,r){var a=S.Hooks.registered[e];if(a){var n,o,i=a[0],s=a[1];return r=S.Hooks.cleanRootPropertyValue(i,r),n=r.toString().match(S.RegEx.valueSplit),n[s]=t,o=n.join(\" \")}return r}},Normalizations:{registered:{clip:function(e,t,r){switch(e){case\"name\":return\"clip\";case\"extract\":var a;return S.RegEx.wrappedValueAlreadyExtracted.test(r)?a=r:(a=r.toString().match(S.RegEx.valueUnwrap),a=a?a[1].replace(/,(\\s+)?/g,\" \"):r),a;case\"inject\":return\"rect(\"+r+\")\"}},blur:function(e,t,r){switch(e){case\"name\":return b.State.isFirefox?\"filter\":\"-webkit-filter\";case\"extract\":var a=parseFloat(r);if(!a&&0!==a){var n=r.toString().match(/blur\\(([0-9]+[A-z]+)\\)/i);a=n?n[1]:0}return a;case\"inject\":return parseFloat(r)?\"blur(\"+r+\")\":\"none\"}},opacity:function(e,t,r){if(8>=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;e<S.Lists.transformsBase.length;e++)!function(){var t=S.Lists.transformsBase[e];S.Normalizations.registered[t]=function(e,r,n){switch(e){case\"name\":return\"transform\";case\"extract\":return i(r)===a||i(r).transformCache[t]===a?/^scale/i.test(t)?1:0:i(r).transformCache[t].replace(/[()]/g,\"\");case\"inject\":var o=!1;switch(t.substr(0,t.length-1)){case\"translate\":o=!/(%|px|em|rem|vw|vh|\\d)$/i.test(n);break;case\"scal\":case\"scale\":b.State.isAndroid&&i(r).transformCache[t]===a&&1>n&&(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<S.Lists.colors.length;e++)!function(){var t=S.Lists.colors[e];S.Normalizations.registered[t]=function(e,r,n){switch(e){case\"name\":return t;case\"extract\":var o;if(S.RegEx.wrappedValueAlreadyExtracted.test(n))o=n;else{var i,s={black:\"rgb(0, 0, 0)\",blue:\"rgb(0, 0, 255)\",gray:\"rgb(128, 128, 128)\",green:\"rgb(0, 128, 0)\",red:\"rgb(255, 0, 0)\",white:\"rgb(255, 255, 255)\"};/^[A-z]+$/i.test(n)?i=s[n]!==a?s[n]:s.black:S.RegEx.isHex.test(n)?i=\"rgb(\"+S.Values.hexToRgb(n).join(\" \")+\")\":/^rgba?\\(/i.test(n)||(i=s.black),o=(i||n).toString().match(S.RegEx.valueUnwrap)[1].replace(/,(\\s+)?/g,\" \")}return 8>=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;c<s.length;c++){var f=[l[c]];o&&f.push(o),u!==a&&f.push(u[c]),y[e+s[c]]=f}delete y[e]}}});for(var z in y){var O=p(y[z]),q=O[0],$=O[1],M=O[2];z=S.Names.camelCase(z);var I=S.Hooks.getRoot(z),B=!1;if(i(o).isSVG||\"tween\"===I||S.Names.prefixCheck(I)[1]!==!1||S.Normalizations.registered[I]!==a){(s.display!==a&&null!==s.display&&\"none\"!==s.display||s.visibility!==a&&\"hidden\"!==s.visibility)&&/opacity|filter/.test(z)&&!M&&0!==q&&(M=0),s._cacheValues&&E&&E[z]?(M===a&&(M=E[z].endValue+E[z].unitType),B=i(o).rootPropertyValueCache[I]):S.Hooks.registered[z]?M===a?(B=S.getPropertyValue(o,I),M=S.getPropertyValue(o,z,B)):B=S.Hooks.templates[I][1]:M===a&&(M=S.getPropertyValue(o,z));var W,G,Y,D=!1;if(W=d(z,M),M=W[0],Y=W[1],W=d(z,q),q=W[0].replace(/^([+-\\/*])=/,function(e,t){return D=t,\"\"}),G=W[1],M=parseFloat(M)||0,q=parseFloat(q)||0,\"%\"===G&&(/^(fontSize|lineHeight)$/.test(z)?(q/=100,G=\"em\"):/^scale/.test(z)?(q/=100,G=\"\"):/(Red|Green|Blue)$/i.test(z)&&(q=q/100*255,G=\"\")),/[\\/*]/.test(D))G=Y;else if(Y!==G&&0!==M)if(0===q)G=Y;else{n=n||h();var Q=/margin|padding|left|right|width|text|word|letter/i.test(z)||/X$/.test(z)||\"x\"===z?\"x\":\"y\";switch(Y){case\"%\":M*=\"x\"===Q?n.percentToPxWidth:n.percentToPxHeight;break;case\"px\":break;default:M*=n[Y+\"ToPx\"]}switch(G){case\"%\":M*=1/(\"x\"===Q?n.percentToPxWidth:n.percentToPxHeight);break;case\"px\":break;default:M*=1/n[G+\"ToPx\"]}}switch(D){case\"+\":q=M+q;break;case\"-\":q=M-q;break;case\"*\":q=M*q;break;case\"/\":q=M/q}l[z]={rootPropertyValue:B,startValue:M,currentValue:M,endValue:q,unitType:G,easing:$},b.debug&&console.log(\"tweensContainer (\"+z+\"): \"+JSON.stringify(l[z]),o)}else b.debug&&console.log(\"Skipping [\"+I+\"] due to a lack of browser support.\")}l.element=o}l.element&&(S.Values.addClass(o,\"velocity-animating\"),R.push(l),\"\"===s.queue&&(i(o).tweensContainer=l,i(o).opts=s),i(o).isAnimating=!0,V===w-1?(b.State.calls.push([R,g,s,null,k.resolver]),b.State.isTicking===!1&&(b.State.isTicking=!0,c())):V++)}var n,o=this,s=f.extend({},b.defaults,v),l={};switch(i(o)===a&&b.init(o),parseFloat(s.delay)&&s.queue!==!1&&f.queue(o,s.queue,function(e){b.velocityQueueEntryFlag=!0,i(o).delayTimer={setTimeout:setTimeout(e,parseFloat(s.delay)),next:e}}),s.duration.toString().toLowerCase()){case\"fast\":s.duration=200;break;case\"normal\":s.duration=h;break;case\"slow\":s.duration=600;break;default:s.duration=parseFloat(s.duration)||1}b.mock!==!1&&(b.mock===!0?s.duration=s.delay=1:(s.duration*=parseFloat(b.mock)||1,s.delay*=parseFloat(b.mock)||1)),s.easing=u(s.easing,s.duration),s.begin&&!m.isFunction(s.begin)&&(s.begin=null),s.progress&&!m.isFunction(s.progress)&&(s.progress=null),s.complete&&!m.isFunction(s.complete)&&(s.complete=null),s.display!==a&&null!==s.display&&(s.display=s.display.toString().toLowerCase(),\"auto\"===s.display&&(s.display=b.CSS.Values.getDisplayType(o))),s.visibility!==a&&null!==s.visibility&&(s.visibility=s.visibility.toString().toLowerCase()),s.mobileHA=s.mobileHA&&b.State.isMobile&&!b.State.isGingerbread,s.queue===!1?s.delay?setTimeout(e,s.delay):e():f.queue(o,s.queue,function(t,r){return r===!0?(k.promise&&k.resolver(g),!0):(b.velocityQueueEntryFlag=!0,void e(t))}),\"\"!==s.queue&&\"fx\"!==s.queue||\"inprogress\"===f.queue(o)[0]||f.dequeue(o)}var s,l,d,g,y,v,x=arguments[0]&&(arguments[0].p||f.isPlainObject(arguments[0].properties)&&!arguments[0].properties.names||m.isString(arguments[0].properties));if(m.isWrapped(this)?(s=!1,d=0,g=this,l=this):(s=!0,d=1,g=x?arguments[0].elements||arguments[0].e:arguments[0]),g=o(g)){x?(y=arguments[0].properties||arguments[0].p,v=arguments[0].options||arguments[0].o):(y=arguments[d],v=arguments[d+1]);var w=g.length,V=0;if(!/^(stop|finish)$/i.test(y)&&!f.isPlainObject(v)){var C=d+1;v={};for(var T=C;T<arguments.length;T++)m.isArray(arguments[T])||!/^(fast|normal|slow)$/i.test(arguments[T])&&!/^\\d/.test(arguments[T])?m.isString(arguments[T])||m.isArray(arguments[T])?v.easing=arguments[T]:m.isFunction(arguments[T])&&(v.complete=arguments[T]):v.duration=arguments[T]}var k={promise:null,resolver:null,rejecter:null};s&&b.Promise&&(k.promise=new b.Promise(function(e,t){k.resolver=e,k.rejecter=t}));var A;switch(y){case\"scroll\":A=\"scroll\";break;case\"reverse\":A=\"reverse\";break;case\"finish\":case\"stop\":f.each(g,function(e,t){i(t)&&i(t).delayTimer&&(clearTimeout(i(t).delayTimer.setTimeout),i(t).delayTimer.next&&i(t).delayTimer.next(),delete i(t).delayTimer)});var F=[];return f.each(b.State.calls,function(e,t){t&&f.each(t[1],function(r,n){var o=v===a?\"\":v;return o===!0||t[2].queue===o||v===a&&t[2].queue===!1?void f.each(g,function(r,a){a===n&&((v===!0||m.isString(v))&&(f.each(f.queue(a,m.isString(v)?v:\"\"),function(e,t){\nm.isFunction(t)&&t(null,!0)}),f.queue(a,m.isString(v)?v:\"\",[])),\"stop\"===y?(i(a)&&i(a).tweensContainer&&o!==!1&&f.each(i(a).tweensContainer,function(e,t){t.endValue=t.currentValue}),F.push(e)):\"finish\"===y&&(t[2].duration=1))}):!0})}),\"stop\"===y&&(f.each(F,function(e,t){p(t,!0)}),k.promise&&k.resolver(g)),e();default:if(!f.isPlainObject(y)||m.isEmptyObject(y)){if(m.isString(y)&&b.Redirects[y]){var j=f.extend({},v),E=j.duration,H=j.delay||0;return j.backwards===!0&&(g=f.extend(!0,[],g).reverse()),f.each(g,function(e,t){parseFloat(j.stagger)?j.delay=H+parseFloat(j.stagger)*e:m.isFunction(j.stagger)&&(j.delay=H+j.stagger.call(t,e,w)),j.drag&&(j.duration=parseFloat(E)||(/^(callout|transition)/.test(y)?1e3:h),j.duration=Math.max(j.duration*(j.backwards?1-e/w:(e+1)/w),.75*j.duration,200)),b.Redirects[y].call(t,t,j||{},e,w,g,k.promise?k:a)}),e()}var N=\"Velocity: First argument (\"+y+\") was not a property map, a known action, or a registered redirect. Aborting.\";return k.promise?k.rejecter(new Error(N)):console.log(N),e()}A=\"start\"}var L={lastParent:null,lastPosition:null,lastFontSize:null,lastPercentToPxWidth:null,lastPercentToPxHeight:null,lastEmToPx:null,remToPx:null,vwToPx:null,vhToPx:null},R=[];f.each(g,function(e,t){m.isNode(t)&&n.call(t)});var z,j=f.extend({},b.defaults,v);if(j.loop=parseInt(j.loop),z=2*j.loop-1,j.loop)for(var O=0;z>O;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)}));\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 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","'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","/*!\n * Waves v0.7.6\n * http://fian.my.id/Waves\n *\n * Copyright 2014-2018 Alfiana E. Sibuea and other contributors\n * Released under the MIT license\n * https://github.com/fians/Waves/blob/master/LICENSE\n */\n\n\n(function (window, factory) {\n  'use strict';\n\n  // AMD. Register as an anonymous module.  Wrap in function so we have access\n  // to root via `this`.\n  if (typeof define === 'function' && define.amd) {\n    define([], function () {\n      window.Waves = factory.call(window);\n      return window.Waves;\n    });\n  }\n\n  // Node. Does not work with strict CommonJS, but only CommonJS-like\n  // environments that support module.exports, like Node.\n  else if (typeof exports === 'object') {\n    module.exports = factory.call(window);\n  }\n\n  // Browser globals.\n  else {\n    window.Waves = factory.call(window);\n  }\n})(typeof window === 'object' ? window : this, function () {\n  'use strict';\n\n  var Waves = Waves || {};\n  var $$ = document.querySelectorAll.bind(document);\n  var toString = Object.prototype.toString;\n  var isTouchAvailable = 'ontouchstart' in window;\n\n\n  // Find exact position of element\n  function isWindow(obj) {\n    return obj !== null && obj === obj.window;\n  }\n\n  function getWindow(elem) {\n    return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;\n  }\n\n  function isObject(value) {\n    var type = typeof value;\n    return type === 'function' || type === 'object' && !!value;\n  }\n\n  function isDOMNode(obj) {\n    return isObject(obj) && obj.nodeType > 0;\n  }\n\n  function getWavesElements(nodes) {\n    var stringRepr = toString.call(nodes);\n\n    if (stringRepr === '[object String]') {\n      return $$(nodes);\n    } else if (isObject(nodes) && /^\\[object (Array|HTMLCollection|NodeList|Object)\\]$/.test(stringRepr) && nodes.hasOwnProperty('length')) {\n      return nodes;\n    } else if (isDOMNode(nodes)) {\n      return [nodes];\n    }\n\n    return [];\n  }\n\n  function offset(elem) {\n    var docElem, win,\n      box = {\n        top: 0,\n        left: 0\n      },\n      doc = elem && elem.ownerDocument;\n\n    docElem = doc.documentElement;\n\n    if (typeof elem.getBoundingClientRect !== typeof undefined) {\n      box = elem.getBoundingClientRect();\n    }\n    win = getWindow(doc);\n    return {\n      top: box.top + win.pageYOffset - docElem.clientTop,\n      left: box.left + win.pageXOffset - docElem.clientLeft\n    };\n  }\n\n  function convertStyle(styleObj) {\n    var style = '';\n\n    for (var prop in styleObj) {\n      if (styleObj.hasOwnProperty(prop)) {\n        style += (prop + ':' + styleObj[prop] + ';');\n      }\n    }\n\n    return style;\n  }\n\n  var Effect = {\n\n    // Effect duration\n    duration: 750,\n\n    // Effect delay (check for scroll before showing effect)\n    delay: 200,\n\n    show: function (e, element, velocity) {\n\n      // Disable right click\n      if (e.button === 2) {\n        return false;\n      }\n\n      element = element || this;\n\n      // Create ripple\n      var ripple = document.createElement('div');\n      ripple.className = 'waves-ripple waves-rippling';\n      element.appendChild(ripple);\n\n      // Get click coordinate and element width\n      var pos = offset(element);\n      var relativeY = 0;\n      var relativeX = 0;\n      // Support for touch devices\n      if ('touches' in e && e.touches.length) {\n        relativeY = (e.touches[0].pageY - pos.top);\n        relativeX = (e.touches[0].pageX - pos.left);\n      }\n      //Normal case\n      else {\n        relativeY = (e.pageY - pos.top);\n        relativeX = (e.pageX - pos.left);\n      }\n      // Support for synthetic events\n      relativeX = relativeX >= 0 ? relativeX : 0;\n      relativeY = relativeY >= 0 ? relativeY : 0;\n\n      var scale = 'scale(' + ((element.clientWidth / 100) * 3) + ')';\n      var translate = 'translate(0,0)';\n\n      if (velocity) {\n        translate = 'translate(' + (velocity.x) + 'px, ' + (velocity.y) + 'px)';\n      }\n\n      // Attach data to element\n      ripple.setAttribute('data-hold', Date.now());\n      ripple.setAttribute('data-x', relativeX);\n      ripple.setAttribute('data-y', relativeY);\n      ripple.setAttribute('data-scale', scale);\n      ripple.setAttribute('data-translate', translate);\n\n      // Set ripple position\n      var rippleStyle = {\n        top: relativeY + 'px',\n        left: relativeX + 'px'\n      };\n\n      ripple.classList.add('waves-notransition');\n      ripple.setAttribute('style', convertStyle(rippleStyle));\n      ripple.classList.remove('waves-notransition');\n\n      // Scale the ripple\n      rippleStyle['-webkit-transform'] = scale + ' ' + translate;\n      rippleStyle['-moz-transform'] = scale + ' ' + translate;\n      rippleStyle['-ms-transform'] = scale + ' ' + translate;\n      rippleStyle['-o-transform'] = scale + ' ' + translate;\n      rippleStyle.transform = scale + ' ' + translate;\n      rippleStyle.opacity = '1';\n\n      var duration = e.type === 'mousemove' ? 2500 : Effect.duration;\n      rippleStyle['-webkit-transition-duration'] = duration + 'ms';\n      rippleStyle['-moz-transition-duration'] = duration + 'ms';\n      rippleStyle['-o-transition-duration'] = duration + 'ms';\n      rippleStyle['transition-duration'] = duration + 'ms';\n\n      ripple.setAttribute('style', convertStyle(rippleStyle));\n    },\n\n    hide: function (e, element) {\n      element = element || this;\n\n      var ripples = element.getElementsByClassName('waves-rippling');\n\n      for (var i = 0, len = ripples.length; i < len; i++) {\n        removeRipple(e, element, ripples[i]);\n      }\n\n      if (isTouchAvailable) {\n        element.removeEventListener('touchend', Effect.hide);\n        element.removeEventListener('touchcancel', Effect.hide);\n      }\n\n      element.removeEventListener('mouseup', Effect.hide);\n      element.removeEventListener('mouseleave', Effect.hide);\n    }\n  };\n\n  /**\n   * Collection of wrapper for HTML element that only have single tag\n   * like <input> and <img>\n   */\n  var TagWrapper = {\n\n    // Wrap <input> tag so it can perform the effect\n    input: function (element) {\n\n      var parent = element.parentNode;\n\n      // If input already have parent just pass through\n      if (parent.tagName.toLowerCase() === 'span' && parent.classList.contains('waves-effect')) {\n        return;\n      }\n\n      // Put element class and style to the specified parent\n      var wrapper = document.createElement('span');\n      wrapper.className = 'waves-input-wrapper';\n      // element.className = 'waves-button-input';\n\n      // Put element as child\n      parent.replaceChild(wrapper, element);\n      wrapper.appendChild(element);\n\n    },\n\n    // Wrap <img> tag so it can perform the effect\n    img: function (element) {\n\n      var parent = element.parentNode;\n\n      // If input already have parent just pass through\n      if (parent.tagName.toLowerCase() === 'i' && parent.classList.contains('waves-effect')) {\n        return;\n      }\n\n      // Put element as child\n      var wrapper = document.createElement('i');\n      parent.replaceChild(wrapper, element);\n      wrapper.appendChild(element);\n\n    }\n  };\n\n  /**\n   * Hide the effect and remove the ripple. Must be\n   * a separate function to pass the JSLint...\n   */\n  function removeRipple(e, el, ripple) {\n\n    // Check if the ripple still exist\n    if (!ripple) {\n      return;\n    }\n\n    ripple.classList.remove('waves-rippling');\n\n    var relativeX = ripple.getAttribute('data-x');\n    var relativeY = ripple.getAttribute('data-y');\n    var scale = ripple.getAttribute('data-scale');\n    var translate = ripple.getAttribute('data-translate');\n\n    // Get delay beetween mousedown and mouse leave\n    var diff = Date.now() - Number(ripple.getAttribute('data-hold'));\n    var delay = 350 - diff;\n\n    if (delay < 0) {\n      delay = 0;\n    }\n\n    if (e.type === 'mousemove') {\n      delay = 150;\n    }\n\n    // Fade out ripple after delay\n    var duration = e.type === 'mousemove' ? 2500 : Effect.duration;\n\n    setTimeout(function () {\n\n      var style = {\n        top: relativeY + 'px',\n        left: relativeX + 'px',\n        opacity: '0',\n\n        // Duration\n        '-webkit-transition-duration': duration + 'ms',\n        '-moz-transition-duration': duration + 'ms',\n        '-o-transition-duration': duration + 'ms',\n        'transition-duration': duration + 'ms',\n        '-webkit-transform': scale + ' ' + translate,\n        '-moz-transform': scale + ' ' + translate,\n        '-ms-transform': scale + ' ' + translate,\n        '-o-transform': scale + ' ' + translate,\n        'transform': scale + ' ' + translate\n      };\n\n      ripple.setAttribute('style', convertStyle(style));\n\n      setTimeout(function () {\n        try {\n          el.removeChild(ripple);\n        } catch (e) {\n          return false;\n        }\n      }, duration);\n\n    }, delay);\n  }\n\n\n  /**\n   * Disable mousedown event for 500ms during and after touch\n   */\n  var TouchHandler = {\n\n    /* uses an integer rather than bool so there's no issues with\n     * needing to clear timeouts if another touch event occurred\n     * within the 500ms. Cannot mouseup between touchstart and\n     * touchend, nor in the 500ms after touchend. */\n    touches: 0,\n\n    allowEvent: function (e) {\n\n      var allow = true;\n\n      if (/^(mousedown|mousemove)$/.test(e.type) && TouchHandler.touches) {\n        allow = false;\n      }\n\n      return allow;\n    },\n    registerEvent: function (e) {\n      var eType = e.type;\n\n      if (eType === 'touchstart') {\n\n        TouchHandler.touches += 1; // push\n\n      } else if (/^(touchend|touchcancel)$/.test(eType)) {\n\n        setTimeout(function () {\n          if (TouchHandler.touches) {\n            TouchHandler.touches -= 1; // pop after 500ms\n          }\n        }, 500);\n\n      }\n    }\n  };\n\n\n  /**\n   * Delegated click handler for .waves-effect element.\n   * returns null when .waves-effect element not in \"click tree\"\n   */\n  function getWavesEffectElement(e) {\n\n    if (TouchHandler.allowEvent(e) === false) {\n      return null;\n    }\n\n    var element = null;\n    var target = e.target || e.srcElement;\n\n    while (target.parentElement) {\n      if ((!(target instanceof SVGElement)) && target.classList.contains('waves-effect')) {\n        element = target;\n        break;\n      }\n      target = target.parentElement;\n    }\n\n    return element;\n  }\n\n  /**\n   * Bubble the click and show effect if .waves-effect elem was found\n   */\n  function showEffect(e) {\n\n    // Disable effect if element has \"disabled\" property on it\n    // In some cases, the event is not triggered by the current element\n    // if (e.target.getAttribute('disabled') !== null) {\n    //     return;\n    // }\n\n    var element = getWavesEffectElement(e);\n\n    if (element !== null) {\n\n      // Make it sure the element has either disabled property, disabled attribute or 'disabled' class\n      if (element.disabled || element.getAttribute('disabled') || element.classList.contains('disabled')) {\n        return;\n      }\n\n      TouchHandler.registerEvent(e);\n\n      if (e.type === 'touchstart' && Effect.delay) {\n\n        var hidden = false;\n\n        var timer = setTimeout(function () {\n          timer = null;\n          Effect.show(e, element);\n        }, Effect.delay);\n\n        var hideEffect = function (hideEvent) {\n\n          // if touch hasn't moved, and effect not yet started: start effect now\n          if (timer) {\n            clearTimeout(timer);\n            timer = null;\n            Effect.show(e, element);\n          }\n          if (!hidden) {\n            hidden = true;\n            Effect.hide(hideEvent, element);\n          }\n\n          removeListeners();\n        };\n\n        var touchMove = function (moveEvent) {\n          if (timer) {\n            clearTimeout(timer);\n            timer = null;\n          }\n          hideEffect(moveEvent);\n\n          removeListeners();\n        };\n\n        element.addEventListener('touchmove', touchMove, false);\n        element.addEventListener('touchend', hideEffect, false);\n        element.addEventListener('touchcancel', hideEffect, false);\n\n        var removeListeners = function () {\n          element.removeEventListener('touchmove', touchMove);\n          element.removeEventListener('touchend', hideEffect);\n          element.removeEventListener('touchcancel', hideEffect);\n        };\n      } else {\n\n        Effect.show(e, element);\n\n        if (isTouchAvailable) {\n          element.addEventListener('touchend', Effect.hide, false);\n          element.addEventListener('touchcancel', Effect.hide, false);\n        }\n\n        element.addEventListener('mouseup', Effect.hide, false);\n        element.addEventListener('mouseleave', Effect.hide, false);\n      }\n    }\n  }\n\n  Waves.init = function (options) {\n    var body = document.body;\n\n    options = options || {};\n\n    if ('duration' in options) {\n      Effect.duration = options.duration;\n    }\n\n    if ('delay' in options) {\n      Effect.delay = options.delay;\n    }\n\n    if (isTouchAvailable) {\n      body.addEventListener('touchstart', showEffect, false);\n      body.addEventListener('touchcancel', TouchHandler.registerEvent, false);\n      body.addEventListener('touchend', TouchHandler.registerEvent, false);\n    }\n\n    body.addEventListener('mousedown', showEffect, false);\n  };\n\n\n  /**\n   * Attach Waves to dynamically loaded inputs, or add .waves-effect and other\n   * waves classes to a set of elements. Set drag to true if the ripple mouseover\n   * or skimming effect should be applied to the elements.\n   */\n  Waves.attach = function (elements, classes) {\n\n    elements = getWavesElements(elements);\n\n    if (toString.call(classes) === '[object Array]') {\n      classes = classes.join(' ');\n    }\n\n    classes = classes ? ' ' + classes : '';\n\n    var element, tagName;\n\n    for (var i = 0, len = elements.length; i < len; i++) {\n\n      element = elements[i];\n      tagName = element.tagName.toLowerCase();\n\n      if (['input', 'img'].indexOf(tagName) !== -1) {\n        TagWrapper[tagName](element);\n        element = element.parentElement;\n      }\n\n      if (element.className.indexOf('waves-effect') === -1) {\n        element.className += ' waves-effect' + classes;\n      }\n    }\n  };\n\n\n  /**\n   * Cause a ripple to appear in an element via code.\n   */\n  Waves.ripple = function (elements, options) {\n    elements = getWavesElements(elements);\n    var elementsLen = elements.length;\n\n    options = options || {};\n    options.wait = options.wait || 0;\n    options.position = options.position || null; // default = centre of element\n\n\n    if (elementsLen) {\n      var element, pos, off, centre = {},\n        i = 0;\n      var mousedown = {\n        type: 'mousedown',\n        button: 1\n      };\n      var hideRipple = function (mouseup, element) {\n        return function () {\n          Effect.hide(mouseup, element);\n        };\n      };\n\n      for (; i < elementsLen; i++) {\n        element = elements[i];\n        pos = options.position || {\n          x: element.clientWidth / 2,\n          y: element.clientHeight / 2\n        };\n\n        off = offset(element);\n        centre.x = off.left + pos.x;\n        centre.y = off.top + pos.y;\n\n        mousedown.pageX = centre.x;\n        mousedown.pageY = centre.y;\n\n        Effect.show(mousedown, element);\n\n        if (options.wait >= 0 && options.wait !== null) {\n          var mouseup = {\n            type: 'mouseup',\n            button: 1\n          };\n\n          setTimeout(hideRipple(mouseup, element), options.wait);\n        }\n      }\n    }\n  };\n\n  /**\n   * Remove all ripples from an element.\n   */\n  Waves.calm = function (elements) {\n    elements = getWavesElements(elements);\n    var mouseup = {\n      type: 'mouseup',\n      button: 1\n    };\n\n    for (var i = 0, len = elements.length; i < len; i++) {\n      Effect.hide(mouseup, elements[i]);\n    }\n  };\n\n  /**\n   * Deprecated API fallback\n   */\n  Waves.displayEffect = function (options) {\n    console.error('Waves.displayEffect() has been deprecated and will be removed in future version. Please use Waves.init() to initialize Waves effect');\n    Waves.init(options);\n  };\n\n  return Waves;\n});\n$(document).ready(function () {\n  //Initialization\n  Waves.attach('.btn:not(.btn-flat), .btn-floating', ['waves-light']);\n  Waves.attach('.btn-flat', ['waves-effect']);\n  Waves.attach('.chip', ['waves-effect']);\n  Waves.attach('.view a .mask', ['waves-light']);\n  Waves.attach('.waves-light', ['waves-light']);\n  Waves.attach('.navbar-nav a:not(.navbar-brand), .nav-icons li a, .nav-tabs .nav-item:not(.dropdown)', ['waves-light']);\n  Waves.attach('.pager li a', ['waves-light']);\n  Waves.attach('.pagination .page-item .page-link', ['waves-effect']);\n  Waves.init();\n});\n","/* jSticky Plugin\n * =============\n * Author: Andrew Henderson (@AndrewHenderson)\n * Contributor: Mike Street (@mikestreety)\n * Date: 9/7/2012\n * Update: 09/20/2016\n * Website: http://github.com/andrewhenderson/jsticky/\n * Description: A jQuery plugin that keeps select DOM\n * element(s) in view while scrolling the page.\n */\n\n;(function($) {\n\n  $.fn.sticky = function(options) {\n    var defaults = {\n      topSpacing: 0, // No spacing by default\n      zIndex: '', // No default z-index\n      stopper: '.sticky-stopper', // Default stopper class, also accepts number value\n      stickyClass: false // Class applied to element when it's stuck\n    };\n    var settings = $.extend({}, defaults, options); // Accepts custom stopper id or class\n\n    // Checks if custom z-index was defined\n    function checkIndex() {\n      if (typeof settings.zIndex == 'number') {\n        return true;\n      } else {\n        return false;\n      }\n    }\n\n    var hasIndex = checkIndex(); // True or false\n\n    // Checks if a stopper exists in the DOM or number defined\n    function checkStopper() {\n      if (0 < $(settings.stopper).length || typeof settings.stopper === 'number') {\n        return true;\n      } else {\n        return false;\n      }\n    }\n    var hasStopper = checkStopper(); // True or false\n\n    return this.each(function() {\n\n      var $this = $(this);\n      var thisHeight = $this.outerHeight();\n      var thisWidth = $this.outerWidth();\n      var topSpacing = settings.topSpacing;\n      var zIndex = settings.zIndex;\n      var pushPoint = $this.offset().top - topSpacing; // Point at which the sticky element starts pushing\n      var placeholder = $('<div></div>').width(thisWidth).height(thisHeight).addClass('sticky-placeholder'); // Cache a clone sticky element\n      var stopper = settings.stopper;\n      var $window = $(window);\n\n      function stickyScroll() {\n\n        var windowTop  = $window.scrollTop(); // Check window's scroll position\n        var stopPoint = stopper;\n        var parentWidth = $this.parent().width();\n\n        placeholder.width(parentWidth)\n\n        if ( hasStopper && typeof stopper === 'string' ) {\n          var stopperTop = $(stopper).offset().top;\n          stopPoint  = (stopperTop - thisHeight) - topSpacing;\n        }\n\n        if (pushPoint < windowTop) {\n          // Create a placeholder for sticky element to occupy vertical real estate\n          if(settings.stickyClass)\n            $this.addClass(settings.stickyClass);\n\n          $this.after(placeholder).css({\n            position: 'fixed',\n            top: topSpacing,\n            width: parentWidth\n          });\n\n          if (hasIndex) {\n            $this.css({\n              zIndex: zIndex\n            });\n          }\n\n          if (hasStopper) {\n            if (stopPoint < windowTop) {\n              var diff = (stopPoint - windowTop) + topSpacing;\n              $this.css({\n                top: diff\n              });\n            }\n          }\n        } else {\n          if(settings.stickyClass)\n            $this.removeClass(settings.stickyClass);\n\n          $this.css({\n            position: 'static',\n            top: null,\n            left: null,\n            width: 'auto'\n          });\n\n          placeholder.remove();\n        }\n      }\n\n      if($window.innerHeight() > thisHeight) {\n\n        $window.bind('scroll', stickyScroll);\n        $window.bind('load', stickyScroll);\n        $window.bind('resize', stickyScroll);\n      }\n    });\n  };\n})(jQuery);","/*!\n * perfect-scrollbar v1.5.0\n * Copyright 2020 Hyunje Jun, MDBootstrap and Contributors\n * Licensed under MIT\n */\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = global || self, global.PerfectScrollbar = factory());\n}(this, (function () { 'use strict';\n\n  function get(element) {\n    return getComputedStyle(element);\n  }\n\n  function set(element, obj) {\n    for (var key in obj) {\n      var val = obj[key];\n      if (typeof val === 'number') {\n        val = val + \"px\";\n      }\n      element.style[key] = val;\n    }\n    return element;\n  }\n\n  function div(className) {\n    var div = document.createElement('div');\n    div.className = className;\n    return div;\n  }\n\n  var elMatches =\n    typeof Element !== 'undefined' &&\n    (Element.prototype.matches ||\n      Element.prototype.webkitMatchesSelector ||\n      Element.prototype.mozMatchesSelector ||\n      Element.prototype.msMatchesSelector);\n\n  function matches(element, query) {\n    if (!elMatches) {\n      throw new Error('No element matching method supported');\n    }\n\n    return elMatches.call(element, query);\n  }\n\n  function remove(element) {\n    if (element.remove) {\n      element.remove();\n    } else {\n      if (element.parentNode) {\n        element.parentNode.removeChild(element);\n      }\n    }\n  }\n\n  function queryChildren(element, selector) {\n    return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\n    );\n  }\n\n  var cls = {\n    main: 'ps',\n    rtl: 'ps__rtl',\n    element: {\n      thumb: function (x) { return (\"ps__thumb-\" + x); },\n      rail: function (x) { return (\"ps__rail-\" + x); },\n      consuming: 'ps__child--consume',\n    },\n    state: {\n      focus: 'ps--focus',\n      clicking: 'ps--clicking',\n      active: function (x) { return (\"ps--active-\" + x); },\n      scrolling: function (x) { return (\"ps--scrolling-\" + x); },\n    },\n  };\n\n  /*\n   * Helper methods\n   */\n  var scrollingClassTimeout = { x: null, y: null };\n\n  function addScrollingClass(i, x) {\n    var classList = i.element.classList;\n    var className = cls.state.scrolling(x);\n\n    if (classList.contains(className)) {\n      clearTimeout(scrollingClassTimeout[x]);\n    } else {\n      classList.add(className);\n    }\n  }\n\n  function removeScrollingClass(i, x) {\n    scrollingClassTimeout[x] = setTimeout(\n      function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\n      i.settings.scrollingThreshold\n    );\n  }\n\n  function setScrollingClassInstantly(i, x) {\n    addScrollingClass(i, x);\n    removeScrollingClass(i, x);\n  }\n\n  var EventElement = function EventElement(element) {\n    this.element = element;\n    this.handlers = {};\n  };\n\n  var prototypeAccessors = { isEmpty: { configurable: true } };\n\n  EventElement.prototype.bind = function bind (eventName, handler) {\n    if (typeof this.handlers[eventName] === 'undefined') {\n      this.handlers[eventName] = [];\n    }\n    this.handlers[eventName].push(handler);\n    this.element.addEventListener(eventName, handler, false);\n  };\n\n  EventElement.prototype.unbind = function unbind (eventName, target) {\n      var this$1 = this;\n\n    this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\n      if (target && handler !== target) {\n        return true;\n      }\n      this$1.element.removeEventListener(eventName, handler, false);\n      return false;\n    });\n  };\n\n  EventElement.prototype.unbindAll = function unbindAll () {\n    for (var name in this.handlers) {\n      this.unbind(name);\n    }\n  };\n\n  prototypeAccessors.isEmpty.get = function () {\n      var this$1 = this;\n\n    return Object.keys(this.handlers).every(\n      function (key) { return this$1.handlers[key].length === 0; }\n    );\n  };\n\n  Object.defineProperties( EventElement.prototype, prototypeAccessors );\n\n  var EventManager = function EventManager() {\n    this.eventElements = [];\n  };\n\n  EventManager.prototype.eventElement = function eventElement (element) {\n    var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\n    if (!ee) {\n      ee = new EventElement(element);\n      this.eventElements.push(ee);\n    }\n    return ee;\n  };\n\n  EventManager.prototype.bind = function bind (element, eventName, handler) {\n    this.eventElement(element).bind(eventName, handler);\n  };\n\n  EventManager.prototype.unbind = function unbind (element, eventName, handler) {\n    var ee = this.eventElement(element);\n    ee.unbind(eventName, handler);\n\n    if (ee.isEmpty) {\n      // remove\n      this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n    }\n  };\n\n  EventManager.prototype.unbindAll = function unbindAll () {\n    this.eventElements.forEach(function (e) { return e.unbindAll(); });\n    this.eventElements = [];\n  };\n\n  EventManager.prototype.once = function once (element, eventName, handler) {\n    var ee = this.eventElement(element);\n    var onceHandler = function (evt) {\n      ee.unbind(eventName, onceHandler);\n      handler(evt);\n    };\n    ee.bind(eventName, onceHandler);\n  };\n\n  function createEvent(name) {\n    if (typeof window.CustomEvent === 'function') {\n      return new CustomEvent(name);\n    } else {\n      var evt = document.createEvent('CustomEvent');\n      evt.initCustomEvent(name, false, false, undefined);\n      return evt;\n    }\n  }\n\n  function processScrollDiff(\n    i,\n    axis,\n    diff,\n    useScrollingClass,\n    forceFireReachEvent\n  ) {\n    if ( useScrollingClass === void 0 ) useScrollingClass = true;\n    if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n    var fields;\n    if (axis === 'top') {\n      fields = [\n        'contentHeight',\n        'containerHeight',\n        'scrollTop',\n        'y',\n        'up',\n        'down' ];\n    } else if (axis === 'left') {\n      fields = [\n        'contentWidth',\n        'containerWidth',\n        'scrollLeft',\n        'x',\n        'left',\n        'right' ];\n    } else {\n      throw new Error('A proper axis should be provided');\n    }\n\n    processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\n  }\n\n  function processScrollDiff$1(\n    i,\n    diff,\n    ref,\n    useScrollingClass,\n    forceFireReachEvent\n  ) {\n    var contentHeight = ref[0];\n    var containerHeight = ref[1];\n    var scrollTop = ref[2];\n    var y = ref[3];\n    var up = ref[4];\n    var down = ref[5];\n    if ( useScrollingClass === void 0 ) useScrollingClass = true;\n    if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n    var element = i.element;\n\n    // reset reach\n    i.reach[y] = null;\n\n    // 1 for subpixel rounding\n    if (element[scrollTop] < 1) {\n      i.reach[y] = 'start';\n    }\n\n    // 1 for subpixel rounding\n    if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n      i.reach[y] = 'end';\n    }\n\n    if (diff) {\n      element.dispatchEvent(createEvent((\"ps-scroll-\" + y)));\n\n      if (diff < 0) {\n        element.dispatchEvent(createEvent((\"ps-scroll-\" + up)));\n      } else if (diff > 0) {\n        element.dispatchEvent(createEvent((\"ps-scroll-\" + down)));\n      }\n\n      if (useScrollingClass) {\n        setScrollingClassInstantly(i, y);\n      }\n    }\n\n    if (i.reach[y] && (diff || forceFireReachEvent)) {\n      element.dispatchEvent(createEvent((\"ps-\" + y + \"-reach-\" + (i.reach[y]))));\n    }\n  }\n\n  function toInt(x) {\n    return parseInt(x, 10) || 0;\n  }\n\n  function isEditable(el) {\n    return (\n      matches(el, 'input,[contenteditable]') ||\n      matches(el, 'select,[contenteditable]') ||\n      matches(el, 'textarea,[contenteditable]') ||\n      matches(el, 'button,[contenteditable]')\n    );\n  }\n\n  function outerWidth(element) {\n    var styles = get(element);\n    return (\n      toInt(styles.width) +\n      toInt(styles.paddingLeft) +\n      toInt(styles.paddingRight) +\n      toInt(styles.borderLeftWidth) +\n      toInt(styles.borderRightWidth)\n    );\n  }\n\n  var env = {\n    isWebKit:\n      typeof document !== 'undefined' &&\n      'WebkitAppearance' in document.documentElement.style,\n    supportsTouch:\n      typeof window !== 'undefined' &&\n      ('ontouchstart' in window ||\n        ('maxTouchPoints' in window.navigator &&\n          window.navigator.maxTouchPoints > 0) ||\n        (window.DocumentTouch && document instanceof window.DocumentTouch)),\n    supportsIePointer:\n      typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n    isChrome:\n      typeof navigator !== 'undefined' &&\n      /Chrome/i.test(navigator && navigator.userAgent),\n  };\n\n  function updateGeometry(i) {\n    var element = i.element;\n    var roundedScrollTop = Math.floor(element.scrollTop);\n    var rect = element.getBoundingClientRect();\n\n    i.containerWidth = Math.ceil(rect.width);\n    i.containerHeight = Math.ceil(rect.height);\n    i.contentWidth = element.scrollWidth;\n    i.contentHeight = element.scrollHeight;\n\n    if (!element.contains(i.scrollbarXRail)) {\n      // clean up and append\n      queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\n      );\n      element.appendChild(i.scrollbarXRail);\n    }\n    if (!element.contains(i.scrollbarYRail)) {\n      // clean up and append\n      queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\n      );\n      element.appendChild(i.scrollbarYRail);\n    }\n\n    if (\n      !i.settings.suppressScrollX &&\n      i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n    ) {\n      i.scrollbarXActive = true;\n      i.railXWidth = i.containerWidth - i.railXMarginWidth;\n      i.railXRatio = i.containerWidth / i.railXWidth;\n      i.scrollbarXWidth = getThumbSize(\n        i,\n        toInt((i.railXWidth * i.containerWidth) / i.contentWidth)\n      );\n      i.scrollbarXLeft = toInt(\n        ((i.negativeScrollAdjustment + element.scrollLeft) *\n          (i.railXWidth - i.scrollbarXWidth)) /\n          (i.contentWidth - i.containerWidth)\n      );\n    } else {\n      i.scrollbarXActive = false;\n    }\n\n    if (\n      !i.settings.suppressScrollY &&\n      i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n    ) {\n      i.scrollbarYActive = true;\n      i.railYHeight = i.containerHeight - i.railYMarginHeight;\n      i.railYRatio = i.containerHeight / i.railYHeight;\n      i.scrollbarYHeight = getThumbSize(\n        i,\n        toInt((i.railYHeight * i.containerHeight) / i.contentHeight)\n      );\n      i.scrollbarYTop = toInt(\n        (roundedScrollTop * (i.railYHeight - i.scrollbarYHeight)) /\n          (i.contentHeight - i.containerHeight)\n      );\n    } else {\n      i.scrollbarYActive = false;\n    }\n\n    if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n      i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n    }\n    if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n      i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n    }\n\n    updateCss(element, i);\n\n    if (i.scrollbarXActive) {\n      element.classList.add(cls.state.active('x'));\n    } else {\n      element.classList.remove(cls.state.active('x'));\n      i.scrollbarXWidth = 0;\n      i.scrollbarXLeft = 0;\n      element.scrollLeft = i.isRtl === true ? i.contentWidth : 0;\n    }\n    if (i.scrollbarYActive) {\n      element.classList.add(cls.state.active('y'));\n    } else {\n      element.classList.remove(cls.state.active('y'));\n      i.scrollbarYHeight = 0;\n      i.scrollbarYTop = 0;\n      element.scrollTop = 0;\n    }\n  }\n\n  function getThumbSize(i, thumbSize) {\n    if (i.settings.minScrollbarLength) {\n      thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n    }\n    if (i.settings.maxScrollbarLength) {\n      thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n    }\n    return thumbSize;\n  }\n\n  function updateCss(element, i) {\n    var xRailOffset = { width: i.railXWidth };\n    var roundedScrollTop = Math.floor(element.scrollTop);\n\n    if (i.isRtl) {\n      xRailOffset.left =\n        i.negativeScrollAdjustment +\n        element.scrollLeft +\n        i.containerWidth -\n        i.contentWidth;\n    } else {\n      xRailOffset.left = element.scrollLeft;\n    }\n    if (i.isScrollbarXUsingBottom) {\n      xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\n    } else {\n      xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n    }\n    set(i.scrollbarXRail, xRailOffset);\n\n    var yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n    if (i.isScrollbarYUsingRight) {\n      if (i.isRtl) {\n        yRailOffset.right =\n          i.contentWidth -\n          (i.negativeScrollAdjustment + element.scrollLeft) -\n          i.scrollbarYRight -\n          i.scrollbarYOuterWidth -\n          9;\n      } else {\n        yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n      }\n    } else {\n      if (i.isRtl) {\n        yRailOffset.left =\n          i.negativeScrollAdjustment +\n          element.scrollLeft +\n          i.containerWidth * 2 -\n          i.contentWidth -\n          i.scrollbarYLeft -\n          i.scrollbarYOuterWidth;\n      } else {\n        yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n      }\n    }\n    set(i.scrollbarYRail, yRailOffset);\n\n    set(i.scrollbarX, {\n      left: i.scrollbarXLeft,\n      width: i.scrollbarXWidth - i.railBorderXWidth,\n    });\n    set(i.scrollbarY, {\n      top: i.scrollbarYTop,\n      height: i.scrollbarYHeight - i.railBorderYWidth,\n    });\n  }\n\n  function clickRail(i) {\n    var element = i.element;\n\n    i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\n    i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\n      var positionTop =\n        e.pageY -\n        window.pageYOffset -\n        i.scrollbarYRail.getBoundingClientRect().top;\n      var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n      i.element.scrollTop += direction * i.containerHeight;\n      updateGeometry(i);\n\n      e.stopPropagation();\n    });\n\n    i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });\n    i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\n      var positionLeft =\n        e.pageX -\n        window.pageXOffset -\n        i.scrollbarXRail.getBoundingClientRect().left;\n      var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n      i.element.scrollLeft += direction * i.containerWidth;\n      updateGeometry(i);\n\n      e.stopPropagation();\n    });\n  }\n\n  function dragThumb(i) {\n    bindMouseScrollHandler(i, [\n      'containerWidth',\n      'contentWidth',\n      'pageX',\n      'railXWidth',\n      'scrollbarX',\n      'scrollbarXWidth',\n      'scrollLeft',\n      'x',\n      'scrollbarXRail' ]);\n    bindMouseScrollHandler(i, [\n      'containerHeight',\n      'contentHeight',\n      'pageY',\n      'railYHeight',\n      'scrollbarY',\n      'scrollbarYHeight',\n      'scrollTop',\n      'y',\n      'scrollbarYRail' ]);\n  }\n\n  function bindMouseScrollHandler(\n    i,\n    ref\n  ) {\n    var containerHeight = ref[0];\n    var contentHeight = ref[1];\n    var pageY = ref[2];\n    var railYHeight = ref[3];\n    var scrollbarY = ref[4];\n    var scrollbarYHeight = ref[5];\n    var scrollTop = ref[6];\n    var y = ref[7];\n    var scrollbarYRail = ref[8];\n\n    var element = i.element;\n\n    var startingScrollTop = null;\n    var startingMousePageY = null;\n    var scrollBy = null;\n\n    function mouseMoveHandler(e) {\n      if (e.touches && e.touches[0]) {\n        e[pageY] = e.touches[0].pageY;\n      }\n      element[scrollTop] =\n        startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n      addScrollingClass(i, y);\n      updateGeometry(i);\n\n      e.stopPropagation();\n      e.preventDefault();\n    }\n\n    function mouseUpHandler() {\n      removeScrollingClass(i, y);\n      i[scrollbarYRail].classList.remove(cls.state.clicking);\n      i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n    }\n\n    function bindMoves(e, touchMode) {\n      startingScrollTop = element[scrollTop];\n      if (touchMode && e.touches) {\n        e[pageY] = e.touches[0].pageY;\n      }\n      startingMousePageY = e[pageY];\n      scrollBy =\n        (i[contentHeight] - i[containerHeight]) /\n        (i[railYHeight] - i[scrollbarYHeight]);\n      if (!touchMode) {\n        i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n        i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n        e.preventDefault();\n      } else {\n        i.event.bind(i.ownerDocument, 'touchmove', mouseMoveHandler);\n      }\n\n      i[scrollbarYRail].classList.add(cls.state.clicking);\n\n      e.stopPropagation();\n    }\n\n    i.event.bind(i[scrollbarY], 'mousedown', function (e) {\n      bindMoves(e);\n    });\n    i.event.bind(i[scrollbarY], 'touchstart', function (e) {\n      bindMoves(e, true);\n    });\n  }\n\n  function keyboard(i) {\n    var element = i.element;\n\n    var elementHovered = function () { return matches(element, ':hover'); };\n    var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\n\n    function shouldPreventDefault(deltaX, deltaY) {\n      var scrollTop = Math.floor(element.scrollTop);\n      if (deltaX === 0) {\n        if (!i.scrollbarYActive) {\n          return false;\n        }\n        if (\n          (scrollTop === 0 && deltaY > 0) ||\n          (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n        ) {\n          return !i.settings.wheelPropagation;\n        }\n      }\n\n      var scrollLeft = element.scrollLeft;\n      if (deltaY === 0) {\n        if (!i.scrollbarXActive) {\n          return false;\n        }\n        if (\n          (scrollLeft === 0 && deltaX < 0) ||\n          (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n        ) {\n          return !i.settings.wheelPropagation;\n        }\n      }\n      return true;\n    }\n\n    i.event.bind(i.ownerDocument, 'keydown', function (e) {\n      if (\n        (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n        e.defaultPrevented\n      ) {\n        return;\n      }\n\n      if (!elementHovered() && !scrollbarFocused()) {\n        return;\n      }\n\n      var activeElement = document.activeElement\n        ? document.activeElement\n        : i.ownerDocument.activeElement;\n      if (activeElement) {\n        if (activeElement.tagName === 'IFRAME') {\n          activeElement = activeElement.contentDocument.activeElement;\n        } else {\n          // go deeper if element is a webcomponent\n          while (activeElement.shadowRoot) {\n            activeElement = activeElement.shadowRoot.activeElement;\n          }\n        }\n        if (isEditable(activeElement)) {\n          return;\n        }\n      }\n\n      var deltaX = 0;\n      var deltaY = 0;\n\n      switch (e.which) {\n        case 37: // left\n          if (e.metaKey) {\n            deltaX = -i.contentWidth;\n          } else if (e.altKey) {\n            deltaX = -i.containerWidth;\n          } else {\n            deltaX = -30;\n          }\n          break;\n        case 38: // up\n          if (e.metaKey) {\n            deltaY = i.contentHeight;\n          } else if (e.altKey) {\n            deltaY = i.containerHeight;\n          } else {\n            deltaY = 30;\n          }\n          break;\n        case 39: // right\n          if (e.metaKey) {\n            deltaX = i.contentWidth;\n          } else if (e.altKey) {\n            deltaX = i.containerWidth;\n          } else {\n            deltaX = 30;\n          }\n          break;\n        case 40: // down\n          if (e.metaKey) {\n            deltaY = -i.contentHeight;\n          } else if (e.altKey) {\n            deltaY = -i.containerHeight;\n          } else {\n            deltaY = -30;\n          }\n          break;\n        case 32: // space bar\n          if (e.shiftKey) {\n            deltaY = i.containerHeight;\n          } else {\n            deltaY = -i.containerHeight;\n          }\n          break;\n        case 33: // page up\n          deltaY = i.containerHeight;\n          break;\n        case 34: // page down\n          deltaY = -i.containerHeight;\n          break;\n        case 36: // home\n          deltaY = i.contentHeight;\n          break;\n        case 35: // end\n          deltaY = -i.contentHeight;\n          break;\n        default:\n          return;\n      }\n\n      if (i.settings.suppressScrollX && deltaX !== 0) {\n        return;\n      }\n      if (i.settings.suppressScrollY && deltaY !== 0) {\n        return;\n      }\n\n      element.scrollTop -= deltaY;\n      element.scrollLeft += deltaX;\n      updateGeometry(i);\n\n      if (shouldPreventDefault(deltaX, deltaY)) {\n        e.preventDefault();\n      }\n    });\n  }\n\n  function wheel(i) {\n    var element = i.element;\n\n    function shouldPreventDefault(deltaX, deltaY) {\n      var roundedScrollTop = Math.floor(element.scrollTop);\n      var isTop = element.scrollTop === 0;\n      var isBottom =\n        roundedScrollTop + element.offsetHeight === element.scrollHeight;\n      var isLeft = element.scrollLeft === 0;\n      var isRight =\n        element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n      var hitsBound;\n\n      // pick axis with primary direction\n      if (Math.abs(deltaY) > Math.abs(deltaX)) {\n        hitsBound = isTop || isBottom;\n      } else {\n        hitsBound = isLeft || isRight;\n      }\n\n      return hitsBound ? !i.settings.wheelPropagation : true;\n    }\n\n    function getDeltaFromEvent(e) {\n      var deltaX = e.deltaX;\n      var deltaY = -1 * e.deltaY;\n\n      if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\n        // OS X Safari\n        deltaX = (-1 * e.wheelDeltaX) / 6;\n        deltaY = e.wheelDeltaY / 6;\n      }\n\n      if (e.deltaMode && e.deltaMode === 1) {\n        // Firefox in deltaMode 1: Line scrolling\n        deltaX *= 10;\n        deltaY *= 10;\n      }\n\n      if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\n        // IE in some mouse drivers\n        deltaX = 0;\n        deltaY = e.wheelDelta;\n      }\n\n      if (e.shiftKey) {\n        // reverse axis with shift key\n        return [-deltaY, -deltaX];\n      }\n      return [deltaX, deltaY];\n    }\n\n    function shouldBeConsumedByChild(target, deltaX, deltaY) {\n      // FIXME: this is a workaround for <select> issue in FF and IE #571\n      if (!env.isWebKit && element.querySelector('select:focus')) {\n        return true;\n      }\n\n      if (!element.contains(target)) {\n        return false;\n      }\n\n      var cursor = target;\n\n      while (cursor && cursor !== element) {\n        if (cursor.classList.contains(cls.element.consuming)) {\n          return true;\n        }\n\n        var style = get(cursor);\n\n        // if deltaY && vertical scrollable\n        if (deltaY && style.overflowY.match(/(scroll|auto)/)) {\n          var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n          if (maxScrollTop > 0) {\n            if (\n              (cursor.scrollTop > 0 && deltaY < 0) ||\n              (cursor.scrollTop < maxScrollTop && deltaY > 0)\n            ) {\n              return true;\n            }\n          }\n        }\n        // if deltaX && horizontal scrollable\n        if (deltaX && style.overflowX.match(/(scroll|auto)/)) {\n          var maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n          if (maxScrollLeft > 0) {\n            if (\n              (cursor.scrollLeft > 0 && deltaX < 0) ||\n              (cursor.scrollLeft < maxScrollLeft && deltaX > 0)\n            ) {\n              return true;\n            }\n          }\n        }\n\n        cursor = cursor.parentNode;\n      }\n\n      return false;\n    }\n\n    function mousewheelHandler(e) {\n      var ref = getDeltaFromEvent(e);\n      var deltaX = ref[0];\n      var deltaY = ref[1];\n\n      if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) {\n        return;\n      }\n\n      var shouldPrevent = false;\n      if (!i.settings.useBothWheelAxes) {\n        // deltaX will only be used for horizontal scrolling and deltaY will\n        // only be used for vertical scrolling - this is the default\n        element.scrollTop -= deltaY * i.settings.wheelSpeed;\n        element.scrollLeft += deltaX * i.settings.wheelSpeed;\n      } else if (i.scrollbarYActive && !i.scrollbarXActive) {\n        // only vertical scrollbar is active and useBothWheelAxes option is\n        // active, so let's scroll vertical bar using both mouse wheel axes\n        if (deltaY) {\n          element.scrollTop -= deltaY * i.settings.wheelSpeed;\n        } else {\n          element.scrollTop += deltaX * i.settings.wheelSpeed;\n        }\n        shouldPrevent = true;\n      } else if (i.scrollbarXActive && !i.scrollbarYActive) {\n        // useBothWheelAxes and only horizontal bar is active, so use both\n        // wheel axes for horizontal bar\n        if (deltaX) {\n          element.scrollLeft += deltaX * i.settings.wheelSpeed;\n        } else {\n          element.scrollLeft -= deltaY * i.settings.wheelSpeed;\n        }\n        shouldPrevent = true;\n      }\n\n      updateGeometry(i);\n\n      shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY);\n      if (shouldPrevent && !e.ctrlKey) {\n        e.stopPropagation();\n        e.preventDefault();\n      }\n    }\n\n    if (typeof window.onwheel !== 'undefined') {\n      i.event.bind(element, 'wheel', mousewheelHandler);\n    } else if (typeof window.onmousewheel !== 'undefined') {\n      i.event.bind(element, 'mousewheel', mousewheelHandler);\n    }\n  }\n\n  function touch(i) {\n    if (!env.supportsTouch && !env.supportsIePointer) {\n      return;\n    }\n\n    var element = i.element;\n\n    function shouldPrevent(deltaX, deltaY) {\n      var scrollTop = Math.floor(element.scrollTop);\n      var scrollLeft = element.scrollLeft;\n      var magnitudeX = Math.abs(deltaX);\n      var magnitudeY = Math.abs(deltaY);\n\n      if (magnitudeY > magnitudeX) {\n        // user is perhaps trying to swipe up/down the page\n\n        if (\n          (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) ||\n          (deltaY > 0 && scrollTop === 0)\n        ) {\n          // set prevent for mobile Chrome refresh\n          return window.scrollY === 0 && deltaY > 0 && env.isChrome;\n        }\n      } else if (magnitudeX > magnitudeY) {\n        // user is perhaps trying to swipe left/right across the page\n\n        if (\n          (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth) ||\n          (deltaX > 0 && scrollLeft === 0)\n        ) {\n          return true;\n        }\n      }\n\n      return true;\n    }\n\n    function applyTouchMove(differenceX, differenceY) {\n      element.scrollTop -= differenceY;\n      element.scrollLeft -= differenceX;\n\n      updateGeometry(i);\n    }\n\n    var startOffset = {};\n    var startTime = 0;\n    var speed = {};\n    var easingLoop = null;\n\n    function getTouch(e) {\n      if (e.targetTouches) {\n        return e.targetTouches[0];\n      } else {\n        // Maybe IE pointer\n        return e;\n      }\n    }\n\n    function shouldHandle(e) {\n      if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) {\n        return false;\n      }\n      if (e.targetTouches && e.targetTouches.length === 1) {\n        return true;\n      }\n      if (\n        e.pointerType &&\n        e.pointerType !== 'mouse' &&\n        e.pointerType !== e.MSPOINTER_TYPE_MOUSE\n      ) {\n        return true;\n      }\n      return false;\n    }\n\n    function touchStart(e) {\n      if (!shouldHandle(e)) {\n        return;\n      }\n\n      var touch = getTouch(e);\n\n      startOffset.pageX = touch.pageX;\n      startOffset.pageY = touch.pageY;\n\n      startTime = new Date().getTime();\n\n      if (easingLoop !== null) {\n        clearInterval(easingLoop);\n      }\n    }\n\n    function shouldBeConsumedByChild(target, deltaX, deltaY) {\n      if (!element.contains(target)) {\n        return false;\n      }\n\n      var cursor = target;\n\n      while (cursor && cursor !== element) {\n        if (cursor.classList.contains(cls.element.consuming)) {\n          return true;\n        }\n\n        var style = get(cursor);\n\n        // if deltaY && vertical scrollable\n        if (deltaY && style.overflowY.match(/(scroll|auto)/)) {\n          var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n          if (maxScrollTop > 0) {\n            if (\n              (cursor.scrollTop > 0 && deltaY < 0) ||\n              (cursor.scrollTop < maxScrollTop && deltaY > 0)\n            ) {\n              return true;\n            }\n          }\n        }\n        // if deltaX && horizontal scrollable\n        if (deltaX && style.overflowX.match(/(scroll|auto)/)) {\n          var maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n          if (maxScrollLeft > 0) {\n            if (\n              (cursor.scrollLeft > 0 && deltaX < 0) ||\n              (cursor.scrollLeft < maxScrollLeft && deltaX > 0)\n            ) {\n              return true;\n            }\n          }\n        }\n\n        cursor = cursor.parentNode;\n      }\n\n      return false;\n    }\n\n    function touchMove(e) {\n      if (shouldHandle(e)) {\n        var touch = getTouch(e);\n\n        var currentOffset = { pageX: touch.pageX, pageY: touch.pageY };\n\n        var differenceX = currentOffset.pageX - startOffset.pageX;\n        var differenceY = currentOffset.pageY - startOffset.pageY;\n\n        if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) {\n          return;\n        }\n\n        applyTouchMove(differenceX, differenceY);\n        startOffset = currentOffset;\n\n        var currentTime = new Date().getTime();\n\n        var timeGap = currentTime - startTime;\n        if (timeGap > 0) {\n          speed.x = differenceX / timeGap;\n          speed.y = differenceY / timeGap;\n          startTime = currentTime;\n        }\n\n        if (shouldPrevent(differenceX, differenceY)) {\n          e.preventDefault();\n        }\n      }\n    }\n    function touchEnd() {\n      if (i.settings.swipeEasing) {\n        clearInterval(easingLoop);\n        easingLoop = setInterval(function() {\n          if (i.isInitialized) {\n            clearInterval(easingLoop);\n            return;\n          }\n\n          if (!speed.x && !speed.y) {\n            clearInterval(easingLoop);\n            return;\n          }\n\n          if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {\n            clearInterval(easingLoop);\n            return;\n          }\n\n          applyTouchMove(speed.x * 30, speed.y * 30);\n\n          speed.x *= 0.8;\n          speed.y *= 0.8;\n        }, 10);\n      }\n    }\n\n    if (env.supportsTouch) {\n      i.event.bind(element, 'touchstart', touchStart);\n      i.event.bind(element, 'touchmove', touchMove);\n      i.event.bind(element, 'touchend', touchEnd);\n    } else if (env.supportsIePointer) {\n      if (window.PointerEvent) {\n        i.event.bind(element, 'pointerdown', touchStart);\n        i.event.bind(element, 'pointermove', touchMove);\n        i.event.bind(element, 'pointerup', touchEnd);\n      } else if (window.MSPointerEvent) {\n        i.event.bind(element, 'MSPointerDown', touchStart);\n        i.event.bind(element, 'MSPointerMove', touchMove);\n        i.event.bind(element, 'MSPointerUp', touchEnd);\n      }\n    }\n  }\n\n  var defaultSettings = function () { return ({\n    handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'],\n    maxScrollbarLength: null,\n    minScrollbarLength: null,\n    scrollingThreshold: 1000,\n    scrollXMarginOffset: 0,\n    scrollYMarginOffset: 0,\n    suppressScrollX: false,\n    suppressScrollY: false,\n    swipeEasing: true,\n    useBothWheelAxes: false,\n    wheelPropagation: true,\n    wheelSpeed: 1,\n  }); };\n\n  var handlers = {\n    'click-rail': clickRail,\n    'drag-thumb': dragThumb,\n    keyboard: keyboard,\n    wheel: wheel,\n    touch: touch,\n  };\n\n  var PerfectScrollbar = function PerfectScrollbar(element, userSettings) {\n    var this$1 = this;\n    if ( userSettings === void 0 ) userSettings = {};\n\n    if (typeof element === 'string') {\n      element = document.querySelector(element);\n    }\n\n    if (!element || !element.nodeName) {\n      throw new Error('no element is specified to initialize PerfectScrollbar');\n    }\n\n    this.element = element;\n\n    element.classList.add(cls.main);\n\n    this.settings = defaultSettings();\n    for (var key in userSettings) {\n      this.settings[key] = userSettings[key];\n    }\n\n    this.containerWidth = null;\n    this.containerHeight = null;\n    this.contentWidth = null;\n    this.contentHeight = null;\n\n    var focus = function () { return element.classList.add(cls.state.focus); };\n    var blur = function () { return element.classList.remove(cls.state.focus); };\n\n    this.isRtl = get(element).direction === 'rtl';\n    if (this.isRtl === true) {\n      element.classList.add(cls.rtl);\n    }\n    this.isNegativeScroll = (function () {\n      var originalScrollLeft = element.scrollLeft;\n      var result = null;\n      element.scrollLeft = -1;\n      result = element.scrollLeft < 0;\n      element.scrollLeft = originalScrollLeft;\n      return result;\n    })();\n    this.negativeScrollAdjustment = this.isNegativeScroll\n      ? element.scrollWidth - element.clientWidth\n      : 0;\n    this.event = new EventManager();\n    this.ownerDocument = element.ownerDocument || document;\n\n    this.scrollbarXRail = div(cls.element.rail('x'));\n    element.appendChild(this.scrollbarXRail);\n    this.scrollbarX = div(cls.element.thumb('x'));\n    this.scrollbarXRail.appendChild(this.scrollbarX);\n    this.scrollbarX.setAttribute('tabindex', 0);\n    this.event.bind(this.scrollbarX, 'focus', focus);\n    this.event.bind(this.scrollbarX, 'blur', blur);\n    this.scrollbarXActive = null;\n    this.scrollbarXWidth = null;\n    this.scrollbarXLeft = null;\n    var railXStyle = get(this.scrollbarXRail);\n    this.scrollbarXBottom = parseInt(railXStyle.bottom, 10);\n    if (isNaN(this.scrollbarXBottom)) {\n      this.isScrollbarXUsingBottom = false;\n      this.scrollbarXTop = toInt(railXStyle.top);\n    } else {\n      this.isScrollbarXUsingBottom = true;\n    }\n    this.railBorderXWidth =\n      toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth);\n    // Set rail to display:block to calculate margins\n    set(this.scrollbarXRail, { display: 'block' });\n    this.railXMarginWidth =\n      toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight);\n    set(this.scrollbarXRail, { display: '' });\n    this.railXWidth = null;\n    this.railXRatio = null;\n\n    this.scrollbarYRail = div(cls.element.rail('y'));\n    element.appendChild(this.scrollbarYRail);\n    this.scrollbarY = div(cls.element.thumb('y'));\n    this.scrollbarYRail.appendChild(this.scrollbarY);\n    this.scrollbarY.setAttribute('tabindex', 0);\n    this.event.bind(this.scrollbarY, 'focus', focus);\n    this.event.bind(this.scrollbarY, 'blur', blur);\n    this.scrollbarYActive = null;\n    this.scrollbarYHeight = null;\n    this.scrollbarYTop = null;\n    var railYStyle = get(this.scrollbarYRail);\n    this.scrollbarYRight = parseInt(railYStyle.right, 10);\n    if (isNaN(this.scrollbarYRight)) {\n      this.isScrollbarYUsingRight = false;\n      this.scrollbarYLeft = toInt(railYStyle.left);\n    } else {\n      this.isScrollbarYUsingRight = true;\n    }\n    this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null;\n    this.railBorderYWidth =\n      toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth);\n    set(this.scrollbarYRail, { display: 'block' });\n    this.railYMarginHeight =\n      toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom);\n    set(this.scrollbarYRail, { display: '' });\n    this.railYHeight = null;\n    this.railYRatio = null;\n\n    this.reach = {\n      x:\n        element.scrollLeft <= 0\n          ? 'start'\n          : element.scrollLeft >= this.contentWidth - this.containerWidth\n          ? 'end'\n          : null,\n      y:\n        element.scrollTop <= 0\n          ? 'start'\n          : element.scrollTop >= this.contentHeight - this.containerHeight\n          ? 'end'\n          : null,\n    };\n\n    this.isAlive = true;\n\n    this.settings.handlers.forEach(function (handlerName) { return handlers[handlerName](this$1); });\n\n    this.lastScrollTop = Math.floor(element.scrollTop); // for onScroll only\n    this.lastScrollLeft = element.scrollLeft; // for onScroll only\n    this.event.bind(this.element, 'scroll', function (e) { return this$1.onScroll(e); });\n    updateGeometry(this);\n  };\n\n  PerfectScrollbar.prototype.update = function update () {\n    if (!this.isAlive) {\n      return;\n    }\n\n    // Recalcuate negative scrollLeft adjustment\n    this.negativeScrollAdjustment = this.isNegativeScroll\n      ? this.element.scrollWidth - this.element.clientWidth\n      : 0;\n\n    // Recalculate rail margins\n    set(this.scrollbarXRail, { display: 'block' });\n    set(this.scrollbarYRail, { display: 'block' });\n    this.railXMarginWidth =\n      toInt(get(this.scrollbarXRail).marginLeft) +\n      toInt(get(this.scrollbarXRail).marginRight);\n    this.railYMarginHeight =\n      toInt(get(this.scrollbarYRail).marginTop) +\n      toInt(get(this.scrollbarYRail).marginBottom);\n\n    // Hide scrollbars not to affect scrollWidth and scrollHeight\n    set(this.scrollbarXRail, { display: 'none' });\n    set(this.scrollbarYRail, { display: 'none' });\n\n    updateGeometry(this);\n\n    processScrollDiff(this, 'top', 0, false, true);\n    processScrollDiff(this, 'left', 0, false, true);\n\n    set(this.scrollbarXRail, { display: '' });\n    set(this.scrollbarYRail, { display: '' });\n  };\n\n  PerfectScrollbar.prototype.onScroll = function onScroll (e) {\n    if (!this.isAlive) {\n      return;\n    }\n\n    updateGeometry(this);\n    processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop);\n    processScrollDiff(\n      this,\n      'left',\n      this.element.scrollLeft - this.lastScrollLeft\n    );\n\n    this.lastScrollTop = Math.floor(this.element.scrollTop);\n    this.lastScrollLeft = this.element.scrollLeft;\n  };\n\n  PerfectScrollbar.prototype.destroy = function destroy () {\n    if (!this.isAlive) {\n      return;\n    }\n\n    this.event.unbindAll();\n    remove(this.scrollbarX);\n    remove(this.scrollbarY);\n    remove(this.scrollbarXRail);\n    remove(this.scrollbarYRail);\n    this.removePsClasses();\n\n    // unset elements\n    this.element = null;\n    this.scrollbarX = null;\n    this.scrollbarY = null;\n    this.scrollbarXRail = null;\n    this.scrollbarYRail = null;\n\n    this.isAlive = false;\n  };\n\n  PerfectScrollbar.prototype.removePsClasses = function removePsClasses () {\n    this.element.className = this.element.className\n      .split(' ')\n      .filter(function (name) { return !name.match(/^ps([-_].+|)$/); })\n      .join(' ');\n  };\n\n  return PerfectScrollbar;\n\n})));\n","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.every` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: sloppyArrayMethod('every') }, {\n  every: function every(callbackfn /* , thisArg */) {\n    return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","/*\n * Toastr\n * Copyright 2012-2015\n * Authors: John Papa, Hans Fjällemark, and Tim Ferrell.\n * All Rights Reserved.\n * Use, reproduction, distribution, and modification of this code is subject to the terms and\n * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php\n *\n * ARIA Support: Greta Krafsig\n *\n * Project: https://github.com/CodeSeven/toastr\n */\n/* global define */\n; (function (define) {\n    define(['jquery'], function ($) {\n        return (function () {\n            var $container;\n            var listener;\n            var toastId = 0;\n            var toastType = {\n                error: 'error',\n                info: 'info',\n                success: 'success',\n                warning: 'warning'\n            };\n\n            var toastr = {\n                clear: clear,\n                remove: remove,\n                error: error,\n                getContainer: getContainer,\n                info: info,\n                options: {},\n                subscribe: subscribe,\n                success: success,\n                version: '2.1.1',\n                warning: warning\n            };\n\n            var previousToast;\n\n            return toastr;\n\n            ////////////////\n\n            function error(message, title, optionsOverride) {\n                return notify({\n                    type: toastType.error,\n                    iconClass: getOptions().iconClasses.error,\n                    message: message,\n                    optionsOverride: optionsOverride,\n                    title: title\n                });\n            }\n\n            function getContainer(options, create) {\n                if (!options) { options = getOptions(); }\n                $container = $('#' + options.containerId);\n                if ($container.length) {\n                    return $container;\n                }\n                if (create) {\n                    $container = createContainer(options);\n                }\n                return $container;\n            }\n\n            function info(message, title, optionsOverride) {\n                return notify({\n                    type: toastType.info,\n                    iconClass: getOptions().iconClasses.info,\n                    message: message,\n                    optionsOverride: optionsOverride,\n                    title: title\n                });\n            }\n\n            function subscribe(callback) {\n                listener = callback;\n            }\n\n            function success(message, title, optionsOverride) {\n                return notify({\n                    type: toastType.success,\n                    iconClass: getOptions().iconClasses.success,\n                    message: message,\n                    optionsOverride: optionsOverride,\n                    title: title\n                });\n            }\n\n            function warning(message, title, optionsOverride) {\n                return notify({\n                    type: toastType.warning,\n                    iconClass: getOptions().iconClasses.warning,\n                    message: message,\n                    optionsOverride: optionsOverride,\n                    title: title\n                });\n            }\n\n            function clear($toastElement, clearOptions) {\n                var options = getOptions();\n                if (!$container) { getContainer(options); }\n                if (!clearToast($toastElement, options, clearOptions)) {\n                    clearContainer(options);\n                }\n            }\n\n            function remove($toastElement) {\n                var options = getOptions();\n                if (!$container) { getContainer(options); }\n                if ($toastElement && $(':focus', $toastElement).length === 0) {\n                    removeToast($toastElement);\n                    return;\n                }\n                if ($container.children().length) {\n                    $container.remove();\n                }\n            }\n\n            // internal functions\n\n            function clearContainer (options) {\n                var toastsToClear = $container.children();\n                for (var i = toastsToClear.length - 1; i >= 0; i--) {\n                    clearToast($(toastsToClear[i]), options);\n                }\n            }\n\n            function clearToast ($toastElement, options, clearOptions) {\n                var force = clearOptions && clearOptions.force ? clearOptions.force : false;\n                if ($toastElement && (force || $(':focus', $toastElement).length === 0)) {\n                    $toastElement[options.hideMethod]({\n                        duration: options.hideDuration,\n                        easing: options.hideEasing,\n                        complete: function () { removeToast($toastElement); }\n                    });\n                    return true;\n                }\n                return false;\n            }\n\n            function createContainer(options) {\n                $container = $('<div/>')\n                    .attr('id', options.containerId)\n                    .addClass(options.positionClass)\n                    .attr('aria-live', 'polite')\n                    .attr('role', 'alert');\n\n                $container.appendTo($(options.target));\n                return $container;\n            }\n\n            function getDefaults() {\n                return {\n                    tapToDismiss: true,\n                    toastClass: 'md-toast',\n                    containerId: 'toast-container',\n                    debug: false,\n\n                    showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery\n                    showDuration: 300,\n                    showEasing: 'swing', //swing and linear are built into jQuery\n                    onShown: undefined,\n                    hideMethod: 'fadeOut',\n                    hideDuration: 1000,\n                    hideEasing: 'swing',\n                    onHidden: undefined,\n\n                    extendedTimeOut: 1000,\n                    iconClasses: {\n                        error: 'md-toast-error',\n                        info: 'md-toast-info',\n                        success: 'md-toast-success',\n                        warning: 'md-toast-warning'\n                    },\n                    iconClass: 'md-toast-info',\n                    positionClass: 'md-toast-top-right',\n                    timeOut: 5000, // Set timeOut and extendedTimeOut to 0 to make it sticky\n                    titleClass: 'md-toast-title',\n                    messageClass: 'md-toast-message',\n                    target: 'body',\n                    closeHtml: '<button type=\"button\">&times;</button>',\n                    newestOnTop: true,\n                    preventDuplicates: false,\n                    progressBar: false\n                };\n            }\n\n            function publish(args) {\n                if (!listener) { return; }\n                listener(args);\n            }\n\n            function notify(map) {\n                var options = getOptions();\n                var iconClass = map.iconClass || options.iconClass;\n\n                if (typeof (map.optionsOverride) !== 'undefined') {\n                    options = $.extend(options, map.optionsOverride);\n                    iconClass = map.optionsOverride.iconClass || iconClass;\n                }\n\n                if (shouldExit(options, map)) { return; }\n\n                toastId++;\n\n                $container = getContainer(options, true);\n\n                var intervalId = null;\n                var $toastElement = $('<div/>');\n                var $titleElement = $('<div/>');\n                var $messageElement = $('<div/>');\n                var $progressElement = $('<div/>');\n                var $closeElement = $(options.closeHtml);\n                var progressBar = {\n                    intervalId: null,\n                    hideEta: null,\n                    maxHideTime: null\n                };\n                var response = {\n                    toastId: toastId,\n                    state: 'visible',\n                    startTime: new Date(),\n                    options: options,\n                    map: map\n                };\n\n                personalizeToast();\n\n                displayToast();\n\n                handleEvents();\n\n                publish(response);\n\n                if (options.debug && console) {\n                    console.log(response);\n                }\n\n                return $toastElement;\n\n                function personalizeToast() {\n                    setIcon();\n                    setTitle();\n                    setMessage();\n                    setCloseButton();\n                    setProgressBar();\n                    setSequence();\n                }\n\n                function handleEvents() {\n                    $toastElement.hover(stickAround, delayedHideToast);\n                    if (!options.onclick && options.tapToDismiss) {\n                        $toastElement.click(hideToast);\n                    }\n\n                    if (options.closeButton && $closeElement) {\n                        $closeElement.click(function (event) {\n                            if (event.stopPropagation) {\n                                event.stopPropagation();\n                            } else if (event.cancelBubble !== undefined && event.cancelBubble !== true) {\n                                event.cancelBubble = true;\n                            }\n                            hideToast(true);\n                        });\n                    }\n\n                    if (options.onclick) {\n                        $toastElement.click(function () {\n                            options.onclick();\n                            hideToast();\n                        });\n                    }\n                }\n\n                function displayToast() {\n                    $toastElement.hide();\n\n                    $toastElement[options.showMethod](\n                        {duration: options.showDuration, easing: options.showEasing, complete: options.onShown}\n                    );\n\n                    if (options.timeOut > 0) {\n                        intervalId = setTimeout(hideToast, options.timeOut);\n                        progressBar.maxHideTime = parseFloat(options.timeOut);\n                        progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n                        if (options.progressBar) {\n                            progressBar.intervalId = setInterval(updateProgress, 10);\n                        }\n                    }\n                }\n\n                function setIcon() {\n                    if (map.iconClass) {\n                        $toastElement.addClass(options.toastClass).addClass(iconClass);\n                    }\n                }\n\n                function setSequence() {\n                    if (options.newestOnTop) {\n                        $container.prepend($toastElement);\n                    } else {\n                        $container.append($toastElement);\n                    }\n                }\n\n                function setTitle() {\n                    if (map.title) {\n                        $titleElement.append(map.title).addClass(options.titleClass);\n                        $toastElement.append($titleElement);\n                    }\n                }\n\n                function setMessage() {\n                    if (map.message) {\n                        $messageElement.append(map.message).addClass(options.messageClass);\n                        $toastElement.append($messageElement);\n                    }\n                }\n\n                function setCloseButton() {\n                    if (options.closeButton) {\n                        $closeElement.addClass('md-toast-close-button').attr('role', 'button');\n                        $toastElement.prepend($closeElement);\n                    }\n                }\n\n                function setProgressBar() {\n                    if (options.progressBar) {\n                        $progressElement.addClass('md-toast-progress');\n                        $toastElement.prepend($progressElement);\n                    }\n                }\n\n                function shouldExit(options, map) {\n                    if (options.preventDuplicates) {\n                        if (map.message === previousToast) {\n                            return true;\n                        } else {\n                            previousToast = map.message;\n                        }\n                    }\n                    return false;\n                }\n\n                function hideToast(override) {\n                    if ($(':focus', $toastElement).length && !override) {\n                        return;\n                    }\n                    clearTimeout(progressBar.intervalId);\n                    return $toastElement[options.hideMethod]({\n                        duration: options.hideDuration,\n                        easing: options.hideEasing,\n                        complete: function () {\n                            removeToast($toastElement);\n                            if (options.onHidden && response.state !== 'hidden') {\n                                options.onHidden();\n                            }\n                            response.state = 'hidden';\n                            response.endTime = new Date();\n                            publish(response);\n                        }\n                    });\n                }\n\n                function delayedHideToast() {\n                    if (options.timeOut > 0 || options.extendedTimeOut > 0) {\n                        intervalId = setTimeout(hideToast, options.extendedTimeOut);\n                        progressBar.maxHideTime = parseFloat(options.extendedTimeOut);\n                        progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n                    }\n                }\n\n                function stickAround() {\n                    clearTimeout(intervalId);\n                    progressBar.hideEta = 0;\n                    $toastElement.stop(true, true)[options.showMethod](\n                        {duration: options.showDuration, easing: options.showEasing}\n                    );\n                }\n\n                function updateProgress() {\n                    var percentage = ((progressBar.hideEta - (new Date().getTime())) / progressBar.maxHideTime) * 100;\n                    $progressElement.width(percentage + '%');\n                }\n            }\n\n            function getOptions() {\n                return $.extend({}, getDefaults(), toastr.options);\n            }\n\n            function removeToast($toastElement) {\n                if (!$container) { $container = getContainer(); }\n                if ($toastElement.is(':visible')) {\n                    return;\n                }\n                $toastElement.remove();\n                $toastElement = null;\n                if ($container.children().length === 0) {\n                    $container.remove();\n                    previousToast = undefined;\n                }\n            }\n\n        })();\n    });\n}(typeof define === 'function' && define.amd ? define : function (deps, factory) {\n    if (typeof module !== 'undefined' && module.exports) { //Node\n        module.exports = factory(require('jquery'));\n    } else {\n        window['toastr'] = factory(window['jQuery']);\n    }\n}));\n","jQuery(($) => {\n\n  $(document).on('click', '.chip .close', function () {\n\n    const $this = $(this);\n\n    if ($this.closest('.chips').data('initialized')) {\n      return;\n    }\n\n    $this.closest('.chip').remove();\n  });\n\n  class MaterialChips {\n\n    constructor($chipsWrapper, options = {}) {\n\n      this.$chipsWrapper = $chipsWrapper;\n      this.options = typeof options === 'string' ? options : {\n        data: this.fallback().or(options.data).or([]).value(), // @type { tag: string, image?: string, id?: number }[]\n        dataChip: this.fallback().or(options.dataChip).or([]).value(), // autocomplete data; @type string[]\n        placeholder: this.fallback().or($chipsWrapper.attr('data-placeholder')).or(options.placeholder).or('').value(),\n        secondaryPlaceholder: this.fallback().or($chipsWrapper.attr('data-secondary-placeholder')).or(options.secondaryPlaceholder).or('').value(),\n        sortAutocompleteData: this.fallback().or($chipsWrapper.attr('data-sort-autocomplete-data')).or(options.sortAutocompleteData).or(true).value(),\n        autocompleteDataCompareFn: this.fallback().or(options.autocompleteDataCompareFn).or(undefined).value()\n      };\n\n      this.$autocompleteList = $('<ul class=\"chip-ul z-depth-1\" tabindex=\"0\"></ul>');\n\n      this.keyCodes = {\n        backspace: 8,\n        enter: 13,\n        arrowLeft: 37,\n        arrowRight: 39,\n        delete: 46,\n        comma: 188\n      };\n    }\n\n    get isPublicInterfaceCall() {\n\n      return typeof this.options === 'string';\n    }\n\n    get isInitialized() {\n\n      return this.$chipsWrapper.data('initialized');\n    }\n\n    getSelectedChip() {\n\n      return this.$chipsWrapper.find('.chip.selected');\n    }\n\n    returnPublicInterface() {\n\n      if (this.options === 'data') {\n        return this.$chipsWrapper.data('chips');\n      }\n\n      if (this.options === 'options') {\n        return this.$chipsWrapper.data('options');\n      }\n\n      return this.$chipsWrapper;\n    }\n\n    init() {\n\n      if (this.isPublicInterfaceCall) {\n        return;\n      }\n\n      this.assignOptions();\n\n      if (this.isInitialized) {\n        return;\n      }\n\n      this.$chipsWrapper.data({\n        chips: this.options.data.slice(),\n        index: this.$chipsWrapper.index(),\n        initialized: true\n      });\n      this.$chipsWrapper.attr('tabindex', 0);\n\n      if (!this.$chipsWrapper.hasClass('.chips')) {\n        this.$chipsWrapper.addClass('chips');\n      }\n\n      this.renderChips();\n\n      this.bindEvents();\n    }\n\n    assignOptions() {\n\n      if (!Array.isArray(this.options.data)) {\n\n        this.options.data = [];\n      }\n\n      this.$chipsWrapper.data('options', Object.assign({}, this.options));\n    }\n\n    bindEvents() {\n\n      this.bindChipsWrapperClick();\n      this.bindChipsWrapperBlur();\n      this.bindSingleChipClick();\n      this.bindChipsWrapperKeydown();\n      this.bindChipsInputClick();\n      this.bindChipsInputFocusout();\n      this.bindChipsInputKeydown();\n      this.bindDeleteButtonClick();\n      this.bindAutocompleteInputKeyup();\n      this.bindAutocompleteOptionClick();\n    }\n\n    bindChipsWrapperClick() {\n\n      this.$chipsWrapper.on('click', (e) => $(e.target).find('input').focus().addClass('active'));\n    }\n\n    bindChipsWrapperBlur() {\n\n      this.$chipsWrapper.on('blur', (e) => {\n\n        setTimeout(() => this.$autocompleteList.removeClass('active').hide(), 100);\n        $(e.target).removeClass('active');\n        this.getSelectedChip().removeClass('selected');\n      });\n    }\n\n    bindSingleChipClick() {\n\n      this.$chipsWrapper.on('click', '.chip', (e) => {\n\n        const $this = $(e.target);\n        const chipIndex = $this.index();\n\n        this.$chipsWrapper.find('.chip.selected').not($this).removeClass('selected');\n        this.selectChip(chipIndex);\n      });\n    }\n\n    bindChipsWrapperKeydown() {\n\n      this.$chipsWrapper.on('keydown', (e) => {\n\n        const backspacePressed = e.which === this.keyCodes.backspace;\n        const deletePressed = e.which === this.keyCodes.delete;\n        const leftArrowPressed = e.which === this.keyCodes.arrowLeft;\n        const rightArrowPressed = e.which === this.keyCodes.arrowRight;\n\n        if ((backspacePressed || deletePressed) && this.getSelectedChip().length) {\n\n          e.preventDefault();\n\n          const nextIndex = this.deleteSelectedChip();\n          this.selectChip(nextIndex);\n        } else if (leftArrowPressed) {\n\n          this.selectLeftChip();\n        } else if (rightArrowPressed) {\n\n          this.selectRightChip();\n        }\n      });\n    }\n\n    bindChipsInputClick() {\n\n      const $chipsInput = this.$chipsWrapper.find('input');\n      $chipsInput.on('click', (e) => {\n\n        const $target = $(e.target);\n        $target.addClass('active');\n\n        this.$chipsWrapper.addClass('focus');\n        this.$chipsWrapper.find('.chip').removeClass('selected');\n      });\n    }\n\n    bindChipsInputFocusout() {\n\n      this.$chipsWrapper.on('focusout', 'input', () => this.$chipsWrapper.removeClass('focus'));\n    }\n\n    bindChipsInputKeydown() {\n\n      this.$chipsWrapper.on('keydown', 'input', (e) => {\n\n        const $chipsInput = $(e.target);\n\n        const enterPressed = e.which === this.keyCodes.enter;\n        const commaPressed = e.which === this.keyCodes.comma;\n        const backspacePressed = e.which === this.keyCodes.backspace;\n\n        if ((enterPressed || commaPressed) && !this.$autocompleteList.find('li').hasClass('selected')) {\n\n          e.preventDefault();\n\n          this.addChip({\n            tag: $chipsInput.val()\n          });\n\n          $chipsInput.val('');\n\n          return;\n        }\n\n        const isInputEmpty = $chipsInput.val() === '';\n\n        if (isInputEmpty && backspacePressed && !this.$chipsWrapper.find('.chip').hasClass('selected')) {\n\n          const lastChipIndex = this.$chipsWrapper.find('.chip-position-wrapper .chip').last().index();\n          this.deleteChip(lastChipIndex);\n        }\n      });\n    }\n\n    bindDeleteButtonClick() {\n\n      this.$chipsWrapper.on('click', '.chip i.close', (e) => {\n        e.stopPropagation();\n\n        const $deleteButton = $(e.target);\n        const chipIndex = $deleteButton.closest('.chip').index();\n\n        this.deleteChip(chipIndex);\n        this.$chipsWrapper.find('input').focus();\n      });\n    }\n\n    bindAutocompleteInputKeyup() {\n\n      const $input = this.$chipsWrapper.find('.chip-position-wrapper').find('input');\n      $input.on('keyup', (e) => {\n\n        const $inputValue = $input.val();\n\n        this.$autocompleteList.empty();\n\n        if ($inputValue.length) {\n\n          this.options.dataChip.forEach((item) => {\n\n            if (item.toLowerCase().includes($inputValue.toLowerCase())) {\n\n              this.$chipsWrapper.find('.chip-position-wrapper').append(this.$autocompleteList.append($(`<li>${item}</li>`)));\n            }\n          });\n\n          this.$autocompleteList.addClass('active').show();\n        } else {\n\n          this.$autocompleteList.removeClass('active').hide();\n        }\n\n        const enterPressed = e.which === this.keyCodes.enter;\n        const commaPressed = e.which === this.keyCodes.comma;\n        const lastChipText = this.$chipsWrapper.find('.chip-position-wrapper .chip').last().text();\n\n        if ((enterPressed || commaPressed) && !this.options.dataChip.includes(lastChipText)) {\n\n          this.options.dataChip.push(lastChipText);\n\n          if (this.options.sortAutocompleteData) {\n\n            this.options.dataChip.sort(this.options.autocompleteDataCompareFn);\n          }\n        } else if (enterPressed || commaPressed) {\n\n          this.$autocompleteList.remove();\n        }\n      });\n    }\n\n    bindAutocompleteOptionClick() {\n\n      this.$chipsWrapper.on('click', 'li', (e) => {\n\n        e.preventDefault();\n\n        const $li = $(e.target);\n        this.addChip({\n          tag: $li.text()\n        });\n\n        this.$chipsWrapper.find('.chip-position-wrapper').find('input').val('');\n        this.$autocompleteList.remove();\n      });\n    }\n\n    deleteSelectedChip() {\n\n      const $selectedChip = this.getSelectedChip();\n      const siblingsLength = $selectedChip.siblings('.chip').length;\n      const chipIndex = $selectedChip.index();\n\n      this.deleteChip(chipIndex);\n\n      let selectIndex = -1;\n\n      if (chipIndex < siblingsLength - 1) {\n        selectIndex = chipIndex;\n      } else if (chipIndex === siblingsLength || chipIndex === siblingsLength - 1) {\n        selectIndex = siblingsLength - 1;\n      }\n\n      if (!siblingsLength) {\n\n        this.$chipsWrapper.find('input').focus();\n      }\n\n      return selectIndex;\n    }\n\n    selectLeftChip() {\n\n      this.selectLeftRightChip(true);\n    }\n\n    selectRightChip() {\n\n      this.selectLeftRightChip(false);\n    }\n\n    selectLeftRightChip(left) {\n\n      const $selectedChip = this.getSelectedChip();\n      const currentIndex = $selectedChip.index();\n      const siblingsLength = $selectedChip.siblings('.chip').length;\n      let chipIndex = left ? currentIndex - 1 : currentIndex + 1;\n\n      if (left && chipIndex < 0) {\n\n        chipIndex = this.$chipsWrapper.find('.chip').length - 1;\n      } else if (!left && chipIndex > siblingsLength) {\n\n        this.$chipsWrapper.find('input').focus();\n        return;\n      }\n\n      this.$chipsWrapper.find('.chip').removeClass('selected');\n      this.selectChip(chipIndex);\n    }\n\n    renderChips() {\n\n      let html = '';\n\n      this.$chipsWrapper.data('chips').forEach((elem) => {\n\n        html += this.getSingleChipTemplate(elem);\n      });\n\n      if (this.$chipsWrapper.hasClass('chips-autocomplete')) {\n\n        html += '<span class=\"chip-position-wrapper position-relative\"><input class=\"input\" placeholder=\"\"></span>';\n      } else {\n\n        html += '<input class=\"input\" placeholder=\"\">';\n      }\n\n      this.$chipsWrapper.html(html);\n\n      this.setPlaceholder();\n    }\n\n    getSingleChipTemplate(chip) {\n\n      if (!chip.tag) {\n        return '';\n      }\n\n      let html = `<div class=\"chip\">${chip.tag}`;\n\n      if (chip.image) {\n        html += ` <img src=\"${chip.image}\" /> `;\n      }\n\n      html += '<i class=\"close fas fa-times\"></i>';\n      html += '</div>';\n\n      return html;\n    }\n\n    setPlaceholder() {\n\n      this.$chipsWrapper.find('input').prop('placeholder', this.options.data.length ? this.options.placeholder : this.options.secondaryPlaceholder);\n    }\n\n    addChip(chip) {\n\n      if (!this.isValid(chip)) {\n        return;\n      }\n\n      const $newChip = $(this.getSingleChipTemplate(chip));\n\n      this.$chipsWrapper.data('chips').push(chip);\n      this.options.data.push(chip);\n\n      if (this.$chipsWrapper.hasClass('chips-autocomplete') && this.$chipsWrapper.find('.chip').length > 0) {\n\n        $newChip.insertAfter(this.$chipsWrapper.find('.chip').last());\n      } else {\n\n        $newChip.insertBefore(this.$chipsWrapper.find('input'));\n      }\n\n      this.$chipsWrapper.trigger('chip.add', chip);\n\n      this.setPlaceholder();\n    }\n\n    isValid(chip) {\n\n      return chip.tag !== '' && !this.options.data.some((c) => c.tag === chip.tag);\n    }\n\n    deleteChip(chipIndex) {\n\n      const chip = this.$chipsWrapper.data('chips')[chipIndex];\n\n      this.$chipsWrapper.find('.chip').eq(chipIndex).remove();\n\n      this.$chipsWrapper.data('chips').splice(chipIndex, 1);\n      this.options.data.splice(chipIndex, 1);\n\n      this.$chipsWrapper.trigger('chip.delete', chip);\n\n      this.setPlaceholder();\n    }\n\n    selectChip(chipIndex) {\n      \n      const $chip = this.$chipsWrapper.find('.chip').eq(chipIndex);\n      if ($chip && !$chip.hasClass('selected')) {\n\n        $chip.addClass('selected');\n        this.$chipsWrapper.trigger('chip.select', this.$chipsWrapper.data('chips')[chipIndex]);\n      }\n    }\n\n    fallback() {\n\n      return {\n        _value: undefined,\n        or(value) {\n          if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\n            this._value = value;\n          }\n          return this;\n        },\n        value() {\n          return this._value;\n        }\n      };\n    }\n  }\n\n  $.fn.materialChip = function (options) {\n\n    if (this.length > 1) {\n\n      const instances = [];\n\n      this.each(function () {\n\n        const materialChips = new MaterialChips($(this), options);\n        materialChips.init();\n\n        instances.push(materialChips.returnPublicInterface());\n      });\n\n      return instances;\n    }\n\n    const materialChips = new MaterialChips($(this), options);\n    materialChips.init();\n\n    return materialChips.returnPublicInterface();\n  };\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: sloppyArrayMethod('some') }, {\n  some: function some(callbackfn /* , thisArg */) {\n    return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n  assign: assign\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !nativeAssign || fails(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var symbol = Symbol();\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\n  alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n  return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var argumentsLength = arguments.length;\n  var index = 1;\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  var propertyIsEnumerable = propertyIsEnumerableModule.f;\n  while (argumentsLength > index) {\n    var S = IndexedObject(arguments[index++]);\n    var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n    }\n  } return T;\n} : nativeAssign;\n","jQuery(($) => {\n\n  class Sticky {\n\n    constructor(element, options) {\n\n      this.defaults = {\n        topSpacing: 0,\n        zIndex: false,\n        stopper: '#footer',\n        stickyClass: false,\n        startScrolling: 'top',\n        minWidth: false\n      };\n\n      this.$element = element;\n      this.options = this.assignOptions(options);\n\n      this.$window = $(window);\n\n      this.stopper = this.options.stopper;\n      this.elementWidth = this.$element.outerWidth();\n      this.elementHeight = this.$element.outerHeight(true);\n\n      this.initialScrollTop = this.$element.offset().top;\n\n      this.$placeholder = $('<div class=\"sticky-placeholder\"></div>');\n      this.scrollTop = 0;\n\n      this.setPushPoint();\n      this.setStopperPosition();\n      this.bindEvents();\n\n    }\n\n    hasZIndex() {\n\n      return typeof this.options.zIndex === 'number';\n    }\n\n    hasStopper() {\n\n      return $(this.options.stopper).length || typeof this.options.stopper === 'number';\n    }\n\n    isScreenHeightEnough() {\n\n      return this.$element.outerHeight() + this.options.topSpacing < this.$window.height();\n    }\n\n    assignOptions(options) {\n\n      return $.extend({}, this.defaults, options);\n    }\n\n    setPushPoint() {\n\n      if (this.options.startScrolling === 'bottom' && !this.isScreenHeightEnough()) {\n\n        this.$pushPoint = this.initialScrollTop + this.$element.outerHeight(true) - this.$window.height();\n      } else {\n\n        this.$pushPoint = this.initialScrollTop - this.options.topSpacing;\n      }\n\n    }\n\n    setStopperPosition() {\n\n      if (typeof this.options.stopper === 'string') {\n\n        this.stopPoint = $(this.stopper).offset().top - this.options.topSpacing;\n\n      } else if (typeof this.options.stopper === 'number') {\n\n        this.stopPoint = this.options.stopper;\n      }\n    }\n\n    bindEvents() {\n\n      this.$window.on('resize', this.handleResize.bind(this));\n      this.$window.on('scroll', this.init.bind(this));\n\n    }\n\n    handleResize() {\n\n      const $parent = this.$element.parent();\n\n      this.elementWidth = $parent.width();\n      this.elementHeight = this.$element.outerHeight(true);\n\n      this.setPushPoint();\n      this.setStopperPosition();\n\n      this.init();\n    }\n\n    // eslint-disable-next-line consistent-return\n    init() {\n\n      if (this.options.minWidth && this.options.minWidth > this.$window.innerWidth()) {\n\n        return false;\n      }\n\n      if (this.options.startScrolling === 'bottom' && !this.isScreenHeightEnough()) {\n        this.scrollTop = this.$window.scrollTop() + this.$window.height();\n      } else {\n        this.scrollTop = this.$window.scrollTop();\n      }\n\n      if (this.$pushPoint < this.scrollTop) {\n\n        this.appendPlaceholder();\n        this.stickyStart();\n\n      } else {\n        this.stickyEnd();\n      }\n\n      if (this.$window.scrollTop() > this.$pushPoint) {\n        this.stop();\n      } else {\n        this.stickyEnd();\n      }\n\n    }\n\n    appendPlaceholder() {\n\n      this.$element.after(this.$placeholder);\n      this.$placeholder.css({\n        width: this.elementWidth,\n        height: this.elementHeight\n      });\n    }\n\n    stickyStart() {\n\n      if (this.options.stickyClass) {\n\n        this.$element.addClass(this.options.stickyClass);\n      }\n\n      // @see: https://stackoverflow.com/a/4370047\n      this.$element.get(0).style.overflow = 'scroll';\n      const scrollHeight = this.$element.get(0).scrollHeight;\n      this.$element.get(0).style.overflow = '';\n\n      this.$element.css({\n        position: 'fixed',\n        width: this.elementWidth,\n        height: scrollHeight\n      });\n\n      if (this.options.startScrolling === 'bottom' && !this.isScreenHeightEnough()) {\n        this.$element.css({\n          bottom: 0,\n          top: ''\n        });\n\n      } else {\n\n        this.$element.css({\n          top: this.options.topSpacing\n        });\n      }\n\n      if (this.hasZIndex()) {\n        this.$element.css({\n          zIndex: this.options.zIndex\n        });\n      }\n    }\n\n    stickyEnd() {\n\n      if (this.options.stickyClass) {\n        this.$element.removeClass(this.options.stickyClass);\n      }\n\n      this.$placeholder.remove();\n\n      this.$element.css({\n        position: 'static',\n        top: this.options.topSpacing,\n        width: '',\n        height: ''\n      });\n    }\n\n    stop() {\n\n      if (this.stopPoint < $(this.$element).offset().top - this.options.topSpacing + this.$element.outerHeight(true)) {\n        this.$element.css({\n          position: 'absolute',\n          bottom: 0,\n          top: ''\n        });\n      }\n    }\n\n  }\n\n  $.fn.sticky = function (options) {\n    $(this).each(function () {\n      const sticky = new Sticky($(this), options);\n      sticky.init();\n    });\n  };\n});\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 defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n","var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.github.io/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","var setToStringTag = require('../internals/set-to-string-tag');\n\n// Math[@@toStringTag] property\n// https://tc39.github.io/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n","/*!\n * pickadate.js v3.6.3, 2019/04/03\n * By Amsul, http://amsul.ca\n * Hosted on http://amsul.github.io/pickadate.js\n * Licensed under MIT\n */\n\n(function ( factory ) {\n\n    // AMD.\n    if ( typeof define == 'function' && define.amd )\n        define( 'picker', ['jquery'], factory )\n  \n    // Node.js/browserify.\n    else if ( typeof exports == 'object' )\n        module.exports = factory( require('jquery') )\n  \n    // Browser globals.\n    else window.Picker = factory( jQuery )\n  \n  }(function( $ ) {\n  \n  var $window = $( window )\n  var $document = $( document )\n  var $html = $( document.documentElement )\n  var supportsTransitions = document.documentElement.style.transition != null\n  \n  \n  /**\n  * The picker constructor that creates a blank picker.\n  */\n  function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {\n  \n    // If there’s no element, return the picker constructor.\n    if ( !ELEMENT ) return PickerConstructor\n  \n    var IS_DEFAULT_THEME = false,\n  \n        // The state of the picker.\n        STATE = {\n            id: ELEMENT.id || 'P' + Math.abs( ~~(Math.random() * new Date()) ),\n            handlingOpen: false,\n        },\n  \n        // Merge the defaults and options passed.\n        SETTINGS = COMPONENT ? $.extend( true, {}, COMPONENT.defaults, OPTIONS ) : OPTIONS || {},\n  \n        // Merge the default classes with the settings classes.\n        CLASSES = $.extend( {}, PickerConstructor.klasses(), SETTINGS.klass ),\n  \n        // The element node wrapper into a jQuery object.\n        $ELEMENT = $( ELEMENT ),\n  \n        // On editable:true checks if should open\n        OPENCOUNTER = 2,\n  \n        // Pseudo picker constructor.\n        PickerInstance = function() {\n            return this.start()\n        },\n  \n        // The picker prototype.\n        P = PickerInstance.prototype = {\n  \n            constructor: PickerInstance,\n  \n            $node: $ELEMENT,\n  \n            /**\n             * Initialize everything\n             */\n            start: function() {\n  \n                // If it’s already started, do nothing.\n                if ( STATE && STATE.start ) return P\n  \n                // Update the picker states.\n                STATE.methods = {}\n                STATE.start = true\n                STATE.open = false\n                STATE.type = ELEMENT.type\n  \n  \n                // Confirm focus state, convert into text input to remove UA stylings,\n                // and set as readonly to prevent keyboard popup.\n                ELEMENT.autofocus = ELEMENT == getActiveElement()\n                ELEMENT.readOnly = !SETTINGS.editable\n                ELEMENT.id = ELEMENT.id || STATE.id\n                if ( ELEMENT.type != 'text' ) {\n                    ELEMENT.type = 'text'\n                }\n  \n  \n                // Create a new picker component with the settings.\n                P.component = new COMPONENT(P, SETTINGS)\n  \n  \n                // Create the picker root and then prepare it.\n                P.$root = $( '<div class=\"' + CLASSES.picker + '\" id=\"' + ELEMENT.id + '_root\" />' )\n                prepareElementRoot()\n  \n  \n                // Create the picker holder and then prepare it.\n                P.$holder = $( createWrappedComponent() ).appendTo( P.$root )\n                prepareElementHolder()\n  \n  \n                // If there’s a format for the hidden input element, create the element.\n                if ( SETTINGS.formatSubmit ) {\n                    prepareElementHidden()\n                }\n  \n  \n                // Prepare the input element.\n                prepareElement()\n  \n  \n                // Insert the hidden input as specified in the settings.\n                if ( SETTINGS.containerHidden ) $( SETTINGS.containerHidden ).append( P._hidden )\n                else $ELEMENT.after( P._hidden )\n  \n  \n                // Insert the root as specified in the settings.\n                if ( SETTINGS.container ) $( SETTINGS.container ).append( P.$root )\n                else $ELEMENT.after( P.$root )\n  \n  \n                // Bind the default component and settings events.\n                P.on({\n                    start: P.component.onStart,\n                    render: P.component.onRender,\n                    stop: P.component.onStop,\n                    open: P.component.onOpen,\n                    close: P.component.onClose,\n                    set: P.component.onSet\n                }).on({\n                    start: SETTINGS.onStart,\n                    render: SETTINGS.onRender,\n                    stop: SETTINGS.onStop,\n                    open: SETTINGS.onOpen,\n                    close: SETTINGS.onClose,\n                    set: SETTINGS.onSet\n                })\n  \n  \n                // Once we’re all set, check the theme in use.\n                IS_DEFAULT_THEME = isUsingDefaultTheme( P.$holder[0] )\n  \n  \n                // If the element has autofocus, open the picker.\n                if ( ELEMENT.autofocus ) {\n                    P.open()\n                }\n  \n  \n                // Trigger queued the “start” and “render” events.\n                return P.trigger( 'start' ).trigger( 'render' )\n            }, //start\n  \n  \n            /**\n             * Render a new picker\n             */\n            render: function( entireComponent ) {\n  \n                // Insert a new component holder in the root or box.\n                if ( entireComponent ) {\n                    P.$holder = $( createWrappedComponent() )\n                    prepareElementHolder()\n                    P.$root.html( P.$holder )\n                }\n                else P.$root.find( '.' + CLASSES.box ).html( P.component.nodes( STATE.open ) )\n  \n                // Trigger the queued “render” events.\n                return P.trigger( 'render' )\n            }, //render\n  \n  \n            /**\n             * Destroy everything\n             */\n            stop: function() {\n  \n                // If it’s already stopped, do nothing.\n                if ( !STATE.start ) return P\n  \n                // Then close the picker.\n                P.close()\n  \n                // Remove the hidden field.\n                if ( P._hidden ) {\n                    P._hidden.parentNode.removeChild( P._hidden )\n                }\n  \n                // Remove the root.\n                P.$root.remove()\n  \n                // Remove the input class, remove the stored data, and unbind\n                // the events (after a tick for IE - see `P.close`).\n                $ELEMENT.removeClass( CLASSES.input ).removeData( NAME )\n                setTimeout( function() {\n                    $ELEMENT.off( '.' + STATE.id )\n                }, 0)\n  \n                // Restore the element state\n                ELEMENT.type = STATE.type\n                ELEMENT.readOnly = false\n  \n                // Trigger the queued “stop” events.\n                P.trigger( 'stop' )\n  \n                // Reset the picker states.\n                STATE.methods = {}\n                STATE.start = false\n  \n                return P\n            }, //stop\n  \n  \n            /**\n             * Open up the picker\n             */\n            open: function( dontGiveFocus ) {\n                OPENCOUNTER++\n                // If it’s already open, do nothing.\n                if ( STATE.open ) return P\n    \n                // If it’s editable and already opened, do nothing.\n                if (OPENCOUNTER<4 && SETTINGS.editable) return P\n              \n                // * A Firefox bug, when `html` has `overflow:hidden`, results in\n                //   killing transitions :(. So add the “opened” state on the next tick.\n                //   Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289\n                setTimeout( function() {\n  \n                    // Add the “opened” class to the picker root.\n                    P.$root.addClass( CLASSES.opened )\n                    aria( P.$root[0], 'hidden', false )\n  \n                }, 0 )\n  \n                // If we have to give focus, bind the element and doc events.\n                if ( dontGiveFocus !== false ) {\n  \n                    // Set it as open.\n                    STATE.open = true\n  \n                    // Prevent the page from scrolling.\n                    if ( IS_DEFAULT_THEME ) {\n                        $('body').\n                            css( 'overflow', 'hidden' ).\n                            css( 'padding-right', '+=' + getScrollbarWidth() )\n                    }\n  \n                    // Pass focus to the root element’s jQuery object.\n                    focusPickerOnceOpened()\n  \n                    // Bind the document events.\n                    $document.on( 'click.' + STATE.id + ' focusin.' + STATE.id, function( event ) {\n                        // If the picker is currently midway through processing\n                        // the opening sequence of events then don't handle clicks\n                        // on any part of the DOM. This is caused by a bug in Chrome 73\n                        // where a click event is being generated with the incorrect\n                        // path in it.\n                        // In short, if someone does a click that finishes after the\n                        // new element is created then the path contains only the\n                        // parent element and not the input element itself.\n                        if (STATE.handlingOpen) {\n                          return;\n                        }\n  \n                        var target = getRealEventTarget( event, ELEMENT )\n  \n                        // If the target of the event is not the element, close the picker picker.\n                        // * Don’t worry about clicks or focusins on the root because those don’t bubble up.\n                        //   Also, for Firefox, a click on an `option` element bubbles up directly\n                        //   to the doc. So make sure the target wasn't the doc.\n                        // * In Firefox stopPropagation() doesn’t prevent right-click events from bubbling,\n                        //   which causes the picker to unexpectedly close when right-clicking it. So make\n                        //   sure the event wasn’t a right-click.\n                        // * In Chrome 62 and up, password autofill causes a simulated focusin event which\n                        //   closes the picker.\n                        if ( ! event.isSimulated && target != ELEMENT && target != document && event.which != 3 ) {\n  \n                            // If the target was the holder that covers the screen,\n                            // keep the element focused to maintain tabindex.\n                            P.close( target === P.$holder[0] )\n                        }\n  \n                    }).on( 'keydown.' + STATE.id, function( event ) {\n  \n                        var\n                            // Get the keycode.\n                            keycode = event.keyCode,\n  \n                            // Translate that to a selection change.\n                            keycodeToMove = P.component.key[ keycode ],\n  \n                            // Grab the target.\n                            target = getRealEventTarget( event, ELEMENT )\n  \n  \n                        // On escape, close the picker and give focus.\n                        if ( keycode == 27 ) {\n                            P.close( true )\n                        }\n  \n  \n                        // Check if there is a key movement or “enter” keypress on the element.\n                        else if ( target == P.$holder[0] && ( keycodeToMove || keycode == 13 ) ) {\n  \n                            // Prevent the default action to stop page movement.\n                            event.preventDefault()\n  \n                            // Trigger the key movement action.\n                            if ( keycodeToMove ) {\n                                PickerConstructor._.trigger( P.component.key.go, P, [ PickerConstructor._.trigger( keycodeToMove ) ] )\n                            }\n  \n                            // On “enter”, if the highlighted item isn’t disabled, set the value and close.\n                            else if ( !P.$root.find( '.' + CLASSES.highlighted ).hasClass( CLASSES.disabled ) ) {\n                                P.set( 'select', P.component.item.highlight )\n                                if ( SETTINGS.closeOnSelect ) {\n                                    P.close( true )\n                                }\n                            }\n                        }\n  \n  \n                        // If the target is within the root and “enter” is pressed,\n                        // prevent the default action and trigger a click on the target instead.\n                        else if ( $.contains( P.$root[0], target ) && keycode == 13 ) {\n                            event.preventDefault()\n                            target.click()\n                        }\n                    })\n                }\n  \n                // Trigger the queued “open” events.\n                return P.trigger( 'open' )\n            }, //open\n  \n  \n            /**\n             * Close the picker\n             */\n            close: function( giveFocus ) {\n                OPENCOUNTER = 0;\n  \n                // If it’s already closed, do nothing more.\n                if ( !STATE.open ) return P\n\n                // If we need to give focus, do it before changing states.\n                if ( giveFocus ) {\n                    if ( SETTINGS.editable ) {\n                        ELEMENT.click();\n                    }\n                    else {\n                        // ....ah yes! It would’ve been incomplete without a crazy workaround for IE :|\n                        // The focus is triggered *after* the close has completed - causing it\n                        // to open again. So unbind and rebind the event at the next tick.\n                        P.$holder.off( 'focus.toOpen' ).focus()\n                        setTimeout( function() {\n                            P.$holder.on( 'focus.toOpen', handleFocusToOpenEvent )\n                        }, 0 )\n                    }\n                }\n  \n                // Remove the “active” class.\n                $ELEMENT.removeClass( CLASSES.active )\n                aria( ELEMENT, 'expanded', false )\n  \n                // * A Firefox bug, when `html` has `overflow:hidden`, results in\n                //   killing transitions :(. So remove the “opened” state on the next tick.\n                //   Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289\n                setTimeout( function() {\n  \n                    // Remove the “opened” and “focused” class from the picker root.\n                    P.$root.removeClass( CLASSES.opened + ' ' + CLASSES.focused )\n                    aria( P.$root[0], 'hidden', true )\n  \n                }, 0 )\n  \n                // Allow the page to scroll.\n                if ( IS_DEFAULT_THEME ) {\n                    $('body').\n                        css( 'overflow', '' ).\n                        css( 'padding-right', '-=' + getScrollbarWidth() )\n                }\n  \n                document.activeElement.blur();\n                // Unbind the document events.\n                $document.off( '.' + STATE.id )\n                // Set it as closed.\n                STATE.open = false\n                // Trigger the queued “close” events.\n                return P.trigger( 'close' )\n            }, //close\n  \n  \n            /**\n             * Clear the values\n             */\n            clear: function( options ) {\n                document.activeElement.blur();\n                return P.set( 'clear', null, options )\n            }, //clear\n  \n  \n            /**\n             * Set something\n             */\n            set: function( thing, value, options ) {\n  \n                var thingItem, thingValue,\n                    thingIsObject = $.isPlainObject( thing ),\n                    thingObject = thingIsObject ? thing : {}\n  \n                // Make sure we have usable options.\n                options = thingIsObject && $.isPlainObject( value ) ? value : options || {}\n  \n                if ( thing ) {\n  \n                    // If the thing isn’t an object, make it one.\n                    if ( !thingIsObject ) {\n                        thingObject[ thing ] = value\n                    }\n  \n                    // Go through the things of items to set.\n                    for ( thingItem in thingObject ) {\n  \n                        // Grab the value of the thing.\n                        thingValue = thingObject[ thingItem ]\n  \n                        // First, if the item exists and there’s a value, set it.\n                        if ( thingItem in P.component.item ) {\n                            if ( thingValue === undefined ) thingValue = null\n                            P.component.set( thingItem, thingValue, options )\n                        }\n  \n                        // Then, check to update the element value and broadcast a change.\n                        if ( ( thingItem == 'select' || thingItem == 'clear' ) && SETTINGS.updateInput ) {\n                            $ELEMENT.\n                                val( thingItem == 'clear' ? '' : P.get( thingItem, SETTINGS.format ) ).\n                                trigger( 'change' )\n                        }\n                    }\n  \n                    // Render a new picker.\n                    P.render()\n                }\n  \n                // When the method isn’t muted, trigger queued “set” events and pass the `thingObject`.\n                return options.muted ? P : P.trigger( 'set', thingObject )\n            }, //set\n  \n  \n            /**\n             * Get something\n             */\n            get: function( thing, format ) {\n  \n                // Make sure there’s something to get.\n                thing = thing || 'value'\n  \n                // If a picker state exists, return that.\n                if ( STATE[ thing ] != null ) {\n                    return STATE[ thing ]\n                }\n  \n                // Return the submission value, if that.\n                if ( thing == 'valueSubmit' ) {\n                    if ( P._hidden ) {\n                        return P._hidden.value\n                    }\n                    thing = 'value'\n                }\n  \n                // Return the value, if that.\n                if ( thing == 'value' ) {\n                    return ELEMENT.value\n                }\n  \n                // Check if a component item exists, return that.\n                if ( thing in P.component.item ) {\n                    if ( typeof format == 'string' ) {\n                        var thingValue = P.component.get( thing )\n                        return thingValue ?\n                            PickerConstructor._.trigger(\n                                P.component.formats.toString,\n                                P.component,\n                                [ format, thingValue ]\n                            ) : ''\n                    }\n                    return P.component.get( thing )\n                }\n            }, //get\n  \n  \n  \n            /**\n             * Bind events on the things.\n             */\n            on: function( thing, method, internal ) {\n  \n                var thingName, thingMethod,\n                    thingIsObject = $.isPlainObject( thing ),\n                    thingObject = thingIsObject ? thing : {}\n  \n                if ( thing ) {\n  \n                    // If the thing isn’t an object, make it one.\n                    if ( !thingIsObject ) {\n                        thingObject[ thing ] = method\n                    }\n  \n                    // Go through the things to bind to.\n                    for ( thingName in thingObject ) {\n  \n                        // Grab the method of the thing.\n                        thingMethod = thingObject[ thingName ]\n  \n                        // If it was an internal binding, prefix it.\n                        if ( internal ) {\n                            thingName = '_' + thingName\n                        }\n  \n                        // Make sure the thing methods collection exists.\n                        STATE.methods[ thingName ] = STATE.methods[ thingName ] || []\n  \n                        // Add the method to the relative method collection.\n                        STATE.methods[ thingName ].push( thingMethod )\n                    }\n                }\n  \n                return P\n            }, //on\n  \n  \n  \n            /**\n             * Unbind events on the things.\n             */\n            off: function() {\n                var i, thingName,\n                    names = arguments;\n                for ( i = 0, namesCount = names.length; i < namesCount; i += 1 ) {\n                    thingName = names[i]\n                    if ( thingName in STATE.methods ) {\n                        delete STATE.methods[thingName]\n                    }\n                }\n                return P\n            },\n  \n  \n            /**\n             * Fire off method events.\n             */\n            trigger: function( name, data ) {\n                var _trigger = function( name ) {\n                    var methodList = STATE.methods[ name ]\n                    if ( methodList ) {\n                        methodList.map( function( method ) {\n                            PickerConstructor._.trigger( method, P, [ data ] )\n                        })\n                    }\n                }\n                _trigger( '_' + name )\n                _trigger( name )\n                return P\n            } //trigger\n        } //PickerInstance.prototype\n  \n  \n    /**\n     * Wrap the picker holder components together.\n     */\n    function createWrappedComponent() {\n  \n        // Create a picker wrapper holder\n        return PickerConstructor._.node( 'div',\n  \n            // Create a picker wrapper node\n            PickerConstructor._.node( 'div',\n  \n                // Create a picker frame\n                PickerConstructor._.node( 'div',\n  \n                    // Create a picker box node\n                    PickerConstructor._.node( 'div',\n  \n                        // Create the components nodes.\n                        P.component.nodes( STATE.open ),\n  \n                        // The picker box class\n                        CLASSES.box\n                    ),\n  \n                    // Picker wrap class\n                    CLASSES.wrap\n                ),\n  \n                // Picker frame class\n                CLASSES.frame\n            ),\n  \n            // Picker holder class\n            CLASSES.holder,\n  \n            'tabindex=\"-1\"'\n        ) //endreturn\n    } //createWrappedComponent\n  \n    /**\n     * Prepare the input element with all bindings.\n     */\n    function prepareElement() {\n  \n        $ELEMENT.\n  \n            // Store the picker data by component name.\n            data(NAME, P).\n  \n            // Add the “input” class name.\n            addClass(CLASSES.input).\n  \n            // If there’s a `data-value`, update the value of the element.\n            val( $ELEMENT.data('value') ?\n                P.get('select', SETTINGS.format) :\n                ELEMENT.value\n            ).\n  \n            // On focus/click, open the picker.\n            on( 'focus.' + STATE.id + ' click.' + STATE.id,\n            debounce(function(event) {\n                event.preventDefault()\n                P.open()\n            }, 100))\n  \n            // Mousedown handler to capture when the user starts interacting\n            // with the picker. This is used in working around a bug in Chrome 73.\n            .on('mousedown', function() {\n              STATE.handlingOpen = true;\n              var handler = function() {\n                // By default mouseup events are fired before a click event.\n                // By using a timeout we can force the mouseup to be handled\n                // after the corresponding click event is handled.\n                setTimeout(function() {\n                  $(document).off('mouseup', handler);\n                  STATE.handlingOpen = false;\n                }, 0);\n              };\n              $(document).on('mouseup', handler);\n            });\n  \n  \n        // Only bind keydown events if the element isn’t editable.\n        if ( !SETTINGS.editable ) {\n  \n            $ELEMENT.\n  \n                // Handle keyboard event based on the picker being opened or not.\n                on( 'keydown.' + STATE.id, handleKeydownEvent )\n        }\n  \n  \n        // Update the aria attributes.\n        aria(ELEMENT, {\n            haspopup: true,\n            expanded: false,\n            readonly: false,\n            owns: ELEMENT.id + '_root'\n        })\n    }\n  \n  \n    /**\n     * Prepare the root picker element with all bindings.\n     */\n    function prepareElementRoot() {\n        aria( P.$root[0], 'hidden', true )\n    }\n  \n  \n     /**\n      * Prepare the holder picker element with all bindings.\n      */\n    function prepareElementHolder() {\n  \n        P.$holder.\n  \n            on({\n  \n                // For iOS8.\n                keydown: handleKeydownEvent,\n  \n                'focus.toOpen': handleFocusToOpenEvent,\n  \n                blur: function() {\n                    // Remove the “target” class.\n                    $ELEMENT.removeClass( CLASSES.target )\n                },\n  \n                // When something within the holder is focused, stop from bubbling\n                // to the doc and remove the “focused” state from the root.\n                focusin: function( event ) {\n                    P.$root.removeClass( CLASSES.focused )\n                    event.stopPropagation()\n                },\n  \n                // When something within the holder is clicked, stop it\n                // from bubbling to the doc.\n                'mousedown click': function( event ) {\n  \n                    var target = getRealEventTarget( event, ELEMENT )\n  \n                    // Make sure the target isn’t the root holder so it can bubble up.\n                    if ( target != P.$holder[0] ) {\n  \n                        event.stopPropagation()\n  \n                        // * For mousedown events, cancel the default action in order to\n                        //   prevent cases where focus is shifted onto external elements\n                        //   when using things like jQuery mobile or MagnificPopup (ref: #249 & #120).\n                        //   Also, for Firefox, don’t prevent action on the `option` element.\n                        if ( event.type == 'mousedown' && !$( target ).is( 'input, select, textarea, button, option' )) {\n  \n                            event.preventDefault()\n  \n                            // Re-focus onto the holder so that users can click away\n                            // from elements focused within the picker.\n                            P.$holder.eq(0).focus()\n                        }\n                    }\n                }\n  \n            }).\n  \n            // If there’s a click on an actionable element, carry out the actions.\n            on( 'click', '[data-pick], [data-nav], [data-clear], [data-close]', function() {\n  \n                var $target = $( this ),\n                    targetData = $target.data(),\n                    targetDisabled = $target.hasClass( CLASSES.navDisabled ) || $target.hasClass( CLASSES.disabled ),\n  \n                    // * For IE, non-focusable elements can be active elements as well\n                    //   (http://stackoverflow.com/a/2684561).\n                    activeElement = getActiveElement()\n                    activeElement = activeElement && ( (activeElement.type || activeElement.href ) ? activeElement : null);\n  \n                // If it’s disabled or nothing inside is actively focused, re-focus the element.\n                if ( targetDisabled || activeElement && !$.contains( P.$root[0], activeElement ) ) {\n                    P.$holder.eq(0).focus()\n                }\n  \n                // If something is superficially changed, update the `highlight` based on the `nav`.\n                if ( !targetDisabled && targetData.nav ) {\n                    P.set( 'highlight', P.component.item.highlight, { nav: targetData.nav } )\n                }\n  \n                // If something is picked, set `select` then close with focus.\n                else if ( !targetDisabled && 'pick' in targetData ) {\n                    P.set( 'select', targetData.pick )\n                    if ( SETTINGS.closeOnSelect ) {\n                        P.close( true )\n                    }\n                }\n  \n                // If a “clear” button is pressed, empty the values and close with focus.\n                else if ( targetData.clear ) {\n                    P.clear()\n                    if ( SETTINGS.closeOnClear ) {\n                        P.close( true )\n                    }\n                }\n  \n                else if ( targetData.close ) {\n                    P.close( true )\n                }\n  \n            }) //P.$holder\n  \n    }\n  \n  \n     /**\n      * Prepare the hidden input element along with all bindings.\n      */\n    function prepareElementHidden() {\n  \n        var name\n  \n        if ( SETTINGS.hiddenName === true ) {\n            name = ELEMENT.name\n            ELEMENT.name = ''\n        }\n        else {\n            name = [\n                typeof SETTINGS.hiddenPrefix == 'string' ? SETTINGS.hiddenPrefix : '',\n                typeof SETTINGS.hiddenSuffix == 'string' ? SETTINGS.hiddenSuffix : '_submit'\n            ]\n            name = name[0] + ELEMENT.name + name[1]\n        }\n  \n        P._hidden = $(\n            '<input ' +\n            'type=hidden ' +\n  \n            // Create the name using the original input’s with a prefix and suffix.\n            'name=\"' + name + '\"' +\n  \n            // If the element has a value, set the hidden value as well.\n            (\n                $ELEMENT.data('value') || ELEMENT.value ?\n                    ' value=\"' + P.get('select', SETTINGS.formatSubmit) + '\"' :\n                    ''\n            ) +\n            '>'\n        )[0]\n  \n        $ELEMENT.\n  \n            // If the value changes, update the hidden input with the correct format.\n            on('change.' + STATE.id, function() {\n                P._hidden.value = ELEMENT.value ?\n                    P.get('select', SETTINGS.formatSubmit) :\n                    ''\n            })\n    }\n  \n  \n    // Wait for transitions to end before focusing the holder. Otherwise, while\n    // using the `container` option, the view jumps to the container.\n    function focusPickerOnceOpened() {\n  \n        if (IS_DEFAULT_THEME && supportsTransitions) {\n            P.$holder.find('.' + CLASSES.frame).one('transitionend', function() {\n                P.$holder.eq(0).focus()\n            })\n        }\n        else {\n            setTimeout(function() {\n                P.$holder.eq(0).focus()\n            }, 0)\n        }\n    }\n  \n  \n    function handleFocusToOpenEvent(event) {\n  \n        // Stop the event from propagating to the doc.\n        event.stopPropagation()\n  \n        // Add the “target” class.\n        $ELEMENT.addClass( CLASSES.target )\n  \n        // Add the “focused” class to the root.\n        P.$root.addClass( CLASSES.focused )\n  \n        // And then finally open the picker.\n        P.open()\n    }\n  \n  \n    // For iOS8.\n    function handleKeydownEvent( event ) {\n  \n        var keycode = event.keyCode,\n  \n            // Check if one of the delete keys was pressed.\n            isKeycodeDelete = /^(8|46)$/.test(keycode)\n  \n        // For some reason IE clears the input value on “escape”.\n        if ( keycode == 27 ) {\n            P.close( true )\n            return false\n        }\n  \n        // Check if `space` or `delete` was pressed or the picker is closed with a key movement.\n        if ( keycode == 32 || isKeycodeDelete || !STATE.open && P.component.key[keycode] ) {\n  \n            // Prevent it from moving the page and bubbling to doc.\n            event.preventDefault()\n            event.stopPropagation()\n  \n            // If `delete` was pressed, clear the values and close the picker.\n            // Otherwise open the picker.\n            if ( isKeycodeDelete ) { P.clear().close() }\n            else { P.open() }\n        }\n    }\n  \n  \n    // Return a new picker instance.\n    return new PickerInstance()\n  } //PickerConstructor\n  \n  \n  \n  /**\n  * The default classes and prefix to use for the HTML classes.\n  */\n  PickerConstructor.klasses = function( prefix ) {\n    prefix = prefix || 'picker'\n    return {\n  \n        picker: prefix,\n        opened: prefix + '--opened',\n        focused: prefix + '--focused',\n  \n        input: prefix + '__input',\n        active: prefix + '__input--active',\n        target: prefix + '__input--target',\n  \n        holder: prefix + '__holder',\n  \n        frame: prefix + '__frame',\n        wrap: prefix + '__wrap',\n  \n        box: prefix + '__box'\n    }\n  } //PickerConstructor.klasses\n  \n  \n  \n  /**\n  * Check if the default theme is being used.\n  */\n  function isUsingDefaultTheme( element ) {\n  \n    var theme,\n        prop = 'position'\n  \n    // For IE.\n    if ( element.currentStyle ) {\n        theme = element.currentStyle[prop]\n    }\n  \n    // For normal browsers.\n    else if ( window.getComputedStyle ) {\n        theme = getComputedStyle( element )[prop]\n    }\n  \n    return theme == 'fixed'\n  }\n  \n  /**\n  * Get the width of the browser’s scrollbar.\n  * Taken from: https://github.com/VodkaBears/Remodal/blob/master/src/jquery.remodal.js\n  */\n  function getScrollbarWidth() {\n  \n    if ( $html.height() <= $window.height() ) {\n        return 0\n    }\n  \n    var $outer = $( '<div style=\"visibility:hidden;width:100px\" />' ).\n        appendTo( 'body' )\n  \n    // Get the width without scrollbars.\n    var widthWithoutScroll = $outer[0].offsetWidth\n  \n    // Force adding scrollbars.\n    $outer.css( 'overflow', 'scroll' )\n  \n    // Add the inner div.\n    var $inner = $( '<div style=\"width:100%\" />' ).appendTo( $outer )\n  \n    // Get the width with scrollbars.\n    var widthWithScroll = $inner[0].offsetWidth\n  \n    // Remove the divs.\n    $outer.remove()\n  \n    // Return the difference between the widths.\n    return widthWithoutScroll - widthWithScroll\n  }\n  \n  \n  \n  /**\n  * Get the target element from the event.\n  * If ELEMENT is supplied and present in the event path (ELEMENT is ancestor of the target),\n  * returns ELEMENT instead\n  */\n  function getRealEventTarget( event, ELEMENT ) {\n  \n    var path = []\n  \n    if ( event.path ) {\n        path = event.path\n    }\n  \n    if ( event.originalEvent && event.originalEvent.path ) {\n        path = event.originalEvent.path\n    }\n  \n    if ( path && path.length > 0 ) {\n        if ( ELEMENT && path.indexOf( ELEMENT ) >= 0 ) {\n            return ELEMENT\n        } else {\n            return path[0]\n        }\n    }\n  \n    return event.target\n  }\n  \n  // taken from https://davidwalsh.name/javascript-debounce-function\n  function debounce(func, wait, immediate) {\n    var timeout;\n    return function() {\n        var context = this, args = arguments;\n        var later = function() {\n            timeout = null;\n            if (!immediate) func.apply(context, args);\n        };\n        var callNow = immediate && !timeout;\n        clearTimeout(timeout);\n        timeout = setTimeout(later, wait);\n        if (callNow) func.apply(context, args);\n    };\n  }\n  \n  /**\n  * PickerConstructor helper methods.\n  */\n  PickerConstructor._ = {\n  \n    /**\n     * Create a group of nodes. Expects:\n     * `\n        {\n            min:    {Integer},\n            max:    {Integer},\n            i:      {Integer},\n            node:   {String},\n            item:   {Function}\n        }\n     * `\n     */\n    group: function( groupObject ) {\n  \n        var\n            // Scope for the looped object\n            loopObjectScope,\n  \n            // Create the nodes list\n            nodesList = '',\n  \n            // The counter starts from the `min`\n            counter = PickerConstructor._.trigger( groupObject.min, groupObject )\n  \n  \n        // Loop from the `min` to `max`, incrementing by `i`\n        for ( ; counter <= PickerConstructor._.trigger( groupObject.max, groupObject, [ counter ] ); counter += groupObject.i ) {\n  \n            // Trigger the `item` function within scope of the object\n            loopObjectScope = PickerConstructor._.trigger( groupObject.item, groupObject, [ counter ] )\n  \n            // Splice the subgroup and create nodes out of the sub nodes\n            nodesList += PickerConstructor._.node(\n                groupObject.node,\n                loopObjectScope[ 0 ],   // the node\n                loopObjectScope[ 1 ],   // the classes\n                loopObjectScope[ 2 ]    // the attributes\n            )\n        }\n  \n        // Return the list of nodes\n        return nodesList\n    }, //group\n  \n  \n    /**\n     * Create a dom node string\n     */\n    node: function( wrapper, item, klass, attribute ) {\n  \n        // If the item is false-y, just return an empty string\n        if ( !item ) return ''\n  \n        // If the item is an array, do a join\n        item = $.isArray( item ) ? item.join( '' ) : item\n  \n        // Check for the class\n        klass = klass ? ' class=\"' + klass + '\"' : ''\n  \n        // Check for any attributes\n        attribute = attribute ? ' ' + attribute : ''\n  \n        // Return the wrapped item\n        return '<' + wrapper + klass + attribute + '>' + item + '</' + wrapper + '>'\n    }, //node\n  \n  \n    /**\n     * Lead numbers below 10 with a zero.\n     */\n    lead: function( number ) {\n        return ( number < 10 ? '0': '' ) + number\n    },\n  \n  \n    /**\n     * Trigger a function otherwise return the value.\n     */\n    trigger: function( callback, scope, args ) {\n        return typeof callback == 'function' ? callback.apply( scope, args || [] ) : callback\n    },\n  \n  \n    /**\n     * If the second character is a digit, length is 2 otherwise 1.\n     */\n    digits: function( string ) {\n        return ( /\\d/ ).test( string[ 1 ] ) ? 2 : 1\n    },\n  \n  \n    /**\n     * Tell if something is a date object.\n     */\n    isDate: function( value ) {\n        return {}.toString.call( value ).indexOf( 'Date' ) > -1 && this.isInteger( value.getDate() )\n    },\n  \n  \n    /**\n     * Tell if something is an integer.\n     */\n    isInteger: function( value ) {\n        return {}.toString.call( value ).indexOf( 'Number' ) > -1 && value % 1 === 0\n    },\n  \n  \n    /**\n     * Create ARIA attribute strings.\n     */\n    ariaAttr: ariaAttr\n  } //PickerConstructor._\n  \n  \n  \n  /**\n  * Extend the picker with a component and defaults.\n  */\n  PickerConstructor.extend = function( name, Component ) {\n  \n    // Extend jQuery.\n    $.fn[ name ] = function( options, action ) {\n  \n        // Grab the component data.\n        var componentData = this.data( name )\n  \n        // If the picker is requested, return the data object.\n        if ( options == 'picker' ) {\n            return componentData\n        }\n  \n        // If the component data exists and `options` is a string, carry out the action.\n        if ( componentData && typeof options == 'string' ) {\n            return PickerConstructor._.trigger( componentData[ options ], componentData, [ action ] )\n        }\n  \n        // Otherwise go through each matched element and if the component\n        // doesn’t exist, create a new picker using `this` element\n        // and merging the defaults and options with a deep copy.\n        return this.each( function() {\n            var $this = $( this )\n            if ( !$this.data( name ) ) {\n                new PickerConstructor( this, name, Component, options )\n            }\n        })\n    }\n  \n    // Set the defaults.\n    $.fn[ name ].defaults = Component.defaults\n  } //PickerConstructor.extend\n  \n  \n  \n  function aria(element, attribute, value) {\n    if ( $.isPlainObject(attribute) ) {\n        for ( var key in attribute ) {\n            ariaSet(element, key, attribute[key])\n        }\n    }\n    else {\n        ariaSet(element, attribute, value)\n    }\n  }\n  function ariaSet(element, attribute, value) {\n    element.setAttribute(\n        (attribute == 'role' ? '' : 'aria-') + attribute,\n        value\n    )\n  }\n  function ariaAttr(attribute, data) {\n    if ( !$.isPlainObject(attribute) ) {\n        attribute = { attribute: data }\n    }\n    data = ''\n    for ( var key in attribute ) {\n        var attr = (key == 'role' ? '' : 'aria-') + key,\n            attrVal = attribute[key]\n        data += attrVal == null ? '' : attr + '=\"' + attribute[key] + '\"'\n    }\n    return data\n  }\n  \n  // IE8 bug throws an error for activeElements within iframes.\n  function getActiveElement() {\n    try {\n        return document.activeElement\n    } catch ( err ) { }\n  }\n  \n  \n  \n  // Expose the picker constructor.\n  return PickerConstructor\n  \n  \n  }));\n  \n","/*!\n * pickadate.js v3.6.3, 2019/04/03\n * By Amsul, http://amsul.ca\n * Hosted on http://amsul.github.io/pickadate.js\n * Licensed under MIT\n */\n\n(function ( factory ) {\n\n    // AMD.\n    if ( typeof define == 'function' && define.amd )\n        define( 'picker', ['jquery'], factory );\n  \n    // Node.js/browserify.\n    else if ( typeof exports == 'object' )\n        module.exports = factory( require('jquery') );\n  \n    // Browser globals.\n    else window.Picker = factory( jQuery );\n  \n  }(function( $ ) {\n  \n  var $window = $( window );\n  var $document = $( document );\n  var $html = $( document.documentElement );\n  var supportsTransitions = document.documentElement.style.transition != null;\n  \n  \n  /**\n  * The picker constructor that creates a blank picker.\n  */\n  function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {\n  \n    // If there’s no element, return the picker constructor.\n    if ( !ELEMENT ) return PickerConstructor;\n  \n    var IS_DEFAULT_THEME = false,\n  \n        // The state of the picker.\n        STATE = {\n            id: ELEMENT.id || 'P' + Math.abs( ~~(Math.random() * new Date()) ),\n            handlingOpen: false,\n        },\n  \n        // Merge the defaults and options passed.\n        SETTINGS = COMPONENT ? $.extend( true, {}, COMPONENT.defaults, OPTIONS ) : OPTIONS || {},\n  \n        // Merge the default classes with the settings classes.\n        CLASSES = $.extend( {}, PickerConstructor.klasses(), SETTINGS.klass ),\n  \n        // The element node wrapper into a jQuery object.\n        $ELEMENT = $( ELEMENT ).find('input'),\n  \n        // On editable:true checks if should open\n        OPENCOUNTER = 2,\n  \n        // Pseudo picker constructor.\n        PickerInstance = function() {\n            return this.start();\n        },\n  \n        // The picker prototype.\n        P = PickerInstance.prototype = {\n  \n            constructor: PickerInstance,\n  \n            $node: $ELEMENT,\n  \n            /**\n             * Initialize everything\n             */\n            start: function() {\n  \n                // If it’s already started, do nothing.\n                if ( STATE && STATE.start ) return P;\n  \n                // Update the picker states.\n                STATE.methods = {};\n                STATE.start = true;\n                STATE.open = false;\n                STATE.type = ELEMENT.type;\n  \n  \n                // Confirm focus state, convert into text input to remove UA stylings,\n                // and set as readonly to prevent keyboard popup.\n                ELEMENT.autofocus = ELEMENT == getActiveElement();\n                ELEMENT.readOnly = !SETTINGS.editable;\n                ELEMENT.id = ELEMENT.id || STATE.id;\n                if ( ELEMENT.type != 'text' ) {\n                    ELEMENT.type = 'text';\n                }\n  \n  \n                // Create a new picker component with the settings.\n                P.component = new COMPONENT(P, SETTINGS);\n                  // Create the picker root and then prepare it.\n                P.$root = $( `\n                    <div class=\"${CLASSES.picker} datepicker\" id=\"${ELEMENT.id}_root\" />\n                ` );\n                prepareElementRoot();\n  \n  \n                // Create the picker holder and then prepare it.\n                P.$holder = $( createWrappedComponent() ).appendTo( P.$root );\n                prepareElementHolder();\n  \n  \n                // If there’s a format for the hidden input element, create the element.\n                if ( SETTINGS.formatSubmit ) {\n                    prepareElementHidden();\n                }\n  \n  \n                // Prepare the input element.\n                prepareElement();\n  \n  \n                // Insert the hidden input as specified in the settings.\n                if ( SETTINGS.containerHidden ) $( SETTINGS.containerHidden ).append( P._hidden );\n                else $ELEMENT.after( P._hidden );\n\n                $('body').append( P.$root);\n                \n                if (SETTINGS.inline) {\n                    P.$root.hide();\n                }\n                // Bind the default component and settings events.\n                P.on({\n                    start: P.component.onStart,\n                    render: P.component.onRender,\n                    stop: P.component.onStop,\n                    open: P.component.onOpen,\n                    close: P.component.onClose,\n                    set: P.component.onSet\n                }).on({\n                    start: SETTINGS.onStart,\n                    render: SETTINGS.onRender,\n                    stop: SETTINGS.onStop,\n                    open: SETTINGS.onOpen,\n                    close: SETTINGS.onClose,\n                    set: SETTINGS.onSet\n                });\n  \n  \n                // Once we’re all set, check the theme in use.\n                IS_DEFAULT_THEME = isUsingDefaultTheme( P.$holder[0] );\n  \n  \n                // If the element has autofocus, open the picker.\n                if ( ELEMENT.autofocus ) {\n                    P.open();\n                }\n  \n  \n                // Trigger queued the “start” and “render” events.\n                return P.trigger( 'start' ).trigger( 'render' );\n            }, //start\n  \n  \n            /**\n             * Render a new picker\n             */\n            render: function( entireComponent ) {\n                \n                // Insert a new component holder in the root or box.\n                if ( entireComponent ) {\n                    P.$holder = $( createWrappedComponent() );\n                    prepareElementHolder();\n                    P.$root.html( P.$holder );\n                }\n                else P.$root.find( '.' + CLASSES.box ).html( P.component.nodes( STATE.open ) );\n                \n                // Trigger the queued “render” events.\n                return P.trigger( 'render' );\n            }, //render\n  \n  \n            /**\n             * Destroy everything\n             */\n            stop: function() {\n  \n                // If it’s already stopped, do nothing.\n                if ( !STATE.start ) return P;\n  \n                // Then close the picker.\n                P.close();\n  \n                // Remove the hidden field.\n                if ( P._hidden ) {\n                    P._hidden.parentNode.removeChild( P._hidden );\n                }\n  \n                // Remove the root.\n                P.$root.remove();\n  \n                // Remove the input class, remove the stored data, and unbind\n                // the events (after a tick for IE - see `P.close`).\n                $ELEMENT.removeClass( CLASSES.input ).removeData( NAME );\n                setTimeout( function() {\n                    $ELEMENT.off( '.' + STATE.id );\n                }, 0);\n  \n                // Restore the element state\n                ELEMENT.type = STATE.type;\n                ELEMENT.readOnly = false;\n  \n                // Trigger the queued “stop” events.\n                P.trigger( 'stop' );\n  \n                // Reset the picker states.\n                STATE.methods = {};\n                STATE.start = false;\n  \n                return P;\n            }, //stop\n  \n  \n            /**\n             * Open up the picker\n             */\n            open: function( dontGiveFocus ) {\n                OPENCOUNTER++;\n                // If it’s already open, do nothing.\n                if ( STATE.open ) return P;\n                \n                // If it’s editable and already opened, do nothing.\n                if (OPENCOUNTER<4 && SETTINGS.editable) return P;\n\n                P.set( 'currentView', 'days' );\n                // * A Firefox bug, when `html` has `overflow:hidden`, results in\n                //   killing transitions :(. So add the “opened” state on the next tick.\n                //   Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289\n                setTimeout( function() {\n  \n                    // Add the “opened” class to the picker root.\n                    P.$root.addClass( CLASSES.opened );\n                    aria( P.$root[0], 'hidden', false );\n  \n                }, 0 );\n\n                // If we have to give focus, bind the element and doc events.\n                if ( dontGiveFocus !== false ) {\n\n                    // Set it as open.\n                    STATE.open = true;\n                    if (SETTINGS.inline) {\n                        P.$root.show();\n                    }\n  \n                    // Prevent the page from scrolling.\n                    if ( IS_DEFAULT_THEME ) {\n                        $('body').\n                            css( 'overflow', 'hidden' ).\n                            css( 'padding-right', '+=' + getScrollbarWidth() );\n                    }\n  \n                    // Pass focus to the root element’s jQuery object.\n                    focusPickerOnceOpened();\n  \n                    // Bind the document events.\n                    $document.on( 'click.' + STATE.id + ' focusin.' + STATE.id, function( event ) {\n                        // If the picker is currently midway through processing\n                        // the opening sequence of events then don't handle clicks\n                        // on any part of the DOM. This is caused by a bug in Chrome 73\n                        // where a click event is being generated with the incorrect\n                        // path in it.\n                        // In short, if someone does a click that finishes after the\n                        // new element is created then the path contains only the\n                        // parent element and not the input element itself.\n                        if (STATE.handlingOpen) {\n                          return;\n                        }\n  \n                        var target = getRealEventTarget( event, ELEMENT );\n  \n                        // If the target of the event is not the element, close the picker picker.\n                        // * Don’t worry about clicks or focusins on the root because those don’t bubble up.\n                        //   Also, for Firefox, a click on an `option` element bubbles up directly\n                        //   to the doc. So make sure the target wasn't the doc.\n                        // * In Firefox stopPropagation() doesn’t prevent right-click events from bubbling,\n                        //   which causes the picker to unexpectedly close when right-clicking it. So make\n                        //   sure the event wasn’t a right-click.\n                        // * In Chrome 62 and up, password autofill causes a simulated focusin event which\n                        //   closes the picker.\n                        if ( ! event.isSimulated && target != ELEMENT && target != document && event.which != 3 ) {\n  \n                            // If the target was the holder that covers the screen,\n                            // keep the element focused to maintain tabindex.\n                            P.close( target === P.$holder[0] );\n                        }\n  \n                    }).on( 'keydown.' + STATE.id, function( event ) {\n  \n                        var\n                            // Get the keycode.\n                            keycode = event.keyCode,\n  \n                            // Translate that to a selection change.\n                            keycodeToMove = P.component.key[ keycode ],\n  \n                            // Grab the target.\n                            target = getRealEventTarget( event, ELEMENT );\n  \n  \n                        // On escape, close the picker and give focus.\n                        if ( keycode == 27 ) {\n                            P.close( true );\n                        }\n  \n  \n                        // Check if there is a key movement or “enter” keypress on the element.\n                        else if ( target == P.$holder[0] && ( keycodeToMove || keycode == 13 ) ) {\n  \n                            // Prevent the default action to stop page movement.\n                            event.preventDefault();\n  \n                            // Trigger the key movement action.\n                            if ( keycodeToMove ) {\n                                PickerConstructor._.trigger( P.component.key.go, P, [ PickerConstructor._.trigger( keycodeToMove ) ] );\n                            }\n  \n                            // On “enter”, if the highlighted item isn’t disabled, set the value and close.\n                            else if ( !P.$root.find( '.' + CLASSES.highlighted ).hasClass( CLASSES.disabled ) ) {\n                                P.set( 'select', P.component.item.highlight );\n                                if ( SETTINGS.closeOnSelect ) {\n                                    P.close( true );\n                                }\n                            }\n                            \n                        }\n  \n  \n                        // If the target is within the root and “enter” is pressed,\n                        // prevent the default action and trigger a click on the target instead.\n                        else if ( $.contains( P.$root[0], target ) && keycode == 13 ) {\n                            event.preventDefault();\n                            target.click();\n                        }\n                    });\n                }\n  \n                // Trigger the queued “open” events.\n                return P.trigger( 'open' );\n            }, //open\n  \n  \n            /**\n             * Close the picker\n             */\n            close: function( giveFocus ) {\n                OPENCOUNTER = 0;\n  \n                // If it’s already closed, do nothing more.\n                if ( !STATE.open ) return P;\n\n                // If we need to give focus, do it before changing states.\n                if ( giveFocus ) {\n                    if ( SETTINGS.editable ) {\n                        ELEMENT.click();\n                    }\n                    else {\n                        // ....ah yes! It would’ve been incomplete without a crazy workaround for IE :|\n                        // The focus is triggered *after* the close has completed - causing it\n                        // to open again. So unbind and rebind the event at the next tick.\n                        P.$holder.off( 'focus.toOpen' ).focus();\n                        setTimeout( function() {\n                            P.$holder.on( 'focus.toOpen', handleFocusToOpenEvent );\n                        }, 0 );\n                    }\n                }\n  \n                // Remove the “active” class.\n                $ELEMENT.removeClass( CLASSES.active );\n                aria( ELEMENT, 'expanded', false );\n  \n                // * A Firefox bug, when `html` has `overflow:hidden`, results in\n                //   killing transitions :(. So remove the “opened” state on the next tick.\n                //   Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289\n                setTimeout( function() {\n  \n                    // Remove the “opened” and “focused” class from the picker root.\n                    P.$root.removeClass( CLASSES.opened + ' ' + CLASSES.focused );\n                    aria( P.$root[0], 'hidden', true );\n  \n                }, 0 );\n  \n                // Allow the page to scroll.\n                if ( IS_DEFAULT_THEME ) {\n                    $('body').\n                        css( 'overflow', '' ).\n                        css( 'padding-right', '-=' + getScrollbarWidth() );\n                }\n  \n                document.activeElement.blur();\n                // Unbind the document events.\n                $document.off( '.' + STATE.id );\n                // Set it as closed.\n                STATE.open = false;\n                if (SETTINGS.inline) {\n                    P.$root.hide();\n                }\n                // Trigger the queued “close” events.\n                return P.trigger( 'close' );\n            }, //close\n  \n  \n            /**\n             * Clear the values\n             */\n            clear: function( options ) {\n                document.activeElement.blur();\n                return P.set( 'clear', null, options );\n            }, //clear\n  \n  \n            /**\n             * Set something\n             */\n            set: function( thing, value, options ) {\n                \n                var thingItem, thingValue,\n                    thingIsObject = $.isPlainObject( thing ),\n                    thingObject = thingIsObject ? thing : {};\n  \n                // Make sure we have usable options.\n                options = thingIsObject && $.isPlainObject( value ) ? value : options || {};\n                \n                if ( thing ) {\n  \n                    // If the thing isn’t an object, make it one.\n                    if ( !thingIsObject ) {\n                        thingObject[ thing ] = value;\n                    }\n  \n                    // Go through the things of items to set.\n                    for ( thingItem in thingObject ) {\n                        \n                        // Grab the value of the thing.\n                        thingValue = thingObject[ thingItem ];\n                        // First, if the item exists and there’s a value, set it.\n                        if ( thingItem in P.component.item ) {\n                            if ( thingValue === undefined ) thingValue = null;\n                            P.component.set( thingItem, thingValue, options );\n                        }\n  \n                        // Then, check to update the element value and broadcast a change.\n                        if ( ( thingItem == 'select' || thingItem == 'clear' ) && SETTINGS.updateInput ) {\n                            $ELEMENT.\n                                val( thingItem == 'clear' ? '' : P.get( thingItem, SETTINGS.format ) ).\n                                trigger( 'change' );\n                        }\n                    }\n  \n                    // Render a new picker.\n                    P.render();\n                }\n  \n                // When the method isn’t muted, trigger queued “set” events and pass the `thingObject`.\n                return options.muted ? P : P.trigger( 'set', thingObject );\n            }, //set\n  \n  \n            /**\n             * Get something\n             */\n            get: function( thing, format ) {\n  \n                // Make sure there’s something to get.\n                thing = thing || 'value';\n  \n                // If a picker state exists, return that.\n                if ( STATE[ thing ] != null ) {\n                    return STATE[ thing ];\n                }\n  \n                // Return the submission value, if that.\n                if ( thing == 'valueSubmit' ) {\n                    if ( P._hidden ) {\n                        return P._hidden.value;\n                    }\n                    thing = 'value';\n                }\n  \n                // Return the value, if that.\n                if ( thing == 'value' ) {\n                    return ELEMENT.value;\n                }\n  \n                // Check if a component item exists, return that.\n                if ( thing in P.component.item ) {\n                    if ( typeof format == 'string' ) {\n                        var thingValue = P.component.get( thing );\n                        return thingValue ?\n                            PickerConstructor._.trigger(\n                                P.component.formats.toString,\n                                P.component,\n                                [ format, thingValue ]\n                            ) : '';\n                    }\n                    return P.component.get( thing );\n                }\n            }, //get\n  \n  \n  \n            /**\n             * Bind events on the things.\n             */\n            on: function( thing, method, internal ) {\n  \n                var thingName, thingMethod,\n                    thingIsObject = $.isPlainObject( thing ),\n                    thingObject = thingIsObject ? thing : {};\n  \n                if ( thing ) {\n  \n                    // If the thing isn’t an object, make it one.\n                    if ( !thingIsObject ) {\n                        thingObject[ thing ] = method;\n                    }\n  \n                    // Go through the things to bind to.\n                    for ( thingName in thingObject ) {\n  \n                        // Grab the method of the thing.\n                        thingMethod = thingObject[ thingName ];\n  \n                        // If it was an internal binding, prefix it.\n                        if ( internal ) {\n                            thingName = '_' + thingName;\n                        }\n  \n                        // Make sure the thing methods collection exists.\n                        STATE.methods[ thingName ] = STATE.methods[ thingName ] || [];\n  \n                        // Add the method to the relative method collection.\n                        STATE.methods[ thingName ].push( thingMethod );\n                    }\n                }\n  \n                return P;\n            }, //on\n  \n  \n  \n            /**\n             * Unbind events on the things.\n             */\n            off: function() {\n                var i, thingName,\n                    names = arguments;\n                for ( i = 0, namesCount = names.length; i < namesCount; i += 1 ) {\n                    thingName = names[i];\n                    if ( thingName in STATE.methods ) {\n                        delete STATE.methods[thingName];\n                    }\n                }\n                return P;\n            },\n  \n  \n            /**\n             * Fire off method events.\n             */\n            trigger: function( name, data ) {\n                var _trigger = function( name ) {\n                    var methodList = STATE.methods[ name ];\n                    if ( methodList ) {\n                        methodList.map( function( method ) {\n                            PickerConstructor._.trigger( method, P, [ data ] );\n                        });\n                    }\n                };\n                _trigger( '_' + name );\n                _trigger( name );\n                return P;\n            } //trigger\n        }; //PickerInstance.prototype\n\n        SETTINGS.inline = $(ELEMENT).attr('inline');\n        \n  \n    /**\n     * Wrap the picker holder components together.\n     */\n    function createWrappedComponent() {\n        // Create a picker wrapper holder\n        return `<div class=\"${CLASSES.holder} ${SETTINGS.inline ? 'inline' : ''}\" tabindex=\"-1\">\n                    <div class=\"${CLASSES.frame}\">\n                        <div class=\"${CLASSES.wrap}\">\n                            <div class=\"${CLASSES.box}\">\n                            ${P.component.nodes( STATE.open )}\n                            </div>\n                        </div>\n                    </div>\n                </div>`;\n    } //createWrappedComponent\n  \n    /**\n     * Prepare the input element with all bindings.\n     */\n    function prepareElement() {\n  \n        $ELEMENT.\n  \n            // Store the picker data by component name.\n            data(NAME, P).\n  \n            // Add the “input” class name.\n            addClass(CLASSES.input).\n  \n            // If there’s a `data-value`, update the value of the element.\n            val( $ELEMENT.data('value') ?\n                P.get('select', SETTINGS.format) :\n                $(ELEMENT).find('input').val()\n            );\n\n        if (SETTINGS.inline) {\n            // On focus/click, open the picker.\n            $ELEMENT.siblings('i').on('click', () => {\n                 const popper = new Popper($(ELEMENT), P.$root, {\n                    placement: 'bottom-end',\n                    modifiers: {\n                        offset: {\n                            enabled: true,\n                            offset: '-300, 0'\n                        }\n                    }\n                });\n                P.open();\n            });\n\n        } else {\n            // On focus/click, open the picker.\n            $ELEMENT.siblings('i').on('click',\n                debounce(function(event) {\n                    event.preventDefault();\n                    P.open();\n                }, 100)\n            );\n        }\n        \n        $ELEMENT.siblings('i').\n        // Mousedown handler to capture when the user starts interacting\n        // with the picker. This is used in working around a bug in Chrome 73.\n        on('mousedown', function() {\n          STATE.handlingOpen = true;\n          var handler = function() {\n            // By default mouseup events are fired before a click event.\n            // By using a timeout we can force the mouseup to be handled\n            // after the corresponding click event is handled.\n            setTimeout(function() {\n              $(document).off('mouseup', handler);\n              STATE.handlingOpen = false;\n            }, 0);\n          };\n          $(document).on('mouseup', handler);\n        });\n  \n        // Only bind keydown events if the element isn’t editable.\n        if ( !SETTINGS.editable ) {\n  \n            $ELEMENT.siblings('i').\n  \n                // Handle keyboard event based on the picker being opened or not.\n                on( 'keyup.' + STATE.id, handleKeydownEvent );\n        }\n  \n\n        // Update the aria attributes.\n        aria(ELEMENT, {\n            haspopup: true,\n            expanded: false,\n            readonly: false,\n            owns: ELEMENT.id + '_root'\n        });\n    }\n  \n  \n    /**\n     * Prepare the root picker element with all bindings.\n     */\n    function prepareElementRoot() {\n        aria( P.$root[0], 'hidden', true );\n    }\n  \n  \n     /**\n      * Prepare the holder picker element with all bindings.\n      */\n    function prepareElementHolder() {\n  \n        P.$holder.\n  \n            on({\n  \n                // For iOS8.\n                keydown: handleKeydownEvent,\n  \n                'focus.toOpen': handleFocusToOpenEvent,\n  \n                blur: function() {\n                    // Remove the “target” class.\n                    $ELEMENT.removeClass( CLASSES.target );\n                },\n  \n                // When something within the holder is focused, stop from bubbling\n                // to the doc and remove the “focused” state from the root.\n                focusin: function( event ) {\n                    P.$root.removeClass( CLASSES.focused );\n                    event.stopPropagation();\n                },\n  \n                // When something within the holder is clicked, stop it\n                // from bubbling to the doc.\n                'mousedown click': function( event ) {\n  \n                    var target = getRealEventTarget( event, ELEMENT );\n  \n                    // Make sure the target isn’t the root holder so it can bubble up.\n                    if ( target != P.$holder[0] ) {\n  \n                        event.stopPropagation();\n  \n                        // * For mousedown events, cancel the default action in order to\n                        //   prevent cases where focus is shifted onto external elements\n                        //   when using things like jQuery mobile or MagnificPopup (ref: #249 & #120).\n                        //   Also, for Firefox, don’t prevent action on the `option` element.\n                        if ( event.type == 'mousedown' && !$( target ).is( 'input, select, textarea, button, option' )) {\n  \n                            event.preventDefault();\n  \n                            // Re-focus onto the holder so that users can click away\n                            // from elements focused within the picker.\n                            P.$holder.eq(0).focus();\n                        }\n                    }\n                }\n  \n            }).\n  \n            // If there’s a click on an actionable element, carry out the actions.\n            on( 'click', '[data-pick], [data-nav], [data-clear], [data-close], [data-select-year]', function(e) {\n                \n                var $target = $( this ),\n                    targetData = $target.data(),\n                    targetDisabled = $target.hasClass( CLASSES.navDisabled ) || $target.hasClass( CLASSES.disabled ),\n  \n                    // * For IE, non-focusable elements can be active elements as well\n                    //   (http://stackoverflow.com/a/2684561).\n                    activeElement = getActiveElement();\n                    activeElement = activeElement && ( (activeElement.type || activeElement.href ) ? activeElement : null);\n\n                    // If it’s disabled or nothing inside is actively focused, re-focus the element.\n                if ( targetDisabled || activeElement && !$.contains( P.$root[0], activeElement ) ) {\n                    P.$holder.eq(0).focus();\n                }\n  \n                // If something is superficially changed, update the `highlight` based on the `nav`.\n                if ( !targetDisabled && targetData.nav ) {\n                    P.set( 'highlight', P.component.item.highlight, { nav: targetData.nav } );\n                }\n  \n                // If something is picked, set `select` then close with focus.\n                else if ( !targetDisabled && 'pick' in targetData ) {\n                    P.set( 'select', targetData.pick );\n                    if ( SETTINGS.closeOnSelect && P.component.item.currentView === 'days' ) {\n                        P.close( true );\n                    } else {\n                        P.set( 'currentView', P.component.item.highlight );\n                    }\n                }\n  \n                // If a “clear” button is pressed, empty the values and close with focus.\n                else if ( targetData.clear ) {\n                    P.clear();\n                    if ( SETTINGS.closeOnClear ) {\n                        P.close( true );\n                    }\n                }\n  \n                else if ( targetData.close ) {\n                    P.close( true );\n                }\n  \n                else if (targetData.selectYear) {\n                    P.set( 'currentView', P.component.item.highlight );\n                }\n            }).on('keydown', `.${SETTINGS.klass.buttonOk}`, (e) => {\n                const tabKey = 9;\n                if (e.keyCode == tabKey && !e.shiftKey) {\n                    e.preventDefault();\n                    $(e.target).closest(`.${CLASSES.box}`).find(`.${SETTINGS.klass.selectYear}`).focus();\n                }\n            }).on('keydown', `.${SETTINGS.klass.selectYear}`, (e) => {\n                const tabKey = 9;\n                if (e.keyCode == tabKey && e.shiftKey) {\n                    e.preventDefault();\n                    $(e.target).closest(`.${CLASSES.box}`).find(`.${SETTINGS.klass.buttonOk}`).focus();\n                }\n            }); //P.$holder\n    }\n  \n  \n     /**\n      * Prepare the hidden input element along with all bindings.\n      */\n    function prepareElementHidden() {\n  \n        var name;\n  \n        if ( SETTINGS.hiddenName === true ) {\n            name = ELEMENT.name;\n            ELEMENT.name = '';\n        }\n        else {\n            name = [\n                typeof SETTINGS.hiddenPrefix == 'string' ? SETTINGS.hiddenPrefix : '',\n                typeof SETTINGS.hiddenSuffix == 'string' ? SETTINGS.hiddenSuffix : '_submit'\n            ];\n            name = name[0] + ELEMENT.name + name[1];\n        }\n  \n        P._hidden = $(\n            '<input ' +\n            'type=hidden ' +\n  \n            // Create the name using the original input’s with a prefix and suffix.\n            'name=\"' + name + '\"' +\n  \n            // If the element has a value, set the hidden value as well.\n            (\n                $ELEMENT.data('value') || ELEMENT.value ?\n                    ' value=\"' + P.get('select', SETTINGS.formatSubmit) + '\"' :\n                    ''\n            ) +\n            '>'\n        )[0];\n  \n        $ELEMENT.\n  \n            // If the value changes, update the hidden input with the correct format.\n            on('change.' + STATE.id, function() {\n                P._hidden.value = ELEMENT.value ?\n                    P.get('select', SETTINGS.formatSubmit) :\n                    '';\n            });\n    }\n  \n  \n    // Wait for transitions to end before focusing the holder. Otherwise, while\n    // using the `container` option, the view jumps to the container.\n    function focusPickerOnceOpened() {\n  \n        if (IS_DEFAULT_THEME && supportsTransitions) {\n            P.$holder.find('.' + CLASSES.frame).one('transitionend', function() {\n                P.$holder.eq(0).focus();\n            });\n        }\n        else {\n            setTimeout(function() {\n                P.$holder.eq(0).focus();\n            }, 0);\n        }\n    }\n  \n  \n    function handleFocusToOpenEvent(event) {\n  \n        // Stop the event from propagating to the doc.\n        event.stopPropagation();\n  \n        // Add the “target” class.\n        $ELEMENT.addClass( CLASSES.target );\n  \n        // Add the “focused” class to the root.\n        P.$root.addClass( CLASSES.focused );\n  \n        // And then finally open the picker.\n        P.open();\n    }\n  \n  \n    // For iOS8.\n    function handleKeydownEvent( event ) {\n  \n        var keycode = event.keyCode;\n  \n        // For some reason IE clears the input value on “escape”.\n        if ( keycode == 27 ) {\n            P.close( true );\n            return false;\n        }\n  \n        // Check if `space` or `delete` was pressed or the picker is closed with a key movement.\n        if ( keycode == 32 || keycode == 13 ) {\n  \n            // Prevent it from moving the page and bubbling to doc.\n            event.preventDefault();\n            event.stopPropagation();\n  \n            // If `delete` was pressed, clear the values and close the picker.\n            // Otherwise open the picker.\n            P.open();\n        }\n    }\n  \n    // Return a new picker instance.\n    return new PickerInstance();\n  } //PickerConstructor\n  \n  \n  \n  /**\n  * The default classes and prefix to use for the HTML classes.\n  */\n  PickerConstructor.klasses = function( prefix ) {\n    prefix = prefix || 'picker';\n    return {\n  \n        picker: prefix,\n        opened: prefix + '--opened',\n        focused: prefix + '--focused',\n  \n        input: prefix + '__input',\n        active: prefix + '__input--active',\n        target: prefix + '__input--target',\n  \n        holder: prefix + '__holder',\n  \n        frame: prefix + '__frame',\n        wrap: prefix + '__wrap',\n  \n        box: prefix + '__box'\n    };\n  }; //PickerConstructor.klasses\n  \n  \n  \n  /**\n  * Check if the default theme is being used.\n  */\n  function isUsingDefaultTheme( element ) {\n  \n    var theme,\n        prop = 'position';\n  \n    // For IE.\n    if ( element.currentStyle ) {\n        theme = element.currentStyle[prop];\n    }\n  \n    // For normal browsers.\n    else if ( window.getComputedStyle ) {\n        theme = getComputedStyle( element )[prop];\n    }\n  \n    return theme == 'fixed';\n  }\n  \n  /**\n  * Get the width of the browser’s scrollbar.\n  * Taken from: https://github.com/VodkaBears/Remodal/blob/master/src/jquery.remodal.js\n  */\n  function getScrollbarWidth() {\n  \n    if ( $html.height() <= $window.height() ) {\n        return 0;\n    }\n  \n    var $outer = $( '<div style=\"visibility:hidden;width:100px\" />' ).\n        appendTo( 'body' );\n  \n    // Get the width without scrollbars.\n    var widthWithoutScroll = $outer[0].offsetWidth;\n  \n    // Force adding scrollbars.\n    $outer.css( 'overflow', 'scroll' );\n  \n    // Add the inner div.\n    var $inner = $( '<div style=\"width:100%\" />' ).appendTo( $outer );\n  \n    // Get the width with scrollbars.\n    var widthWithScroll = $inner[0].offsetWidth;\n  \n    // Remove the divs.\n    $outer.remove();\n  \n    // Return the difference between the widths.\n    return widthWithoutScroll - widthWithScroll;\n  }\n  \n  \n  \n  /**\n  * Get the target element from the event.\n  * If ELEMENT is supplied and present in the event path (ELEMENT is ancestor of the target),\n  * returns ELEMENT instead\n  */\n  function getRealEventTarget( event, ELEMENT ) {\n  \n    var path = [];\n  \n    if ( event.path ) {\n        path = event.path;\n    }\n  \n    if ( event.originalEvent && event.originalEvent.path ) {\n        path = event.originalEvent.path;\n    }\n  \n    if ( path && path.length > 0 ) {\n        if ( ELEMENT && path.indexOf( ELEMENT ) >= 0 ) {\n            return ELEMENT;\n        } else {\n            return path[0];\n        }\n    }\n  \n    return event.target;\n  }\n  \n  // taken from https://davidwalsh.name/javascript-debounce-function\n  function debounce(func, wait, immediate) {\n    var timeout;\n    return function() {\n        var context = this, args = arguments;\n        var later = function() {\n            timeout = null;\n            if (!immediate) func.apply(context, args);\n        };\n        var callNow = immediate && !timeout;\n        clearTimeout(timeout);\n        timeout = setTimeout(later, wait);\n        if (callNow) func.apply(context, args);\n    };\n  }\n  \n  /**\n  * PickerConstructor helper methods.\n  */\n  PickerConstructor._ = {\n  \n    /**\n     * Create a group of nodes. Expects:\n     * `\n        {\n            min:    {Integer},\n            max:    {Integer},\n            i:      {Integer},\n            node:   {String},\n            item:   {Function}\n        }\n     * `\n     */\n    group: function( groupObject ) {\n  \n        var\n            // Scope for the looped object\n            loopObjectScope,\n  \n            // Create the nodes list\n            nodesList = '',\n  \n            // The counter starts from the `min`\n            counter = PickerConstructor._.trigger( groupObject.min, groupObject );\n  \n  \n        // Loop from the `min` to `max`, incrementing by `i`\n        for ( ; counter <= PickerConstructor._.trigger( groupObject.max, groupObject, [ counter ] ); counter += groupObject.i ) {\n  \n            // Trigger the `item` function within scope of the object\n            loopObjectScope = PickerConstructor._.trigger( groupObject.item, groupObject, [ counter ] );\n  \n            // Splice the subgroup and create nodes out of the sub nodes\n            nodesList += PickerConstructor._.node(\n                groupObject.node,\n                loopObjectScope[ 0 ],   // the node\n                loopObjectScope[ 1 ],   // the classes\n                loopObjectScope[ 2 ]    // the attributes\n            );\n        }\n  \n        // Return the list of nodes\n        return nodesList;\n    }, //group\n  \n  \n    /**\n     * Create a dom node string\n     */\n    node: function( wrapper, item, klass, attribute ) {\n  \n        // If the item is false-y, just return an empty string\n        if ( !item ) return '';\n  \n        // If the item is an array, do a join\n        item = $.isArray( item ) ? item.join( '' ) : item;\n  \n        // Check for the class\n        klass = klass ? ' class=\"' + klass + '\"' : '';\n  \n        // Check for any attributes\n        attribute = attribute ? ' ' + attribute : '';\n  \n        // Return the wrapped item\n        return '<' + wrapper + klass + attribute + '>' + item + '</' + wrapper + '>';\n    }, //node\n  \n  \n    /**\n     * Lead numbers below 10 with a zero.\n     */\n    lead: function( number ) {\n        return ( number < 10 ? '0': '' ) + number;\n    },\n  \n  \n    /**\n     * Trigger a function otherwise return the value.\n     */\n    trigger: function( callback, scope, args ) {\n        return typeof callback == 'function' ? callback.apply( scope, args || [] ) : callback;\n    },\n  \n  \n    /**\n     * If the second character is a digit, length is 2 otherwise 1.\n     */\n    digits: function( string ) {\n        return ( /\\d/ ).test( string[ 1 ] ) ? 2 : 1;\n    },\n  \n  \n    /**\n     * Tell if something is a date object.\n     */\n    isDate: function( value ) {\n        return {}.toString.call( value ).indexOf( 'Date' ) > -1 && this.isInteger( value.getDate() );\n    },\n  \n  \n    /**\n     * Tell if something is an integer.\n     */\n    isInteger: function( value ) {\n        return {}.toString.call( value ).indexOf( 'Number' ) > -1 && value % 1 === 0;\n    },\n  \n  \n    /**\n     * Create ARIA attribute strings.\n     */\n    ariaAttr: ariaAttr\n  }; //PickerConstructor._\n  \n  \n  \n  /**\n  * Extend the picker with a component and defaults.\n  */\n  PickerConstructor.extend = function( name, Component ) {\n  \n    // Extend jQuery.\n    $.fn[ name ] = function( options, action ) {\n  \n        // Grab the component data.\n        var componentData = this.data( name );\n  \n        // If the picker is requested, return the data object.\n        if ( options == 'picker' ) {\n            return componentData;\n        }\n  \n        // If the component data exists and `options` is a string, carry out the action.\n        if ( componentData && typeof options == 'string' ) {\n            return PickerConstructor._.trigger( componentData[ options ], componentData, [ action ] );\n        }\n  \n        // Otherwise go through each matched element and if the component\n        // doesn’t exist, create a new picker using `this` element\n        // and merging the defaults and options with a deep copy.\n        return this.each( function() {\n            var $this = $( this );\n            if ( !$this.data( name ) ) {\n                new PickerConstructor( this, name, Component, options );\n            }\n        });\n    };\n  \n    // Set the defaults.\n    $.fn[ name ].defaults = Component.defaults;\n  }; //PickerConstructor.extend\n  \n  \n  \n  function aria(element, attribute, value) {\n    if ( $.isPlainObject(attribute) ) {\n        for ( var key in attribute ) {\n            ariaSet(element, key, attribute[key]);\n        }\n    }\n    else {\n        ariaSet(element, attribute, value);\n    }\n  }\n  function ariaSet(element, attribute, value) {\n    element.setAttribute(\n        (attribute == 'role' ? '' : 'aria-') + attribute,\n        value\n    );\n  }\n  function ariaAttr(attribute, data) {\n    if ( !$.isPlainObject(attribute) ) {\n        attribute = { attribute: data };\n    }\n    data = '';\n    for ( var key in attribute ) {\n        var attr = (key == 'role' ? '' : 'aria-') + key,\n            attrVal = attribute[key];\n        data += attrVal == null ? '' : attr + '=\"' + attribute[key] + '\"';\n    }\n    return data;\n  }\n  \n  // IE8 bug throws an error for activeElements within iframes.\n  function getActiveElement() {\n    try {\n        return document.activeElement;\n    } catch ( err ) { }\n  }\n  \n  \n  \n  // Expose the picker constructor.\n  return PickerConstructor;\n  \n  })\n);\n  \n","/*!\n * bsCustomFileInput v1.3.2 (https://github.com/Johann-S/bs-custom-file-input)\n * Copyright 2018 - 2019 Johann-S <johann.servoire@gmail.com>\n * Licensed under MIT (https://github.com/Johann-S/bs-custom-file-input/blob/master/LICENSE)\n */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    (global = global || self, global.bsCustomFileInput = factory());\n}(this, function () {\n  'use strict';\n\n  var Selector = {\n    CUSTOMFILE: '.custom-file input[type=\"file\"]',\n    CUSTOMFILELABEL: '.custom-file-label',\n    FORM: 'form',\n    INPUT: 'input'\n  };\n\n  var textNodeType = 3;\n\n  var getDefaultText = function getDefaultText(input) {\n    var defaultText = '';\n    var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);\n\n    if (label) {\n      defaultText = label.innerHTML;\n    }\n\n    return defaultText;\n  };\n\n  var findFirstChildNode = function findFirstChildNode(element) {\n    if (element.childNodes.length > 0) {\n      var childNodes = [].slice.call(element.childNodes);\n\n      for (var i = 0; i < childNodes.length; i++) {\n        var node = childNodes[i];\n\n        if (node.nodeType !== textNodeType) {\n          return node;\n        }\n      }\n    }\n\n    return element;\n  };\n\n  var restoreDefaultText = function restoreDefaultText(input) {\n    var defaultText = input.bsCustomFileInput.defaultText;\n    var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);\n\n    if (label) {\n      var element = findFirstChildNode(label);\n      element.innerHTML = defaultText;\n    }\n  };\n\n  var fileApi = !!window.File;\n  var FAKE_PATH = 'fakepath';\n  var FAKE_PATH_SEPARATOR = '\\\\';\n\n  var getSelectedFiles = function getSelectedFiles(input) {\n    if (input.hasAttribute('multiple') && fileApi) {\n      return [].slice.call(input.files).map(function (file) {\n        return file.name;\n      }).join(', ');\n    }\n\n    if (input.value.indexOf(FAKE_PATH) !== -1) {\n      var splittedValue = input.value.split(FAKE_PATH_SEPARATOR);\n      return splittedValue[splittedValue.length - 1];\n    }\n\n    return input.value;\n  };\n\n  function handleInputChange() {\n    var label = this.parentNode.querySelector(Selector.CUSTOMFILELABEL);\n\n    if (label) {\n      var element = findFirstChildNode(label);\n      var inputValue = getSelectedFiles(this);\n\n      if (inputValue.length) {\n        element.innerHTML = inputValue;\n      } else {\n        restoreDefaultText(this);\n      }\n    }\n  }\n\n  function handleFormReset() {\n    var customFileList = [].slice.call(this.querySelectorAll(Selector.INPUT)).filter(function (input) {\n      return !!input.bsCustomFileInput;\n    });\n\n    for (var i = 0, len = customFileList.length; i < len; i++) {\n      restoreDefaultText(customFileList[i]);\n    }\n  }\n\n  var customProperty = 'bsCustomFileInput';\n  var Event = {\n    FORMRESET: 'reset',\n    INPUTCHANGE: 'change'\n  };\n  var bsCustomFileInput = {\n    init: function init(inputSelector, formSelector) {\n      if (inputSelector === void 0) {\n        inputSelector = Selector.CUSTOMFILE;\n      }\n\n      if (formSelector === void 0) {\n        formSelector = Selector.FORM;\n      }\n\n      var customFileInputList = [].slice.call(document.querySelectorAll(inputSelector));\n      var formList = [].slice.call(document.querySelectorAll(formSelector));\n\n      for (var i = 0, len = customFileInputList.length; i < len; i++) {\n        var input = customFileInputList[i];\n        Object.defineProperty(input, customProperty, {\n          value: {\n            defaultText: getDefaultText(input)\n          },\n          writable: true\n        });\n        handleInputChange.call(input);\n        input.addEventListener(Event.INPUTCHANGE, handleInputChange);\n      }\n\n      for (var _i = 0, _len = formList.length; _i < _len; _i++) {\n        formList[_i].addEventListener(Event.FORMRESET, handleFormReset);\n\n        Object.defineProperty(formList[_i], customProperty, {\n          value: true,\n          writable: true\n        });\n      }\n    },\n    destroy: function destroy() {\n      var formList = [].slice.call(document.querySelectorAll(Selector.FORM)).filter(function (form) {\n        return !!form.bsCustomFileInput;\n      });\n      var customFileInputList = [].slice.call(document.querySelectorAll(Selector.INPUT)).filter(function (input) {\n        return !!input.bsCustomFileInput;\n      });\n\n      for (var i = 0, len = customFileInputList.length; i < len; i++) {\n        var input = customFileInputList[i];\n        restoreDefaultText(input);\n        input[customProperty] = undefined;\n        input.removeEventListener(Event.INPUTCHANGE, handleInputChange);\n      }\n\n      for (var _i2 = 0, _len2 = formList.length; _i2 < _len2; _i2++) {\n        formList[_i2].removeEventListener(Event.FORMRESET, handleFormReset);\n\n        formList[_i2][customProperty] = undefined;\n      }\n    }\n  };\n\n  return bsCustomFileInput;\n\n}));\n//# sourceMappingURL=bs-custom-file-input.js.map\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n\n  bsCustomFileInput.init()\n});\n","/*!\n * Chart.js\n * http://chartjs.org/\n * Version: 2.7.3\n *\n * Copyright 2018 Chart.js Contributors\n * Released under the MIT license\n * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md\n */\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<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n\n},{}],2:[function(require,module,exports){\n/* MIT license */\nvar colorNames = require(6);\n\nmodule.exports = {\n   getRgba: getRgba,\n   getHsla: getHsla,\n   getRgb: getRgb,\n   getHsl: getHsl,\n   getHwb: getHwb,\n   getAlpha: getAlpha,\n\n   hexString: hexString,\n   rgbString: rgbString,\n   rgbaString: rgbaString,\n   percentString: percentString,\n   percentaString: percentaString,\n   hslString: hslString,\n   hslaString: hslaString,\n   hwbString: hwbString,\n   keyword: keyword\n}\n\nfunction getRgba(string) {\n   if (!string) {\n      return;\n   }\n   var abbr =  /^#([a-fA-F0-9]{3})$/i,\n       hex =  /^#([a-fA-F0-9]{6})$/i,\n       rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n       per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n       keyword = /(\\w+)/;\n\n   var rgb = [0, 0, 0],\n       a = 1,\n       match = string.match(abbr);\n   if (match) {\n      match = match[1];\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = parseInt(match[i] + match[i], 16);\n      }\n   }\n   else if (match = string.match(hex)) {\n      match = match[1];\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n      }\n   }\n   else if (match = string.match(rgba)) {\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = parseInt(match[i + 1]);\n      }\n      a = parseFloat(match[4]);\n   }\n   else if (match = string.match(per)) {\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n      }\n      a = parseFloat(match[4]);\n   }\n   else if (match = string.match(keyword)) {\n      if (match[1] == \"transparent\") {\n         return [0, 0, 0, 0];\n      }\n      rgb = colorNames[match[1]];\n      if (!rgb) {\n         return;\n      }\n   }\n\n   for (var i = 0; i < rgb.length; i++) {\n      rgb[i] = scale(rgb[i], 0, 255);\n   }\n   if (!a && a != 0) {\n      a = 1;\n   }\n   else {\n      a = scale(a, 0, 1);\n   }\n   rgb[3] = a;\n   return rgb;\n}\n\nfunction getHsla(string) {\n   if (!string) {\n      return;\n   }\n   var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n   var match = string.match(hsl);\n   if (match) {\n      var alpha = parseFloat(match[4]);\n      var h = scale(parseInt(match[1]), 0, 360),\n          s = scale(parseFloat(match[2]), 0, 100),\n          l = scale(parseFloat(match[3]), 0, 100),\n          a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n      return [h, s, l, a];\n   }\n}\n\nfunction getHwb(string) {\n   if (!string) {\n      return;\n   }\n   var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n   var match = string.match(hwb);\n   if (match) {\n    var alpha = parseFloat(match[4]);\n      var h = scale(parseInt(match[1]), 0, 360),\n          w = scale(parseFloat(match[2]), 0, 100),\n          b = scale(parseFloat(match[3]), 0, 100),\n          a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n      return [h, w, b, a];\n   }\n}\n\nfunction getRgb(string) {\n   var rgba = getRgba(string);\n   return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n  var hsla = getHsla(string);\n  return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n   var vals = getRgba(string);\n   if (vals) {\n      return vals[3];\n   }\n   else if (vals = getHsla(string)) {\n      return vals[3];\n   }\n   else if (vals = getHwb(string)) {\n      return vals[3];\n   }\n}\n\n// generators\nfunction hexString(rgb) {\n   return \"#\" + hexDouble(rgb[0]) + hexDouble(rgb[1])\n              + hexDouble(rgb[2]);\n}\n\nfunction rgbString(rgba, alpha) {\n   if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n      return rgbaString(rgba, alpha);\n   }\n   return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n   if (alpha === undefined) {\n      alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n   }\n   return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n           + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n   if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n      return percentaString(rgba, alpha);\n   }\n   var r = Math.round(rgba[0]/255 * 100),\n       g = Math.round(rgba[1]/255 * 100),\n       b = Math.round(rgba[2]/255 * 100);\n\n   return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n   var r = Math.round(rgba[0]/255 * 100),\n       g = Math.round(rgba[1]/255 * 100),\n       b = Math.round(rgba[2]/255 * 100);\n   return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n   if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n      return hslaString(hsla, alpha);\n   }\n   return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n   if (alpha === undefined) {\n      alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n   }\n   return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n           + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n   if (alpha === undefined) {\n      alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n   }\n   return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n           + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n  return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n   return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n  var str = num.toString(16).toUpperCase();\n  return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorNames) {\n   reverseNames[colorNames[name]] = name;\n}\n\n},{\"6\":6}],3:[function(require,module,exports){\n/* MIT license */\nvar convert = require(5);\nvar string = require(2);\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.valid = false;\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = string.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = string.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = string.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\tisValid: function () {\n\t\treturn this.valid;\n\t},\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn string.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn string.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn string.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn string.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn string.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn string.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn string.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn string.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = convert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nmodule.exports = Color;\n\n},{\"2\":2,\"5\":5}],4:[function(require,module,exports){\n/* MIT license */\n\nmodule.exports = {\n  rgb2hsl: rgb2hsl,\n  rgb2hsv: rgb2hsv,\n  rgb2hwb: rgb2hwb,\n  rgb2cmyk: rgb2cmyk,\n  rgb2keyword: rgb2keyword,\n  rgb2xyz: rgb2xyz,\n  rgb2lab: rgb2lab,\n  rgb2lch: rgb2lch,\n\n  hsl2rgb: hsl2rgb,\n  hsl2hsv: hsl2hsv,\n  hsl2hwb: hsl2hwb,\n  hsl2cmyk: hsl2cmyk,\n  hsl2keyword: hsl2keyword,\n\n  hsv2rgb: hsv2rgb,\n  hsv2hsl: hsv2hsl,\n  hsv2hwb: hsv2hwb,\n  hsv2cmyk: hsv2cmyk,\n  hsv2keyword: hsv2keyword,\n\n  hwb2rgb: hwb2rgb,\n  hwb2hsl: hwb2hsl,\n  hwb2hsv: hwb2hsv,\n  hwb2cmyk: hwb2cmyk,\n  hwb2keyword: hwb2keyword,\n\n  cmyk2rgb: cmyk2rgb,\n  cmyk2hsl: cmyk2hsl,\n  cmyk2hsv: cmyk2hsv,\n  cmyk2hwb: cmyk2hwb,\n  cmyk2keyword: cmyk2keyword,\n\n  keyword2rgb: keyword2rgb,\n  keyword2hsl: keyword2hsl,\n  keyword2hsv: keyword2hsv,\n  keyword2hwb: keyword2hwb,\n  keyword2cmyk: keyword2cmyk,\n  keyword2lab: keyword2lab,\n  keyword2xyz: keyword2xyz,\n\n  xyz2rgb: xyz2rgb,\n  xyz2lab: xyz2lab,\n  xyz2lch: xyz2lch,\n\n  lab2xyz: lab2xyz,\n  lab2rgb: lab2rgb,\n  lab2lch: lab2lch,\n\n  lch2lab: lch2lab,\n  lch2xyz: lch2xyz,\n  lch2rgb: lch2rgb\n}\n\n\nfunction rgb2hsl(rgb) {\n  var r = rgb[0]/255,\n      g = rgb[1]/255,\n      b = rgb[2]/255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      delta = max - min,\n      h, s, l;\n\n  if (max == min)\n    h = 0;\n  else if (r == max)\n    h = (g - b) / delta;\n  else if (g == max)\n    h = 2 + (b - r) / delta;\n  else if (b == max)\n    h = 4 + (r - g)/ delta;\n\n  h = Math.min(h * 60, 360);\n\n  if (h < 0)\n    h += 360;\n\n  l = (min + max) / 2;\n\n  if (max == min)\n    s = 0;\n  else if (l <= 0.5)\n    s = delta / (max + min);\n  else\n    s = delta / (2 - max - min);\n\n  return [h, s * 100, l * 100];\n}\n\nfunction rgb2hsv(rgb) {\n  var r = rgb[0],\n      g = rgb[1],\n      b = rgb[2],\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      delta = max - min,\n      h, s, v;\n\n  if (max == 0)\n    s = 0;\n  else\n    s = (delta/max * 1000)/10;\n\n  if (max == min)\n    h = 0;\n  else if (r == max)\n    h = (g - b) / delta;\n  else if (g == max)\n    h = 2 + (b - r) / delta;\n  else if (b == max)\n    h = 4 + (r - g) / delta;\n\n  h = Math.min(h * 60, 360);\n\n  if (h < 0)\n    h += 360;\n\n  v = ((max / 255) * 1000) / 10;\n\n  return [h, s, v];\n}\n\nfunction rgb2hwb(rgb) {\n  var r = rgb[0],\n      g = rgb[1],\n      b = rgb[2],\n      h = rgb2hsl(rgb)[0],\n      w = 1/255 * Math.min(r, Math.min(g, b)),\n      b = 1 - 1/255 * Math.max(r, Math.max(g, b));\n\n  return [h, w * 100, b * 100];\n}\n\nfunction rgb2cmyk(rgb) {\n  var r = rgb[0] / 255,\n      g = rgb[1] / 255,\n      b = rgb[2] / 255,\n      c, m, y, k;\n\n  k = Math.min(1 - r, 1 - g, 1 - b);\n  c = (1 - r - k) / (1 - k) || 0;\n  m = (1 - g - k) / (1 - k) || 0;\n  y = (1 - b - k) / (1 - k) || 0;\n  return [c * 100, m * 100, y * 100, k * 100];\n}\n\nfunction rgb2keyword(rgb) {\n  return reverseKeywords[JSON.stringify(rgb)];\n}\n\nfunction rgb2xyz(rgb) {\n  var r = rgb[0] / 255,\n      g = rgb[1] / 255,\n      b = rgb[2] / 255;\n\n  // assume sRGB\n  r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n  g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n  b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n  var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n  var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n  var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n  return [x * 100, y *100, z * 100];\n}\n\nfunction rgb2lab(rgb) {\n  var xyz = rgb2xyz(rgb),\n        x = xyz[0],\n        y = xyz[1],\n        z = xyz[2],\n        l, a, b;\n\n  x /= 95.047;\n  y /= 100;\n  z /= 108.883;\n\n  x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n  y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n  z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n  l = (116 * y) - 16;\n  a = 500 * (x - y);\n  b = 200 * (y - z);\n\n  return [l, a, b];\n}\n\nfunction rgb2lch(args) {\n  return lab2lch(rgb2lab(args));\n}\n\nfunction hsl2rgb(hsl) {\n  var h = hsl[0] / 360,\n      s = hsl[1] / 100,\n      l = hsl[2] / 100,\n      t1, t2, t3, rgb, val;\n\n  if (s == 0) {\n    val = l * 255;\n    return [val, val, val];\n  }\n\n  if (l < 0.5)\n    t2 = l * (1 + s);\n  else\n    t2 = l + s - l * s;\n  t1 = 2 * l - t2;\n\n  rgb = [0, 0, 0];\n  for (var i = 0; i < 3; i++) {\n    t3 = h + 1 / 3 * - (i - 1);\n    t3 < 0 && t3++;\n    t3 > 1 && t3--;\n\n    if (6 * t3 < 1)\n      val = t1 + (t2 - t1) * 6 * t3;\n    else if (2 * t3 < 1)\n      val = t2;\n    else if (3 * t3 < 2)\n      val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n    else\n      val = t1;\n\n    rgb[i] = val * 255;\n  }\n\n  return rgb;\n}\n\nfunction hsl2hsv(hsl) {\n  var h = hsl[0],\n      s = hsl[1] / 100,\n      l = hsl[2] / 100,\n      sv, v;\n\n  if(l === 0) {\n      // no need to do calc on black\n      // also avoids divide by 0 error\n      return [0, 0, 0];\n  }\n\n  l *= 2;\n  s *= (l <= 1) ? l : 2 - l;\n  v = (l + s) / 2;\n  sv = (2 * s) / (l + s);\n  return [h, sv * 100, v * 100];\n}\n\nfunction hsl2hwb(args) {\n  return rgb2hwb(hsl2rgb(args));\n}\n\nfunction hsl2cmyk(args) {\n  return rgb2cmyk(hsl2rgb(args));\n}\n\nfunction hsl2keyword(args) {\n  return rgb2keyword(hsl2rgb(args));\n}\n\n\nfunction hsv2rgb(hsv) {\n  var h = hsv[0] / 60,\n      s = hsv[1] / 100,\n      v = hsv[2] / 100,\n      hi = Math.floor(h) % 6;\n\n  var f = h - Math.floor(h),\n      p = 255 * v * (1 - s),\n      q = 255 * v * (1 - (s * f)),\n      t = 255 * v * (1 - (s * (1 - f))),\n      v = 255 * v;\n\n  switch(hi) {\n    case 0:\n      return [v, t, p];\n    case 1:\n      return [q, v, p];\n    case 2:\n      return [p, v, t];\n    case 3:\n      return [p, q, v];\n    case 4:\n      return [t, p, v];\n    case 5:\n      return [v, p, q];\n  }\n}\n\nfunction hsv2hsl(hsv) {\n  var h = hsv[0],\n      s = hsv[1] / 100,\n      v = hsv[2] / 100,\n      sl, l;\n\n  l = (2 - s) * v;\n  sl = s * v;\n  sl /= (l <= 1) ? l : 2 - l;\n  sl = sl || 0;\n  l /= 2;\n  return [h, sl * 100, l * 100];\n}\n\nfunction hsv2hwb(args) {\n  return rgb2hwb(hsv2rgb(args))\n}\n\nfunction hsv2cmyk(args) {\n  return rgb2cmyk(hsv2rgb(args));\n}\n\nfunction hsv2keyword(args) {\n  return rgb2keyword(hsv2rgb(args));\n}\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nfunction hwb2rgb(hwb) {\n  var h = hwb[0] / 360,\n      wh = hwb[1] / 100,\n      bl = hwb[2] / 100,\n      ratio = wh + bl,\n      i, v, f, n;\n\n  // wh + bl cant be > 1\n  if (ratio > 1) {\n    wh /= ratio;\n    bl /= ratio;\n  }\n\n  i = Math.floor(6 * h);\n  v = 1 - bl;\n  f = 6 * h - i;\n  if ((i & 0x01) != 0) {\n    f = 1 - f;\n  }\n  n = wh + f * (v - wh);  // linear interpolation\n\n  switch (i) {\n    default:\n    case 6:\n    case 0: r = v; g = n; b = wh; break;\n    case 1: r = n; g = v; b = wh; break;\n    case 2: r = wh; g = v; b = n; break;\n    case 3: r = wh; g = n; b = v; break;\n    case 4: r = n; g = wh; b = v; break;\n    case 5: r = v; g = wh; b = n; break;\n  }\n\n  return [r * 255, g * 255, b * 255];\n}\n\nfunction hwb2hsl(args) {\n  return rgb2hsl(hwb2rgb(args));\n}\n\nfunction hwb2hsv(args) {\n  return rgb2hsv(hwb2rgb(args));\n}\n\nfunction hwb2cmyk(args) {\n  return rgb2cmyk(hwb2rgb(args));\n}\n\nfunction hwb2keyword(args) {\n  return rgb2keyword(hwb2rgb(args));\n}\n\nfunction cmyk2rgb(cmyk) {\n  var c = cmyk[0] / 100,\n      m = cmyk[1] / 100,\n      y = cmyk[2] / 100,\n      k = cmyk[3] / 100,\n      r, g, b;\n\n  r = 1 - Math.min(1, c * (1 - k) + k);\n  g = 1 - Math.min(1, m * (1 - k) + k);\n  b = 1 - Math.min(1, y * (1 - k) + k);\n  return [r * 255, g * 255, b * 255];\n}\n\nfunction cmyk2hsl(args) {\n  return rgb2hsl(cmyk2rgb(args));\n}\n\nfunction cmyk2hsv(args) {\n  return rgb2hsv(cmyk2rgb(args));\n}\n\nfunction cmyk2hwb(args) {\n  return rgb2hwb(cmyk2rgb(args));\n}\n\nfunction cmyk2keyword(args) {\n  return rgb2keyword(cmyk2rgb(args));\n}\n\n\nfunction xyz2rgb(xyz) {\n  var x = xyz[0] / 100,\n      y = xyz[1] / 100,\n      z = xyz[2] / 100,\n      r, g, b;\n\n  r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n  g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n  b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n  // assume sRGB\n  r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n    : r = (r * 12.92);\n\n  g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n    : g = (g * 12.92);\n\n  b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n    : b = (b * 12.92);\n\n  r = Math.min(Math.max(0, r), 1);\n  g = Math.min(Math.max(0, g), 1);\n  b = Math.min(Math.max(0, b), 1);\n\n  return [r * 255, g * 255, b * 255];\n}\n\nfunction xyz2lab(xyz) {\n  var x = xyz[0],\n      y = xyz[1],\n      z = xyz[2],\n      l, a, b;\n\n  x /= 95.047;\n  y /= 100;\n  z /= 108.883;\n\n  x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n  y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n  z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n  l = (116 * y) - 16;\n  a = 500 * (x - y);\n  b = 200 * (y - z);\n\n  return [l, a, b];\n}\n\nfunction xyz2lch(args) {\n  return lab2lch(xyz2lab(args));\n}\n\nfunction lab2xyz(lab) {\n  var l = lab[0],\n      a = lab[1],\n      b = lab[2],\n      x, y, z, y2;\n\n  if (l <= 8) {\n    y = (l * 100) / 903.3;\n    y2 = (7.787 * (y / 100)) + (16 / 116);\n  } else {\n    y = 100 * Math.pow((l + 16) / 116, 3);\n    y2 = Math.pow(y / 100, 1/3);\n  }\n\n  x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3);\n\n  z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3);\n\n  return [x, y, z];\n}\n\nfunction lab2lch(lab) {\n  var l = lab[0],\n      a = lab[1],\n      b = lab[2],\n      hr, h, c;\n\n  hr = Math.atan2(b, a);\n  h = hr * 360 / 2 / Math.PI;\n  if (h < 0) {\n    h += 360;\n  }\n  c = Math.sqrt(a * a + b * b);\n  return [l, c, h];\n}\n\nfunction lab2rgb(args) {\n  return xyz2rgb(lab2xyz(args));\n}\n\nfunction lch2lab(lch) {\n  var l = lch[0],\n      c = lch[1],\n      h = lch[2],\n      a, b, hr;\n\n  hr = h / 360 * 2 * Math.PI;\n  a = c * Math.cos(hr);\n  b = c * Math.sin(hr);\n  return [l, a, b];\n}\n\nfunction lch2xyz(args) {\n  return lab2xyz(lch2lab(args));\n}\n\nfunction lch2rgb(args) {\n  return lab2rgb(lch2lab(args));\n}\n\nfunction keyword2rgb(keyword) {\n  return cssKeywords[keyword];\n}\n\nfunction keyword2hsl(args) {\n  return rgb2hsl(keyword2rgb(args));\n}\n\nfunction keyword2hsv(args) {\n  return rgb2hsv(keyword2rgb(args));\n}\n\nfunction keyword2hwb(args) {\n  return rgb2hwb(keyword2rgb(args));\n}\n\nfunction keyword2cmyk(args) {\n  return rgb2cmyk(keyword2rgb(args));\n}\n\nfunction keyword2lab(args) {\n  return rgb2lab(keyword2rgb(args));\n}\n\nfunction keyword2xyz(args) {\n  return rgb2xyz(keyword2rgb(args));\n}\n\nvar cssKeywords = {\n  aliceblue:  [240,248,255],\n  antiquewhite: [250,235,215],\n  aqua: [0,255,255],\n  aquamarine: [127,255,212],\n  azure:  [240,255,255],\n  beige:  [245,245,220],\n  bisque: [255,228,196],\n  black:  [0,0,0],\n  blanchedalmond: [255,235,205],\n  blue: [0,0,255],\n  blueviolet: [138,43,226],\n  brown:  [165,42,42],\n  burlywood:  [222,184,135],\n  cadetblue:  [95,158,160],\n  chartreuse: [127,255,0],\n  chocolate:  [210,105,30],\n  coral:  [255,127,80],\n  cornflowerblue: [100,149,237],\n  cornsilk: [255,248,220],\n  crimson:  [220,20,60],\n  cyan: [0,255,255],\n  darkblue: [0,0,139],\n  darkcyan: [0,139,139],\n  darkgoldenrod:  [184,134,11],\n  darkgray: [169,169,169],\n  darkgreen:  [0,100,0],\n  darkgrey: [169,169,169],\n  darkkhaki:  [189,183,107],\n  darkmagenta:  [139,0,139],\n  darkolivegreen: [85,107,47],\n  darkorange: [255,140,0],\n  darkorchid: [153,50,204],\n  darkred:  [139,0,0],\n  darksalmon: [233,150,122],\n  darkseagreen: [143,188,143],\n  darkslateblue:  [72,61,139],\n  darkslategray:  [47,79,79],\n  darkslategrey:  [47,79,79],\n  darkturquoise:  [0,206,209],\n  darkviolet: [148,0,211],\n  deeppink: [255,20,147],\n  deepskyblue:  [0,191,255],\n  dimgray:  [105,105,105],\n  dimgrey:  [105,105,105],\n  dodgerblue: [30,144,255],\n  firebrick:  [178,34,34],\n  floralwhite:  [255,250,240],\n  forestgreen:  [34,139,34],\n  fuchsia:  [255,0,255],\n  gainsboro:  [220,220,220],\n  ghostwhite: [248,248,255],\n  gold: [255,215,0],\n  goldenrod:  [218,165,32],\n  gray: [128,128,128],\n  green:  [0,128,0],\n  greenyellow:  [173,255,47],\n  grey: [128,128,128],\n  honeydew: [240,255,240],\n  hotpink:  [255,105,180],\n  indianred:  [205,92,92],\n  indigo: [75,0,130],\n  ivory:  [255,255,240],\n  khaki:  [240,230,140],\n  lavender: [230,230,250],\n  lavenderblush:  [255,240,245],\n  lawngreen:  [124,252,0],\n  lemonchiffon: [255,250,205],\n  lightblue:  [173,216,230],\n  lightcoral: [240,128,128],\n  lightcyan:  [224,255,255],\n  lightgoldenrodyellow: [250,250,210],\n  lightgray:  [211,211,211],\n  lightgreen: [144,238,144],\n  lightgrey:  [211,211,211],\n  lightpink:  [255,182,193],\n  lightsalmon:  [255,160,122],\n  lightseagreen:  [32,178,170],\n  lightskyblue: [135,206,250],\n  lightslategray: [119,136,153],\n  lightslategrey: [119,136,153],\n  lightsteelblue: [176,196,222],\n  lightyellow:  [255,255,224],\n  lime: [0,255,0],\n  limegreen:  [50,205,50],\n  linen:  [250,240,230],\n  magenta:  [255,0,255],\n  maroon: [128,0,0],\n  mediumaquamarine: [102,205,170],\n  mediumblue: [0,0,205],\n  mediumorchid: [186,85,211],\n  mediumpurple: [147,112,219],\n  mediumseagreen: [60,179,113],\n  mediumslateblue:  [123,104,238],\n  mediumspringgreen:  [0,250,154],\n  mediumturquoise:  [72,209,204],\n  mediumvioletred:  [199,21,133],\n  midnightblue: [25,25,112],\n  mintcream:  [245,255,250],\n  mistyrose:  [255,228,225],\n  moccasin: [255,228,181],\n  navajowhite:  [255,222,173],\n  navy: [0,0,128],\n  oldlace:  [253,245,230],\n  olive:  [128,128,0],\n  olivedrab:  [107,142,35],\n  orange: [255,165,0],\n  orangered:  [255,69,0],\n  orchid: [218,112,214],\n  palegoldenrod:  [238,232,170],\n  palegreen:  [152,251,152],\n  paleturquoise:  [175,238,238],\n  palevioletred:  [219,112,147],\n  papayawhip: [255,239,213],\n  peachpuff:  [255,218,185],\n  peru: [205,133,63],\n  pink: [255,192,203],\n  plum: [221,160,221],\n  powderblue: [176,224,230],\n  purple: [128,0,128],\n  rebeccapurple: [102, 51, 153],\n  red:  [255,0,0],\n  rosybrown:  [188,143,143],\n  royalblue:  [65,105,225],\n  saddlebrown:  [139,69,19],\n  salmon: [250,128,114],\n  sandybrown: [244,164,96],\n  seagreen: [46,139,87],\n  seashell: [255,245,238],\n  sienna: [160,82,45],\n  silver: [192,192,192],\n  skyblue:  [135,206,235],\n  slateblue:  [106,90,205],\n  slategray:  [112,128,144],\n  slategrey:  [112,128,144],\n  snow: [255,250,250],\n  springgreen:  [0,255,127],\n  steelblue:  [70,130,180],\n  tan:  [210,180,140],\n  teal: [0,128,128],\n  thistle:  [216,191,216],\n  tomato: [255,99,71],\n  turquoise:  [64,224,208],\n  violet: [238,130,238],\n  wheat:  [245,222,179],\n  white:  [255,255,255],\n  whitesmoke: [245,245,245],\n  yellow: [255,255,0],\n  yellowgreen:  [154,205,50]\n};\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n  reverseKeywords[JSON.stringify(cssKeywords[key])] = key;\n}\n\n},{}],5:[function(require,module,exports){\nvar conversions = require(4);\n\nvar convert = function() {\n   return new Converter();\n}\n\nfor (var func in conversions) {\n  // export Raw versions\n  convert[func + \"Raw\"] =  (function(func) {\n    // accept array or plain args\n    return function(arg) {\n      if (typeof arg == \"number\")\n        arg = Array.prototype.slice.call(arguments);\n      return conversions[func](arg);\n    }\n  })(func);\n\n  var pair = /(\\w+)2(\\w+)/.exec(func),\n      from = pair[1],\n      to = pair[2];\n\n  // export rgb2hsl and [\"rgb\"][\"hsl\"]\n  convert[from] = convert[from] || {};\n\n  convert[from][to] = convert[func] = (function(func) {\n    return function(arg) {\n      if (typeof arg == \"number\")\n        arg = Array.prototype.slice.call(arguments);\n\n      var val = conversions[func](arg);\n      if (typeof val == \"string\" || val === undefined)\n        return val; // keyword\n\n      for (var i = 0; i < val.length; i++)\n        val[i] = Math.round(val[i]);\n      return val;\n    }\n  })(func);\n}\n\n\n/* Converter does lazy conversion and caching */\nvar Converter = function() {\n   this.convs = {};\n};\n\n/* Either get the values for a space or\n  set the values for a space, depending on args */\nConverter.prototype.routeSpace = function(space, args) {\n   var values = args[0];\n   if (values === undefined) {\n      // color.rgb()\n      return this.getValues(space);\n   }\n   // color.rgb(10, 10, 10)\n   if (typeof values == \"number\") {\n      values = Array.prototype.slice.call(args);\n   }\n\n   return this.setValues(space, values);\n};\n\n/* Set the values for a space, invalidating cache */\nConverter.prototype.setValues = function(space, values) {\n   this.space = space;\n   this.convs = {};\n   this.convs[space] = values;\n   return this;\n};\n\n/* Get the values for a space. If there's already\n  a conversion for the space, fetch it, otherwise\n  compute it */\nConverter.prototype.getValues = function(space) {\n   var vals = this.convs[space];\n   if (!vals) {\n      var fspace = this.space,\n          from = this.convs[fspace];\n      vals = convert[fspace][space](from);\n\n      this.convs[space] = vals;\n   }\n  return vals;\n};\n\n[\"rgb\", \"hsl\", \"hsv\", \"cmyk\", \"keyword\"].forEach(function(space) {\n   Converter.prototype[space] = function(vals) {\n      return this.routeSpace(space, arguments);\n   }\n});\n\nmodule.exports = convert;\n},{\"4\":4}],6:[function(require,module,exports){\n'use strict'\n\nmodule.exports = {\n\t\"aliceblue\": [240, 248, 255],\n\t\"antiquewhite\": [250, 235, 215],\n\t\"aqua\": [0, 255, 255],\n\t\"aquamarine\": [127, 255, 212],\n\t\"azure\": [240, 255, 255],\n\t\"beige\": [245, 245, 220],\n\t\"bisque\": [255, 228, 196],\n\t\"black\": [0, 0, 0],\n\t\"blanchedalmond\": [255, 235, 205],\n\t\"blue\": [0, 0, 255],\n\t\"blueviolet\": [138, 43, 226],\n\t\"brown\": [165, 42, 42],\n\t\"burlywood\": [222, 184, 135],\n\t\"cadetblue\": [95, 158, 160],\n\t\"chartreuse\": [127, 255, 0],\n\t\"chocolate\": [210, 105, 30],\n\t\"coral\": [255, 127, 80],\n\t\"cornflowerblue\": [100, 149, 237],\n\t\"cornsilk\": [255, 248, 220],\n\t\"crimson\": [220, 20, 60],\n\t\"cyan\": [0, 255, 255],\n\t\"darkblue\": [0, 0, 139],\n\t\"darkcyan\": [0, 139, 139],\n\t\"darkgoldenrod\": [184, 134, 11],\n\t\"darkgray\": [169, 169, 169],\n\t\"darkgreen\": [0, 100, 0],\n\t\"darkgrey\": [169, 169, 169],\n\t\"darkkhaki\": [189, 183, 107],\n\t\"darkmagenta\": [139, 0, 139],\n\t\"darkolivegreen\": [85, 107, 47],\n\t\"darkorange\": [255, 140, 0],\n\t\"darkorchid\": [153, 50, 204],\n\t\"darkred\": [139, 0, 0],\n\t\"darksalmon\": [233, 150, 122],\n\t\"darkseagreen\": [143, 188, 143],\n\t\"darkslateblue\": [72, 61, 139],\n\t\"darkslategray\": [47, 79, 79],\n\t\"darkslategrey\": [47, 79, 79],\n\t\"darkturquoise\": [0, 206, 209],\n\t\"darkviolet\": [148, 0, 211],\n\t\"deeppink\": [255, 20, 147],\n\t\"deepskyblue\": [0, 191, 255],\n\t\"dimgray\": [105, 105, 105],\n\t\"dimgrey\": [105, 105, 105],\n\t\"dodgerblue\": [30, 144, 255],\n\t\"firebrick\": [178, 34, 34],\n\t\"floralwhite\": [255, 250, 240],\n\t\"forestgreen\": [34, 139, 34],\n\t\"fuchsia\": [255, 0, 255],\n\t\"gainsboro\": [220, 220, 220],\n\t\"ghostwhite\": [248, 248, 255],\n\t\"gold\": [255, 215, 0],\n\t\"goldenrod\": [218, 165, 32],\n\t\"gray\": [128, 128, 128],\n\t\"green\": [0, 128, 0],\n\t\"greenyellow\": [173, 255, 47],\n\t\"grey\": [128, 128, 128],\n\t\"honeydew\": [240, 255, 240],\n\t\"hotpink\": [255, 105, 180],\n\t\"indianred\": [205, 92, 92],\n\t\"indigo\": [75, 0, 130],\n\t\"ivory\": [255, 255, 240],\n\t\"khaki\": [240, 230, 140],\n\t\"lavender\": [230, 230, 250],\n\t\"lavenderblush\": [255, 240, 245],\n\t\"lawngreen\": [124, 252, 0],\n\t\"lemonchiffon\": [255, 250, 205],\n\t\"lightblue\": [173, 216, 230],\n\t\"lightcoral\": [240, 128, 128],\n\t\"lightcyan\": [224, 255, 255],\n\t\"lightgoldenrodyellow\": [250, 250, 210],\n\t\"lightgray\": [211, 211, 211],\n\t\"lightgreen\": [144, 238, 144],\n\t\"lightgrey\": [211, 211, 211],\n\t\"lightpink\": [255, 182, 193],\n\t\"lightsalmon\": [255, 160, 122],\n\t\"lightseagreen\": [32, 178, 170],\n\t\"lightskyblue\": [135, 206, 250],\n\t\"lightslategray\": [119, 136, 153],\n\t\"lightslategrey\": [119, 136, 153],\n\t\"lightsteelblue\": [176, 196, 222],\n\t\"lightyellow\": [255, 255, 224],\n\t\"lime\": [0, 255, 0],\n\t\"limegreen\": [50, 205, 50],\n\t\"linen\": [250, 240, 230],\n\t\"magenta\": [255, 0, 255],\n\t\"maroon\": [128, 0, 0],\n\t\"mediumaquamarine\": [102, 205, 170],\n\t\"mediumblue\": [0, 0, 205],\n\t\"mediumorchid\": [186, 85, 211],\n\t\"mediumpurple\": [147, 112, 219],\n\t\"mediumseagreen\": [60, 179, 113],\n\t\"mediumslateblue\": [123, 104, 238],\n\t\"mediumspringgreen\": [0, 250, 154],\n\t\"mediumturquoise\": [72, 209, 204],\n\t\"mediumvioletred\": [199, 21, 133],\n\t\"midnightblue\": [25, 25, 112],\n\t\"mintcream\": [245, 255, 250],\n\t\"mistyrose\": [255, 228, 225],\n\t\"moccasin\": [255, 228, 181],\n\t\"navajowhite\": [255, 222, 173],\n\t\"navy\": [0, 0, 128],\n\t\"oldlace\": [253, 245, 230],\n\t\"olive\": [128, 128, 0],\n\t\"olivedrab\": [107, 142, 35],\n\t\"orange\": [255, 165, 0],\n\t\"orangered\": [255, 69, 0],\n\t\"orchid\": [218, 112, 214],\n\t\"palegoldenrod\": [238, 232, 170],\n\t\"palegreen\": [152, 251, 152],\n\t\"paleturquoise\": [175, 238, 238],\n\t\"palevioletred\": [219, 112, 147],\n\t\"papayawhip\": [255, 239, 213],\n\t\"peachpuff\": [255, 218, 185],\n\t\"peru\": [205, 133, 63],\n\t\"pink\": [255, 192, 203],\n\t\"plum\": [221, 160, 221],\n\t\"powderblue\": [176, 224, 230],\n\t\"purple\": [128, 0, 128],\n\t\"rebeccapurple\": [102, 51, 153],\n\t\"red\": [255, 0, 0],\n\t\"rosybrown\": [188, 143, 143],\n\t\"royalblue\": [65, 105, 225],\n\t\"saddlebrown\": [139, 69, 19],\n\t\"salmon\": [250, 128, 114],\n\t\"sandybrown\": [244, 164, 96],\n\t\"seagreen\": [46, 139, 87],\n\t\"seashell\": [255, 245, 238],\n\t\"sienna\": [160, 82, 45],\n\t\"silver\": [192, 192, 192],\n\t\"skyblue\": [135, 206, 235],\n\t\"slateblue\": [106, 90, 205],\n\t\"slategray\": [112, 128, 144],\n\t\"slategrey\": [112, 128, 144],\n\t\"snow\": [255, 250, 250],\n\t\"springgreen\": [0, 255, 127],\n\t\"steelblue\": [70, 130, 180],\n\t\"tan\": [210, 180, 140],\n\t\"teal\": [0, 128, 128],\n\t\"thistle\": [216, 191, 216],\n\t\"tomato\": [255, 99, 71],\n\t\"turquoise\": [64, 224, 208],\n\t\"violet\": [238, 130, 238],\n\t\"wheat\": [245, 222, 179],\n\t\"white\": [255, 255, 255],\n\t\"whitesmoke\": [245, 245, 245],\n\t\"yellow\": [255, 255, 0],\n\t\"yellowgreen\": [154, 205, 50]\n};\n\n},{}],7:[function(require,module,exports){\n/**\n * @namespace Chart\n */\nvar Chart = require(30)();\n\nChart.helpers = require(46);\n\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\nrequire(28)(Chart);\n\nChart.Animation = require(22);\nChart.animationService = require(23);\nChart.defaults = require(26);\nChart.Element = require(27);\nChart.elements = require(41);\nChart.Interaction = require(29);\nChart.layouts = require(31);\nChart.platform = require(49);\nChart.plugins = require(32);\nChart.Scale = require(33);\nChart.scaleService = require(34);\nChart.Ticks = require(35);\nChart.Tooltip = require(36);\n\nrequire(24)(Chart);\nrequire(25)(Chart);\n\nrequire(56)(Chart);\nrequire(54)(Chart);\nrequire(55)(Chart);\nrequire(57)(Chart);\nrequire(58)(Chart);\nrequire(59)(Chart);\n\n// Controllers must be loaded after elements\n// See Chart.core.datasetController.dataElementType\nrequire(15)(Chart);\nrequire(16)(Chart);\nrequire(17)(Chart);\nrequire(18)(Chart);\nrequire(19)(Chart);\nrequire(20)(Chart);\nrequire(21)(Chart);\n\nrequire(8)(Chart);\nrequire(9)(Chart);\nrequire(10)(Chart);\nrequire(11)(Chart);\nrequire(12)(Chart);\nrequire(13)(Chart);\nrequire(14)(Chart);\n\n// Loading built-in plugins\nvar plugins = require(50);\nfor (var k in plugins) {\n\tif (plugins.hasOwnProperty(k)) {\n\t\tChart.plugins.register(plugins[k]);\n\t}\n}\n\nChart.platform.initialize();\n\nmodule.exports = Chart;\nif (typeof window !== 'undefined') {\n\twindow.Chart = Chart;\n}\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Legend\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.Legend = plugins.legend._element;\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Title\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.Title = plugins.title._element;\n\n/**\n * Provided for backward compatibility, use Chart.plugins instead\n * @namespace Chart.pluginService\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.pluginService = Chart.plugins;\n\n/**\n * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\n * effect, instead simply create/register plugins via plain JavaScript objects.\n * @interface Chart.PluginBase\n * @deprecated since version 2.5.0\n * @todo remove at version 3\n * @private\n */\nChart.PluginBase = Chart.Element.extend({});\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas instead.\n * @namespace Chart.canvasHelpers\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\nChart.canvasHelpers = Chart.helpers.canvas;\n\n/**\n * Provided for backward compatibility, use Chart.layouts instead.\n * @namespace Chart.layoutService\n * @deprecated since version 2.8.0\n * @todo remove at version 3\n * @private\n */\nChart.layoutService = Chart.layouts;\n\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){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Bar = function(context, config) {\n\t\tconfig.type = 'bar';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],9:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Bubble = function(context, config) {\n\t\tconfig.type = 'bubble';\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],10:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Doughnut = function(context, config) {\n\t\tconfig.type = 'doughnut';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],11:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Line = function(context, config) {\n\t\tconfig.type = 'line';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],12:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.PolarArea = function(context, config) {\n\t\tconfig.type = 'polarArea';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],13:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Radar = function(context, config) {\n\t\tconfig.type = 'radar';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],14:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\tChart.Scatter = function(context, config) {\n\t\tconfig.type = 'scatter';\n\t\treturn new Chart(context, config);\n\t};\n};\n\n},{}],15:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('bar', {\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\n\t\t\t// Specific to Bar Controller\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9,\n\n\t\t\t// offset settings\n\t\t\toffset: true,\n\n\t\t\t// grid line settings\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\ttype: 'linear'\n\t\t}]\n\t}\n});\n\ndefaults._set('horizontalBar', {\n\thover: {\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'bottom'\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\tposition: 'left',\n\t\t\ttype: 'category',\n\n\t\t\t// Specific to Horizontal Bar Controller\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9,\n\n\t\t\t// offset settings\n\t\t\toffset: true,\n\n\t\t\t// grid line settings\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}]\n\t},\n\n\telements: {\n\t\trectangle: {\n\t\t\tborderSkipped: 'left'\n\t\t}\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function(item, data) {\n\t\t\t\t// Pick first xLabel for now\n\t\t\t\tvar title = '';\n\n\t\t\t\tif (item.length > 0) {\n\t\t\t\t\tif (item[0].yLabel) {\n\t\t\t\t\t\ttitle = item[0].yLabel;\n\t\t\t\t\t} else if (data.labels.length > 0 && item[0].index < data.labels.length) {\n\t\t\t\t\t\ttitle = data.labels[item[0].index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn title;\n\t\t\t},\n\n\t\t\tlabel: function(item, data) {\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\n\t\t\t\treturn datasetLabel + ': ' + item.xLabel;\n\t\t\t}\n\t\t},\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t}\n});\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(scale, pixels) {\n\tvar min = scale.isHorizontal() ? scale.width : scale.height;\n\tvar ticks = scale.getTicks();\n\tvar prev, curr, i, ilen;\n\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\n\t\tmin = Math.min(min, pixels[i] - pixels[i - 1]);\n\t}\n\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\tcurr = scale.getPixelForTick(i);\n\t\tmin = i > 0 ? Math.min(min, curr - prev) : min;\n\t\tprev = curr;\n\t}\n\n\treturn min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options) {\n\tvar thickness = options.barThickness;\n\tvar count = ruler.stackCount;\n\tvar curr = ruler.pixels[index];\n\tvar size, ratio;\n\n\tif (helpers.isNullOrUndef(thickness)) {\n\t\tsize = ruler.min * options.categoryPercentage;\n\t\tratio = options.barPercentage;\n\t} else {\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\n\t\tsize = thickness * count;\n\t\tratio = 1;\n\t}\n\n\treturn {\n\t\tchunk: size / count,\n\t\tratio: ratio,\n\t\tstart: curr - (size / 2)\n\t};\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options) {\n\tvar pixels = ruler.pixels;\n\tvar curr = pixels[index];\n\tvar prev = index > 0 ? pixels[index - 1] : null;\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\n\tvar percent = options.categoryPercentage;\n\tvar start, size;\n\n\tif (prev === null) {\n\t\t// first data: its size is double based on the next point or,\n\t\t// if it's also the last data, we use the scale end extremity.\n\t\tprev = curr - (next === null ? ruler.end - curr : next - curr);\n\t}\n\n\tif (next === null) {\n\t\t// last data: its size is also double based on the previous point.\n\t\tnext = curr + curr - prev;\n\t}\n\n\tstart = curr - ((curr - prev) / 2) * percent;\n\tsize = ((next - prev) / 2) * percent;\n\n\treturn {\n\t\tchunk: size / ruler.stackCount,\n\t\tratio: options.barPercentage,\n\t\tstart: start\n\t};\n}\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.bar = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Rectangle,\n\n\t\tinitialize: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta;\n\n\t\t\tChart.DatasetController.prototype.initialize.apply(me, arguments);\n\n\t\t\tmeta = me.getMeta();\n\t\t\tmeta.stack = me.getDataset().stack;\n\t\t\tmeta.bar = true;\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar rects = me.getMeta().data;\n\t\t\tvar i, ilen;\n\n\t\t\tme._ruler = me.getRuler();\n\n\t\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\n\t\t\t\tme.updateElement(rects[i], i, reset);\n\t\t\t}\n\t\t},\n\n\t\tupdateElement: function(rectangle, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar custom = rectangle.custom || {};\n\t\t\tvar rectangleOptions = chart.options.elements.rectangle;\n\n\t\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\n\t\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\n\t\t\trectangle._datasetIndex = me.index;\n\t\t\trectangle._index = index;\n\n\t\t\trectangle._model = {\n\t\t\t\tdatasetLabel: dataset.label,\n\t\t\t\tlabel: chart.data.labels[index],\n\t\t\t\tborderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped,\n\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor),\n\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor),\n\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth)\n\t\t\t};\n\n\t\t\tme.updateElementGeometry(rectangle, index, reset);\n\n\t\t\trectangle.pivot();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tupdateElementGeometry: function(rectangle, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar model = rectangle._model;\n\t\t\tvar vscale = me.getValueScale();\n\t\t\tvar base = vscale.getBasePixel();\n\t\t\tvar horizontal = vscale.isHorizontal();\n\t\t\tvar ruler = me._ruler || me.getRuler();\n\t\t\tvar vpixels = me.calculateBarValuePixels(me.index, index);\n\t\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler);\n\n\t\t\tmodel.horizontal = horizontal;\n\t\t\tmodel.base = reset ? base : vpixels.base;\n\t\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\n\t\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\n\t\t\tmodel.height = horizontal ? ipixels.size : undefined;\n\t\t\tmodel.width = horizontal ? undefined : ipixels.size;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScaleId: function() {\n\t\t\treturn this.getMeta().yAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScaleId: function() {\n\t\t\treturn this.getMeta().xAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScale: function() {\n\t\t\treturn this.getScaleForId(this.getValueScaleId());\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScale: function() {\n\t\t\treturn this.getScaleForId(this.getIndexScaleId());\n\t\t},\n\n\t\t/**\n\t\t * Returns the stacks based on groups and bar visibility.\n\t\t * @param {Number} [last] - The dataset index\n\t\t * @returns {Array} The stack list\n\t\t * @private\n\t\t */\n\t\t_getStacks: function(last) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar scale = me.getIndexScale();\n\t\t\tvar stacked = scale.options.stacked;\n\t\t\tvar ilen = last === undefined ? chart.data.datasets.length : last + 1;\n\t\t\tvar stacks = [];\n\t\t\tvar i, meta;\n\n\t\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tif (meta.bar && chart.isDatasetVisible(i) &&\n\t\t\t\t\t(stacked === false ||\n\t\t\t\t\t(stacked === true && stacks.indexOf(meta.stack) === -1) ||\n\t\t\t\t\t(stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) {\n\t\t\t\t\tstacks.push(meta.stack);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn stacks;\n\t\t},\n\n\t\t/**\n\t\t * Returns the effective number of stacks based on groups and bar visibility.\n\t\t * @private\n\t\t */\n\t\tgetStackCount: function() {\n\t\t\treturn this._getStacks().length;\n\t\t},\n\n\t\t/**\n\t\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t\t * @param {Number} [datasetIndex] - The dataset index\n\t\t * @param {String} [name] - The stack name to find\n\t\t * @returns {Number} The stack index\n\t\t * @private\n\t\t */\n\t\tgetStackIndex: function(datasetIndex, name) {\n\t\t\tvar stacks = this._getStacks(datasetIndex);\n\t\t\tvar index = (name !== undefined)\n\t\t\t\t? stacks.indexOf(name)\n\t\t\t\t: -1; // indexOf returns -1 if element is not present\n\n\t\t\treturn (index === -1)\n\t\t\t\t? stacks.length - 1\n\t\t\t\t: index;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetRuler: function() {\n\t\t\tvar me = this;\n\t\t\tvar scale = me.getIndexScale();\n\t\t\tvar stackCount = me.getStackCount();\n\t\t\tvar datasetIndex = me.index;\n\t\t\tvar isHorizontal = scale.isHorizontal();\n\t\t\tvar start = isHorizontal ? scale.left : scale.top;\n\t\t\tvar end = start + (isHorizontal ? scale.width : scale.height);\n\t\t\tvar pixels = [];\n\t\t\tvar i, ilen, min;\n\n\t\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\n\t\t\t\tpixels.push(scale.getPixelForValue(null, i, datasetIndex));\n\t\t\t}\n\n\t\t\tmin = helpers.isNullOrUndef(scale.options.barThickness)\n\t\t\t\t? computeMinSampleSize(scale, pixels)\n\t\t\t\t: -1;\n\n\t\t\treturn {\n\t\t\t\tmin: min,\n\t\t\t\tpixels: pixels,\n\t\t\t\tstart: start,\n\t\t\t\tend: end,\n\t\t\t\tstackCount: stackCount,\n\t\t\t\tscale: scale\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Note: pixel values are not clamped to the scale area.\n\t\t * @private\n\t\t */\n\t\tcalculateBarValuePixels: function(datasetIndex, index) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar scale = me.getValueScale();\n\t\t\tvar datasets = chart.data.datasets;\n\t\t\tvar value = scale.getRightValue(datasets[datasetIndex].data[index]);\n\t\t\tvar stacked = scale.options.stacked;\n\t\t\tvar stack = meta.stack;\n\t\t\tvar start = 0;\n\t\t\tvar i, imeta, ivalue, base, head, size;\n\n\t\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\n\t\t\t\tfor (i = 0; i < datasetIndex; ++i) {\n\t\t\t\t\timeta = chart.getDatasetMeta(i);\n\n\t\t\t\t\tif (imeta.bar &&\n\t\t\t\t\t\timeta.stack === stack &&\n\t\t\t\t\t\timeta.controller.getValueScaleId() === scale.id &&\n\t\t\t\t\t\tchart.isDatasetVisible(i)) {\n\n\t\t\t\t\t\tivalue = scale.getRightValue(datasets[i].data[index]);\n\t\t\t\t\t\tif ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) {\n\t\t\t\t\t\t\tstart += ivalue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbase = scale.getPixelForValue(start);\n\t\t\thead = scale.getPixelForValue(start + value);\n\t\t\tsize = (head - base) / 2;\n\n\t\t\treturn {\n\t\t\t\tsize: size,\n\t\t\t\tbase: base,\n\t\t\t\thead: head,\n\t\t\t\tcenter: head + size / 2\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tcalculateBarIndexPixels: function(datasetIndex, index, ruler) {\n\t\t\tvar me = this;\n\t\t\tvar options = ruler.scale.options;\n\t\t\tvar range = options.barThickness === 'flex'\n\t\t\t\t? computeFlexCategoryTraits(index, ruler, options)\n\t\t\t\t: computeFitCategoryTraits(index, ruler, options);\n\n\t\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\n\t\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n\t\t\tvar size = Math.min(\n\t\t\t\thelpers.valueOrDefault(options.maxBarThickness, Infinity),\n\t\t\t\trange.chunk * range.ratio);\n\n\t\t\treturn {\n\t\t\t\tbase: center - size / 2,\n\t\t\t\thead: center + size / 2,\n\t\t\t\tcenter: center,\n\t\t\t\tsize: size\n\t\t\t};\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar scale = me.getValueScale();\n\t\t\tvar rects = me.getMeta().data;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar ilen = rects.length;\n\t\t\tvar i = 0;\n\n\t\t\thelpers.canvas.clipArea(chart.ctx, chart.chartArea);\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\tif (!isNaN(scale.getRightValue(dataset.data[i]))) {\n\t\t\t\t\trects[i].draw();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thelpers.canvas.unclipArea(chart.ctx);\n\t\t},\n\t});\n\n\tChart.controllers.horizontalBar = Chart.controllers.bar.extend({\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScaleId: function() {\n\t\t\treturn this.getMeta().xAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScaleId: function() {\n\t\t\treturn this.getMeta().yAxisID;\n\t\t}\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],16:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('bubble', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\n\t\t\tposition: 'bottom',\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.bubble = Chart.DatasetController.extend({\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tdataElementType: elements.Point,\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar points = meta.data;\n\n\t\t\t// Update Points\n\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar options = me._resolveElementOptions(point, index);\n\t\t\tvar data = me.getDataset().data[index];\n\t\t\tvar dsIndex = me.index;\n\n\t\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\n\t\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\n\n\t\t\tpoint._xScale = xScale;\n\t\t\tpoint._yScale = yScale;\n\t\t\tpoint._options = options;\n\t\t\tpoint._datasetIndex = dsIndex;\n\t\t\tpoint._index = index;\n\t\t\tpoint._model = {\n\t\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\t\tborderColor: options.borderColor,\n\t\t\t\tborderWidth: options.borderWidth,\n\t\t\t\thitRadius: options.hitRadius,\n\t\t\t\tpointStyle: options.pointStyle,\n\t\t\t\trotation: options.rotation,\n\t\t\t\tradius: reset ? 0 : options.radius,\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t};\n\n\t\t\tpoint.pivot();\n\t\t},\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tsetHoverStyle: function(point) {\n\t\t\tvar model = point._model;\n\t\t\tvar options = point._options;\n\t\t\tpoint.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\t\t\tmodel.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor));\n\t\t\tmodel.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor));\n\t\t\tmodel.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth);\n\t\t\tmodel.radius = options.radius + options.hoverRadius;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_resolveElementOptions: function(point, index) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar datasets = chart.data.datasets;\n\t\t\tvar dataset = datasets[me.index];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar options = chart.options.elements.point;\n\t\t\tvar resolve = helpers.options.resolve;\n\t\t\tvar data = dataset.data[index];\n\t\t\tvar values = {};\n\t\t\tvar i, ilen, key;\n\n\t\t\t// Scriptable options\n\t\t\tvar context = {\n\t\t\t\tchart: chart,\n\t\t\t\tdataIndex: index,\n\t\t\t\tdataset: dataset,\n\t\t\t\tdatasetIndex: me.index\n\t\t\t};\n\n\t\t\tvar keys = [\n\t\t\t\t'backgroundColor',\n\t\t\t\t'borderColor',\n\t\t\t\t'borderWidth',\n\t\t\t\t'hoverBackgroundColor',\n\t\t\t\t'hoverBorderColor',\n\t\t\t\t'hoverBorderWidth',\n\t\t\t\t'hoverRadius',\n\t\t\t\t'hitRadius',\n\t\t\t\t'pointStyle',\n\t\t\t\t'rotation'\n\t\t\t];\n\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\t\tkey = keys[i];\n\t\t\t\tvalues[key] = resolve([\n\t\t\t\t\tcustom[key],\n\t\t\t\t\tdataset[key],\n\t\t\t\t\toptions[key]\n\t\t\t\t], context, index);\n\t\t\t}\n\n\t\t\t// Custom radius resolution\n\t\t\tvalues.radius = resolve([\n\t\t\t\tcustom.radius,\n\t\t\t\tdata ? data.r : undefined,\n\t\t\t\tdataset.radius,\n\t\t\t\toptions.radius\n\t\t\t], context, index);\n\t\t\treturn values;\n\t\t}\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],17:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('doughnut', {\n\tanimation: {\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\n\t\tanimateRotate: true,\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\n\t\tanimateScale: false\n\t},\n\thover: {\n\t\tmode: 'single'\n\t},\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('<ul class=\"' + chart.id + '-legend\">');\n\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\n\t\tif (datasets.length) {\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\ttext.push('<li><span style=\"background-color:' + datasets[0].backgroundColor[i] + '\"></span>');\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t}\n\t\t\t\ttext.push('</li>');\n\t\t\t}\n\t\t}\n\n\t\ttext.push('</ul>');\n\t\treturn text.join('');\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\tvar custom = arc && arc.custom || {};\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t// toggle visibility of index if exists\n\t\t\t\tif (meta.data[index]) {\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// The percentage of the chart that we cut out of the middle.\n\tcutoutPercentage: 50,\n\n\t// The rotation of the chart, where the first data arc begins.\n\trotation: Math.PI * -0.5,\n\n\t// The total circumference of the chart.\n\tcircumference: Math.PI * 2.0,\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\n\t\t\t\tif (helpers.isArray(dataLabel)) {\n\t\t\t\t\t// show value on first line of multiline label\n\t\t\t\t\t// need to clone because we are changing the value\n\t\t\t\t\tdataLabel = dataLabel.slice();\n\t\t\t\t\tdataLabel[0] += value;\n\t\t\t\t} else {\n\t\t\t\t\tdataLabel += value;\n\t\t\t\t}\n\n\t\t\t\treturn dataLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\ndefaults._set('pie', helpers.clone(defaults.doughnut));\ndefaults._set('pie', {\n\tcutoutPercentage: 0\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Arc,\n\n\t\tlinkScales: helpers.noop,\n\n\t\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n\t\tgetRingIndex: function(datasetIndex) {\n\t\t\tvar ringIndex = 0;\n\n\t\t\tfor (var j = 0; j < datasetIndex; ++j) {\n\t\t\t\tif (this.chart.isDatasetVisible(j)) {\n\t\t\t\t\t++ringIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ringIndex;\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar arcOpts = opts.elements.arc;\n\t\t\tvar availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth;\n\t\t\tvar availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth;\n\t\t\tvar minSize = Math.min(availableWidth, availableHeight);\n\t\t\tvar offset = {x: 0, y: 0};\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar cutoutPercentage = opts.cutoutPercentage;\n\t\t\tvar circumference = opts.circumference;\n\n\t\t\t// If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc\n\t\t\tif (circumference < Math.PI * 2.0) {\n\t\t\t\tvar startAngle = opts.rotation % (Math.PI * 2.0);\n\t\t\t\tstartAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0);\n\t\t\t\tvar endAngle = startAngle + circumference;\n\t\t\t\tvar start = {x: Math.cos(startAngle), y: Math.sin(startAngle)};\n\t\t\t\tvar end = {x: Math.cos(endAngle), y: Math.sin(endAngle)};\n\t\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle);\n\t\t\t\tvar contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle);\n\t\t\t\tvar contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle);\n\t\t\t\tvar contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle);\n\t\t\t\tvar cutout = cutoutPercentage / 100.0;\n\t\t\t\tvar min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))};\n\t\t\t\tvar max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))};\n\t\t\t\tvar size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5};\n\t\t\t\tminSize = Math.min(availableWidth / size.width, availableHeight / size.height);\n\t\t\t\toffset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5};\n\t\t\t}\n\n\t\t\tchart.borderWidth = me.getMaxBorderWidth(meta.data);\n\t\t\tchart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0);\n\t\t\tchart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0);\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\t\t\tchart.offsetX = offset.x * chart.outerRadius;\n\t\t\tchart.offsetY = offset.y * chart.outerRadius;\n\n\t\t\tmeta.total = me.calculateTotal();\n\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index));\n\t\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0);\n\n\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t});\n\t\t},\n\n\t\tupdateElement: function(arc, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar animationOpts = opts.animation;\n\t\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\n\t\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\n\t\t\tvar startAngle = opts.rotation; // non reset case handled later\n\t\t\tvar endAngle = opts.rotation; // non reset case handled later\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI));\n\t\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\n\t\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\n\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n\t\t\thelpers.extend(arc, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: centerX + chart.offsetX,\n\t\t\t\t\ty: centerY + chart.offsetY,\n\t\t\t\t\tstartAngle: startAngle,\n\t\t\t\t\tendAngle: endAngle,\n\t\t\t\t\tcircumference: circumference,\n\t\t\t\t\touterRadius: outerRadius,\n\t\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\t\tlabel: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar model = arc._model;\n\n\t\t\t// Resets the visual styles\n\t\t\tvar custom = arc.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\n\n\t\t\t// Set correct angles if not resetting\n\t\t\tif (!reset || !animationOpts.animateRotate) {\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tmodel.startAngle = opts.rotation;\n\t\t\t\t} else {\n\t\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n\t\t\t\t}\n\n\t\t\t\tmodel.endAngle = model.startAngle + model.circumference;\n\t\t\t}\n\n\t\t\tarc.pivot();\n\t\t},\n\n\t\tcalculateTotal: function() {\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar total = 0;\n\t\t\tvar value;\n\n\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\tvalue = dataset.data[index];\n\t\t\t\tif (!isNaN(value) && !element.hidden) {\n\t\t\t\t\ttotal += Math.abs(value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t/* if (total === 0) {\n\t\t\t\ttotal = NaN;\n\t\t\t}*/\n\n\t\t\treturn total;\n\t\t},\n\n\t\tcalculateCircumference: function(value) {\n\t\t\tvar total = this.getMeta().total;\n\t\t\tif (total > 0 && !isNaN(value)) {\n\t\t\t\treturn (Math.PI * 2.0) * (Math.abs(value) / total);\n\t\t\t}\n\t\t\treturn 0;\n\t\t},\n\n\t\t// gets the max border or hover width to properly scale pie charts\n\t\tgetMaxBorderWidth: function(arcs) {\n\t\t\tvar max = 0;\n\t\t\tvar index = this.index;\n\t\t\tvar length = arcs.length;\n\t\t\tvar borderWidth;\n\t\t\tvar hoverWidth;\n\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tborderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0;\n\t\t\t\thoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0;\n\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\n\t\t\t}\n\t\t\treturn max;\n\t\t}\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],18:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('line', {\n\tshowLines: true,\n\tspanGaps: false,\n\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\t\t\tid: 'x-axis-0'\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tfunction lineEnabled(dataset, options) {\n\t\treturn helpers.valueOrDefault(dataset.showLine, options.showLines);\n\t}\n\n\tChart.controllers.line = Chart.DatasetController.extend({\n\n\t\tdatasetElementType: elements.Line,\n\n\t\tdataElementType: elements.Point,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar line = meta.dataset;\n\t\t\tvar points = meta.data || [];\n\t\t\tvar options = me.chart.options;\n\t\t\tvar lineElementOptions = options.elements.line;\n\t\t\tvar scale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar i, ilen, custom;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar showLine = lineEnabled(dataset, options);\n\n\t\t\t// Update Line\n\t\t\tif (showLine) {\n\t\t\t\tcustom = line.custom || {};\n\n\t\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t\t}\n\n\t\t\t\t// Utility\n\t\t\t\tline._scale = scale;\n\t\t\t\tline._datasetIndex = me.index;\n\t\t\t\t// Data\n\t\t\t\tline._children = points;\n\t\t\t\t// Model\n\t\t\t\tline._model = {\n\t\t\t\t\t// Appearance\n\t\t\t\t\t// The default behavior of lines is to break at null values, according\n\t\t\t\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n\t\t\t\t\t// This option gives lines the ability to span gaps\n\t\t\t\t\tspanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps,\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\tsteppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped),\n\t\t\t\t\tcubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode),\n\t\t\t\t};\n\n\t\t\t\tline.pivot();\n\t\t\t}\n\n\t\t\t// Update Points\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tme.updateElement(points[i], i, reset);\n\t\t\t}\n\n\t\t\tif (showLine && line._model.tension !== 0) {\n\t\t\t\tme.updateBezierControlPoints();\n\t\t\t}\n\n\t\t\t// Now pivot the point for animation\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tpoints[i].pivot();\n\t\t\t}\n\t\t},\n\n\t\tgetPointBackgroundColor: function(point, index) {\n\t\t\tvar backgroundColor = this.chart.options.elements.point.backgroundColor;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.backgroundColor) {\n\t\t\t\tbackgroundColor = custom.backgroundColor;\n\t\t\t} else if (dataset.pointBackgroundColor) {\n\t\t\t\tbackgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor);\n\t\t\t} else if (dataset.backgroundColor) {\n\t\t\t\tbackgroundColor = dataset.backgroundColor;\n\t\t\t}\n\n\t\t\treturn backgroundColor;\n\t\t},\n\n\t\tgetPointBorderColor: function(point, index) {\n\t\t\tvar borderColor = this.chart.options.elements.point.borderColor;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.borderColor) {\n\t\t\t\tborderColor = custom.borderColor;\n\t\t\t} else if (dataset.pointBorderColor) {\n\t\t\t\tborderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor);\n\t\t\t} else if (dataset.borderColor) {\n\t\t\t\tborderColor = dataset.borderColor;\n\t\t\t}\n\n\t\t\treturn borderColor;\n\t\t},\n\n\t\tgetPointBorderWidth: function(point, index) {\n\t\t\tvar borderWidth = this.chart.options.elements.point.borderWidth;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (!isNaN(custom.borderWidth)) {\n\t\t\t\tborderWidth = custom.borderWidth;\n\t\t\t} else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) {\n\t\t\t\tborderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth);\n\t\t\t} else if (!isNaN(dataset.borderWidth)) {\n\t\t\t\tborderWidth = dataset.borderWidth;\n\t\t\t}\n\n\t\t\treturn borderWidth;\n\t\t},\n\n\t\tgetPointRotation: function(point, index) {\n\t\t\tvar pointRotation = this.chart.options.elements.point.rotation;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (!isNaN(custom.rotation)) {\n\t\t\t\tpointRotation = custom.rotation;\n\t\t\t} else if (!isNaN(dataset.pointRotation) || helpers.isArray(dataset.pointRotation)) {\n\t\t\t\tpointRotation = helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointRotation);\n\t\t\t}\n\t\t\treturn pointRotation;\n\t\t},\n\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar datasetIndex = me.index;\n\t\t\tvar value = dataset.data[index];\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar pointOptions = me.chart.options.elements.point;\n\t\t\tvar x, y;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\n\t\t\t}\n\n\t\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\n\t\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\n\n\t\t\t// Utility\n\t\t\tpoint._xScale = xScale;\n\t\t\tpoint._yScale = yScale;\n\t\t\tpoint._datasetIndex = datasetIndex;\n\t\t\tpoint._index = index;\n\n\t\t\t// Desired view properties\n\t\t\tpoint._model = {\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t\t// Appearance\n\t\t\t\tradius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius),\n\t\t\t\tpointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle),\n\t\t\t\trotation: me.getPointRotation(point, index),\n\t\t\t\tbackgroundColor: me.getPointBackgroundColor(point, index),\n\t\t\t\tborderColor: me.getPointBorderColor(point, index),\n\t\t\t\tborderWidth: me.getPointBorderWidth(point, index),\n\t\t\t\ttension: meta.dataset._model ? meta.dataset._model.tension : 0,\n\t\t\t\tsteppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false,\n\t\t\t\t// Tooltip\n\t\t\t\thitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius)\n\t\t\t};\n\t\t},\n\n\t\tcalculatePointY: function(value, index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar sumPos = 0;\n\t\t\tvar sumNeg = 0;\n\t\t\tvar i, ds, dsMeta;\n\n\t\t\tif (yScale.options.stacked) {\n\t\t\t\tfor (i = 0; i < datasetIndex; i++) {\n\t\t\t\t\tds = chart.data.datasets[i];\n\t\t\t\t\tdsMeta = chart.getDatasetMeta(i);\n\t\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) {\n\t\t\t\t\t\tvar stackedRightValue = Number(yScale.getRightValue(ds.data[index]));\n\t\t\t\t\t\tif (stackedRightValue < 0) {\n\t\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsumPos += stackedRightValue || 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar rightValue = Number(yScale.getRightValue(value));\n\t\t\t\tif (rightValue < 0) {\n\t\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\n\t\t\t\t}\n\t\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\n\t\t\t}\n\n\t\t\treturn yScale.getPixelForValue(value);\n\t\t},\n\n\t\tupdateBezierControlPoints: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar area = me.chart.chartArea;\n\t\t\tvar points = (meta.data || []);\n\t\t\tvar i, ilen, point, model, controlPoints;\n\n\t\t\t// Only consider points that are drawn in case the spanGaps option is used\n\t\t\tif (meta.dataset._model.spanGaps) {\n\t\t\t\tpoints = points.filter(function(pt) {\n\t\t\t\t\treturn !pt._model.skip;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction capControlPoint(pt, min, max) {\n\t\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t\t}\n\n\t\t\tif (meta.dataset._model.cubicInterpolationMode === 'monotone') {\n\t\t\t\thelpers.splineCurveMonotone(points);\n\t\t\t} else {\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\t\tpoint = points[i];\n\t\t\t\t\tmodel = point._model;\n\t\t\t\t\tcontrolPoints = helpers.splineCurve(\n\t\t\t\t\t\thelpers.previousItem(points, i)._model,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\thelpers.nextItem(points, i)._model,\n\t\t\t\t\t\tmeta.dataset._model.tension\n\t\t\t\t\t);\n\t\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\n\t\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\n\t\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\n\t\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.chart.options.elements.line.capBezierPoints) {\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\t\tmodel = points[i]._model;\n\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar points = meta.data || [];\n\t\t\tvar area = chart.chartArea;\n\t\t\tvar ilen = points.length;\n\t\t\tvar halfBorderWidth;\n\t\t\tvar i = 0;\n\n\t\t\tif (lineEnabled(me.getDataset(), chart.options)) {\n\t\t\t\thalfBorderWidth = (meta.dataset._model.borderWidth || 0) / 2;\n\n\t\t\t\thelpers.canvas.clipArea(chart.ctx, {\n\t\t\t\t\tleft: area.left,\n\t\t\t\t\tright: area.right,\n\t\t\t\t\ttop: area.top - halfBorderWidth,\n\t\t\t\t\tbottom: area.bottom + halfBorderWidth\n\t\t\t\t});\n\n\t\t\t\tmeta.dataset.draw();\n\n\t\t\t\thelpers.canvas.unclipArea(chart.ctx);\n\t\t\t}\n\n\t\t\t// Draw the points\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\tpoints[i].draw(area);\n\t\t\t}\n\t\t},\n\n\t\tsetHoverStyle: function(element) {\n\t\t\t// Point\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\t\tvar index = element._index;\n\t\t\tvar custom = element.custom || {};\n\t\t\tvar model = element._model;\n\n\t\t\telement.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t\tmodel.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t},\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],19:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('polarArea', {\n\tscale: {\n\t\ttype: 'radialLinear',\n\t\tangleLines: {\n\t\t\tdisplay: false\n\t\t},\n\t\tgridLines: {\n\t\t\tcircular: true\n\t\t},\n\t\tpointLabels: {\n\t\t\tdisplay: false\n\t\t},\n\t\tticks: {\n\t\t\tbeginAtZero: true\n\t\t}\n\t},\n\n\t// Boolean - Whether to animate the rotation of the chart\n\tanimation: {\n\t\tanimateRotate: true,\n\t\tanimateScale: true\n\t},\n\n\tstartAngle: -0.5 * Math.PI,\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('<ul class=\"' + chart.id + '-legend\">');\n\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\n\t\tif (datasets.length) {\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\ttext.push('<li><span style=\"background-color:' + datasets[0].backgroundColor[i] + '\"></span>');\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t}\n\t\t\t\ttext.push('</li>');\n\t\t\t}\n\t\t}\n\n\t\ttext.push('</ul>');\n\t\treturn text.join('');\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\tvar custom = arc.custom || {};\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.polarArea = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Arc,\n\n\t\tlinkScales: helpers.noop,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar start = me.chart.options.startAngle || 0;\n\t\t\tvar starts = me._starts = [];\n\t\t\tvar angles = me._angles = [];\n\t\t\tvar i, ilen, angle;\n\n\t\t\tme._updateRadius();\n\n\t\t\tmeta.count = me.countVisibleElements();\n\n\t\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\n\t\t\t\tstarts[i] = start;\n\t\t\t\tangle = me._computeAngle(i);\n\t\t\t\tangles[i] = angle;\n\t\t\t\tstart += angle;\n\t\t\t}\n\n\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_updateRadius: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar arcOpts = opts.elements.arc;\n\t\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n\t\t\tchart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0);\n\t\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\n\t\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\n\t\t},\n\n\t\tupdateElement: function(arc, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar opts = chart.options;\n\t\t\tvar animationOpts = opts.animation;\n\t\t\tvar scale = chart.scale;\n\t\t\tvar labels = chart.data.labels;\n\n\t\t\tvar centerX = scale.xCenter;\n\t\t\tvar centerY = scale.yCenter;\n\n\t\t\t// var negHalfPI = -0.5 * Math.PI;\n\t\t\tvar datasetStartAngle = opts.startAngle;\n\t\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\t\tvar startAngle = me._starts[index];\n\t\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\n\n\t\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\n\t\t\thelpers.extend(arc, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\t\t\t\t_scale: scale,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: centerX,\n\t\t\t\t\ty: centerY,\n\t\t\t\t\tinnerRadius: 0,\n\t\t\t\t\touterRadius: reset ? resetRadius : distance,\n\t\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n\t\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n\t\t\t\t\tlabel: helpers.valueAtIndexOrDefault(labels, index, labels[index])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Apply border and fill style\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\n\t\t\tvar custom = arc.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar model = arc._model;\n\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\n\n\t\t\tarc.pivot();\n\t\t},\n\n\t\tcountVisibleElements: function() {\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar count = 0;\n\n\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn count;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_computeAngle: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar count = this.getMeta().count;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar meta = me.getMeta();\n\n\t\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\t// Scriptable options\n\t\t\tvar context = {\n\t\t\t\tchart: me.chart,\n\t\t\t\tdataIndex: index,\n\t\t\t\tdataset: dataset,\n\t\t\t\tdatasetIndex: me.index\n\t\t\t};\n\n\t\t\treturn helpers.options.resolve([\n\t\t\t\tme.chart.options.elements.arc.angle,\n\t\t\t\t(2 * Math.PI) / count\n\t\t\t], context, index);\n\t\t}\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],20:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('radar', {\n\tscale: {\n\t\ttype: 'radialLinear'\n\t},\n\telements: {\n\t\tline: {\n\t\t\ttension: 0 // no bezier in radar\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.radar = Chart.DatasetController.extend({\n\n\t\tdatasetElementType: elements.Line,\n\n\t\tdataElementType: elements.Point,\n\n\t\tlinkScales: helpers.noop,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar line = meta.dataset;\n\t\t\tvar points = meta.data;\n\t\t\tvar custom = line.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar lineElementOptions = me.chart.options.elements.line;\n\t\t\tvar scale = me.chart.scale;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t}\n\n\t\t\thelpers.extend(meta.dataset, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_scale: scale,\n\t\t\t\t// Data\n\t\t\t\t_children: points,\n\t\t\t\t_loop: true,\n\t\t\t\t// Model\n\t\t\t\t_model: {\n\t\t\t\t\t// Appearance\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmeta.dataset.pivot();\n\n\t\t\t// Update Points\n\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t}, me);\n\n\t\t\t// Update bezier control points\n\t\t\tme.updateBezierControlPoints();\n\t\t},\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar scale = me.chart.scale;\n\t\t\tvar pointElementOptions = me.chart.options.elements.point;\n\t\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\n\t\t\t}\n\n\t\t\thelpers.extend(point, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\t\t\t\t_scale: scale,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales\n\t\t\t\t\ty: reset ? scale.yCenter : pointPosition.y,\n\n\t\t\t\t\t// Appearance\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension),\n\t\t\t\t\tradius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth),\n\t\t\t\t\tpointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle),\n\t\t\t\t\trotation: custom.rotation ? custom.rotation : helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointElementOptions.rotation),\n\n\t\t\t\t\t// Tooltip\n\t\t\t\t\thitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius)\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tpoint._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y));\n\t\t},\n\t\tupdateBezierControlPoints: function() {\n\t\t\tvar chartArea = this.chart.chartArea;\n\t\t\tvar meta = this.getMeta();\n\n\t\t\thelpers.each(meta.data, function(point, index) {\n\t\t\t\tvar model = point._model;\n\t\t\t\tvar controlPoints = helpers.splineCurve(\n\t\t\t\t\thelpers.previousItem(meta.data, index, true)._model,\n\t\t\t\t\tmodel,\n\t\t\t\t\thelpers.nextItem(meta.data, index, true)._model,\n\t\t\t\t\tmodel.tension\n\t\t\t\t);\n\n\t\t\t\t// Prevent the bezier going outside of the bounds of the graph\n\t\t\t\tmodel.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left);\n\t\t\t\tmodel.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top);\n\n\t\t\t\tmodel.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left);\n\t\t\t\tmodel.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top);\n\n\t\t\t\t// Now pivot the point for animation\n\t\t\t\tpoint.pivot();\n\t\t\t});\n\t\t},\n\n\t\tsetHoverStyle: function(point) {\n\t\t\t// Point\n\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar index = point._index;\n\t\t\tvar model = point._model;\n\n\t\t\tpoint.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\n\t\t\tmodel.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t},\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],21:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\n\ndefaults._set('scatter', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\tid: 'x-axis-1',    // need an ID so datasets can reference the scale\n\t\t\ttype: 'linear',    // scatter should not use a category axis\n\t\t\tposition: 'bottom'\n\t\t}],\n\t\tyAxes: [{\n\t\t\tid: 'y-axis-1',\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left'\n\t\t}]\n\t},\n\n\tshowLines: false,\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';     // doesn't make sense for scatter since data are formatted as a point\n\t\t\t},\n\t\t\tlabel: function(item) {\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\t// Scatter charts use line controllers\n\tChart.controllers.scatter = Chart.controllers.line;\n\n};\n\n},{\"26\":26}],22:[function(require,module,exports){\n'use strict';\n\nvar Element = require(27);\n\nvar exports = module.exports = Element.extend({\n\tchart: null, // the animation associated chart instance\n\tcurrentStep: 0, // the current animation step\n\tnumSteps: 60, // default number of steps\n\teasing: '', // the easing to use for this animation\n\trender: null, // render function used by the animation service\n\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\n});\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.Animation instead\n * @prop Chart.Animation#animationObject\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports.prototype, 'animationObject', {\n\tget: function() {\n\t\treturn this;\n\t}\n});\n\n/**\n * Provided for backward compatibility, use Chart.Animation#chart instead\n * @prop Chart.Animation#chartInstance\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports.prototype, 'chartInstance', {\n\tget: function() {\n\t\treturn this.chart;\n\t},\n\tset: function(value) {\n\t\tthis.chart = value;\n\t}\n});\n\n},{\"27\":27}],23:[function(require,module,exports){\n/* global window: false */\n'use strict';\n\nvar defaults = require(26);\nvar helpers = require(46);\n\ndefaults._set('global', {\n\tanimation: {\n\t\tduration: 1000,\n\t\teasing: 'easeOutQuart',\n\t\tonProgress: helpers.noop,\n\t\tonComplete: helpers.noop\n\t}\n});\n\nmodule.exports = {\n\tframeDuration: 17,\n\tanimations: [],\n\tdropFrames: 0,\n\trequest: null,\n\n\t/**\n\t * @param {Chart} chart - The chart to animate.\n\t * @param {Chart.Animation} animation - The animation that we will animate.\n\t * @param {Number} duration - The animation duration in ms.\n\t * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\n\t */\n\taddAnimation: function(chart, animation, duration, lazy) {\n\t\tvar animations = this.animations;\n\t\tvar i, ilen;\n\n\t\tanimation.chart = chart;\n\n\t\tif (!lazy) {\n\t\t\tchart.animating = true;\n\t\t}\n\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\n\t\t\tif (animations[i].chart === chart) {\n\t\t\t\tanimations[i] = animation;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tanimations.push(animation);\n\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\n\t\tif (animations.length === 1) {\n\t\t\tthis.requestAnimationFrame();\n\t\t}\n\t},\n\n\tcancelAnimation: function(chart) {\n\t\tvar index = helpers.findIndex(this.animations, function(animation) {\n\t\t\treturn animation.chart === chart;\n\t\t});\n\n\t\tif (index !== -1) {\n\t\t\tthis.animations.splice(index, 1);\n\t\t\tchart.animating = false;\n\t\t}\n\t},\n\n\trequestAnimationFrame: function() {\n\t\tvar me = this;\n\t\tif (me.request === null) {\n\t\t\t// Skip animation frame requests until the active one is executed.\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\n\t\t\t// and 'mouseout' events will trigger multiple renders.\n\t\t\tme.request = helpers.requestAnimFrame.call(window, function() {\n\t\t\t\tme.request = null;\n\t\t\t\tme.startDigest();\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tstartDigest: function() {\n\t\tvar me = this;\n\t\tvar startTime = Date.now();\n\t\tvar framesToDrop = 0;\n\n\t\tif (me.dropFrames > 1) {\n\t\t\tframesToDrop = Math.floor(me.dropFrames);\n\t\t\tme.dropFrames = me.dropFrames % 1;\n\t\t}\n\n\t\tme.advance(1 + framesToDrop);\n\n\t\tvar endTime = Date.now();\n\n\t\tme.dropFrames += (endTime - startTime) / me.frameDuration;\n\n\t\t// Do we have more stuff to animate?\n\t\tif (me.animations.length > 0) {\n\t\t\tme.requestAnimationFrame();\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tadvance: function(count) {\n\t\tvar animations = this.animations;\n\t\tvar animation, chart;\n\t\tvar i = 0;\n\n\t\twhile (i < animations.length) {\n\t\t\tanimation = animations[i];\n\t\t\tchart = animation.chart;\n\n\t\t\tanimation.currentStep = (animation.currentStep || 0) + count;\n\t\t\tanimation.currentStep = Math.min(animation.currentStep, animation.numSteps);\n\n\t\t\thelpers.callback(animation.render, [chart, animation], chart);\n\t\t\thelpers.callback(animation.onAnimationProgress, [animation], chart);\n\n\t\t\tif (animation.currentStep >= animation.numSteps) {\n\t\t\t\thelpers.callback(animation.onAnimationComplete, [animation], chart);\n\t\t\t\tchart.animating = false;\n\t\t\t\tanimations.splice(i, 1);\n\t\t\t} else {\n\t\t\t\t++i;\n\t\t\t}\n\t\t}\n\t}\n};\n\n},{\"26\":26,\"46\":46}],24:[function(require,module,exports){\n'use strict';\n\nvar Animation = require(22);\nvar animations = require(23);\nvar defaults = require(26);\nvar helpers = require(46);\nvar Interaction = require(29);\nvar layouts = require(31);\nvar platform = require(49);\nvar plugins = require(32);\nvar scaleService = require(34);\nvar Tooltip = require(36);\n\nmodule.exports = function(Chart) {\n\n\t// Create a dictionary of chart types, to allow for extension of existing types\n\tChart.types = {};\n\n\t// Store a reference to each instance - allowing us to globally resize chart instances on window resize.\n\t// Destroy method on the chart will remove the instance of the chart from this reference.\n\tChart.instances = {};\n\n\t// Controllers available for dataset visualization eg. bar, line, slice, etc.\n\tChart.controllers = {};\n\n\t/**\n\t * Initializes the given config with global and chart default values.\n\t */\n\tfunction initConfig(config) {\n\t\tconfig = config || {};\n\n\t\t// Do NOT use configMerge() for the data object because this method merges arrays\n\t\t// and so would change references to labels and datasets, preventing data updates.\n\t\tvar data = config.data = config.data || {};\n\t\tdata.datasets = data.datasets || [];\n\t\tdata.labels = data.labels || [];\n\n\t\tconfig.options = helpers.configMerge(\n\t\t\tdefaults.global,\n\t\t\tdefaults[config.type],\n\t\t\tconfig.options || {});\n\n\t\treturn config;\n\t}\n\n\t/**\n\t * Updates the config of the chart\n\t * @param chart {Chart} chart to update the options for\n\t */\n\tfunction updateConfig(chart) {\n\t\tvar newOptions = chart.options;\n\n\t\thelpers.each(chart.scales, function(scale) {\n\t\t\tlayouts.removeBox(chart, scale);\n\t\t});\n\n\t\tnewOptions = helpers.configMerge(\n\t\t\tChart.defaults.global,\n\t\t\tChart.defaults[chart.config.type],\n\t\t\tnewOptions);\n\n\t\tchart.options = chart.config.options = newOptions;\n\t\tchart.ensureScalesHaveIDs();\n\t\tchart.buildOrUpdateScales();\n\t\t// Tooltip\n\t\tchart.tooltip._options = newOptions.tooltips;\n\t\tchart.tooltip.initialize();\n\t}\n\n\tfunction positionIsHorizontal(position) {\n\t\treturn position === 'top' || position === 'bottom';\n\t}\n\n\thelpers.extend(Chart.prototype, /** @lends Chart */ {\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tconstruct: function(item, config) {\n\t\t\tvar me = this;\n\n\t\t\tconfig = initConfig(config);\n\n\t\t\tvar context = platform.acquireContext(item, config);\n\t\t\tvar canvas = context && context.canvas;\n\t\t\tvar height = canvas && canvas.height;\n\t\t\tvar width = canvas && canvas.width;\n\n\t\t\tme.id = helpers.uid();\n\t\t\tme.ctx = context;\n\t\t\tme.canvas = canvas;\n\t\t\tme.config = config;\n\t\t\tme.width = width;\n\t\t\tme.height = height;\n\t\t\tme.aspectRatio = height ? width / height : null;\n\t\t\tme.options = config.options;\n\t\t\tme._bufferedRender = false;\n\n\t\t\t/**\n\t\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\n\t\t\t * the \"instance\" still need to be defined since it might be called from plugins.\n\t\t\t * @prop Chart#chart\n\t\t\t * @deprecated since version 2.6.0\n\t\t\t * @todo remove at version 3\n\t\t\t * @private\n\t\t\t */\n\t\t\tme.chart = me;\n\t\t\tme.controller = me; // chart.chart.controller #inception\n\n\t\t\t// Add the chart instance to the global namespace\n\t\t\tChart.instances[me.id] = me;\n\n\t\t\t// Define alias to the config data: `chart.data === chart.config.data`\n\t\t\tObject.defineProperty(me, 'data', {\n\t\t\t\tget: function() {\n\t\t\t\t\treturn me.config.data;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\tme.config.data = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!context || !canvas) {\n\t\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\n\t\t\t\t// the chart initialization but after setting basic chart / controller properties that\n\t\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n\t\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tme.initialize();\n\t\t\tme.update();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinitialize: function() {\n\t\t\tvar me = this;\n\n\t\t\t// Before init plugin notification\n\t\t\tplugins.notify(me, 'beforeInit');\n\n\t\t\thelpers.retinaScale(me, me.options.devicePixelRatio);\n\n\t\t\tme.bindEvents();\n\n\t\t\tif (me.options.responsive) {\n\t\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\n\t\t\t\tme.resize(true);\n\t\t\t}\n\n\t\t\t// Make sure scales have IDs and are built before we build any controllers.\n\t\t\tme.ensureScalesHaveIDs();\n\t\t\tme.buildOrUpdateScales();\n\t\t\tme.initToolTip();\n\n\t\t\t// After init plugin notification\n\t\t\tplugins.notify(me, 'afterInit');\n\n\t\t\treturn me;\n\t\t},\n\n\t\tclear: function() {\n\t\t\thelpers.canvas.clear(this);\n\t\t\treturn this;\n\t\t},\n\n\t\tstop: function() {\n\t\t\t// Stops any current animation loop occurring\n\t\t\tanimations.cancelAnimation(this);\n\t\t\treturn this;\n\t\t},\n\n\t\tresize: function(silent) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar canvas = me.canvas;\n\t\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\n\n\t\t\t// the canvas render width and height will be casted to integers so make sure that\n\t\t\t// the canvas display style uses the same integer values to avoid blurring effect.\n\n\t\t\t// Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\n\t\t\tvar newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas)));\n\t\t\tvar newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas)));\n\n\t\t\tif (me.width === newWidth && me.height === newHeight) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcanvas.width = me.width = newWidth;\n\t\t\tcanvas.height = me.height = newHeight;\n\t\t\tcanvas.style.width = newWidth + 'px';\n\t\t\tcanvas.style.height = newHeight + 'px';\n\n\t\t\thelpers.retinaScale(me, options.devicePixelRatio);\n\n\t\t\tif (!silent) {\n\t\t\t\t// Notify any plugins about the resize\n\t\t\t\tvar newSize = {width: newWidth, height: newHeight};\n\t\t\t\tplugins.notify(me, 'resize', [newSize]);\n\n\t\t\t\t// Notify of resize\n\t\t\t\tif (me.options.onResize) {\n\t\t\t\t\tme.options.onResize(me, newSize);\n\t\t\t\t}\n\n\t\t\t\tme.stop();\n\t\t\t\tme.update({\n\t\t\t\t\tduration: me.options.responsiveAnimationDuration\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tensureScalesHaveIDs: function() {\n\t\t\tvar options = this.options;\n\t\t\tvar scalesOptions = options.scales || {};\n\t\t\tvar scaleOptions = options.scale;\n\n\t\t\thelpers.each(scalesOptions.xAxes, function(xAxisOptions, index) {\n\t\t\t\txAxisOptions.id = xAxisOptions.id || ('x-axis-' + index);\n\t\t\t});\n\n\t\t\thelpers.each(scalesOptions.yAxes, function(yAxisOptions, index) {\n\t\t\t\tyAxisOptions.id = yAxisOptions.id || ('y-axis-' + index);\n\t\t\t});\n\n\t\t\tif (scaleOptions) {\n\t\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Builds a map of scale ID to scale object for future lookup.\n\t\t */\n\t\tbuildOrUpdateScales: function() {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar scales = me.scales || {};\n\t\t\tvar items = [];\n\t\t\tvar updated = Object.keys(scales).reduce(function(obj, id) {\n\t\t\t\tobj[id] = false;\n\t\t\t\treturn obj;\n\t\t\t}, {});\n\n\t\t\tif (options.scales) {\n\t\t\t\titems = items.concat(\n\t\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\n\t\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\n\t\t\t\t\t}),\n\t\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\n\t\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (options.scale) {\n\t\t\t\titems.push({\n\t\t\t\t\toptions: options.scale,\n\t\t\t\t\tdtype: 'radialLinear',\n\t\t\t\t\tisDefault: true,\n\t\t\t\t\tdposition: 'chartArea'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thelpers.each(items, function(item) {\n\t\t\t\tvar scaleOptions = item.options;\n\t\t\t\tvar id = scaleOptions.id;\n\t\t\t\tvar scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype);\n\n\t\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\n\t\t\t\t\tscaleOptions.position = item.dposition;\n\t\t\t\t}\n\n\t\t\t\tupdated[id] = true;\n\t\t\t\tvar scale = null;\n\t\t\t\tif (id in scales && scales[id].type === scaleType) {\n\t\t\t\t\tscale = scales[id];\n\t\t\t\t\tscale.options = scaleOptions;\n\t\t\t\t\tscale.ctx = me.ctx;\n\t\t\t\t\tscale.chart = me;\n\t\t\t\t} else {\n\t\t\t\t\tvar scaleClass = scaleService.getScaleConstructor(scaleType);\n\t\t\t\t\tif (!scaleClass) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tscale = new scaleClass({\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\ttype: scaleType,\n\t\t\t\t\t\toptions: scaleOptions,\n\t\t\t\t\t\tctx: me.ctx,\n\t\t\t\t\t\tchart: me\n\t\t\t\t\t});\n\t\t\t\t\tscales[scale.id] = scale;\n\t\t\t\t}\n\n\t\t\t\tscale.mergeTicksOptions();\n\n\t\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\n\t\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\n\t\t\t\t// make the logic easier and remove some useless? custom code.\n\t\t\t\tif (item.isDefault) {\n\t\t\t\t\tme.scale = scale;\n\t\t\t\t}\n\t\t\t});\n\t\t\t// clear up discarded scales\n\t\t\thelpers.each(updated, function(hasUpdated, id) {\n\t\t\t\tif (!hasUpdated) {\n\t\t\t\t\tdelete scales[id];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tme.scales = scales;\n\n\t\t\tscaleService.addScalesToLayout(this);\n\t\t},\n\n\t\tbuildOrUpdateControllers: function() {\n\t\t\tvar me = this;\n\t\t\tvar types = [];\n\t\t\tvar newControllers = [];\n\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\n\t\t\t\tvar type = dataset.type || me.config.type;\n\n\t\t\t\tif (meta.type && meta.type !== type) {\n\t\t\t\t\tme.destroyDatasetMeta(datasetIndex);\n\t\t\t\t\tmeta = me.getDatasetMeta(datasetIndex);\n\t\t\t\t}\n\t\t\t\tmeta.type = type;\n\n\t\t\t\ttypes.push(meta.type);\n\n\t\t\t\tif (meta.controller) {\n\t\t\t\t\tmeta.controller.updateIndex(datasetIndex);\n\t\t\t\t\tmeta.controller.linkScales();\n\t\t\t\t} else {\n\t\t\t\t\tvar ControllerClass = Chart.controllers[meta.type];\n\t\t\t\t\tif (ControllerClass === undefined) {\n\t\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\n\t\t\t\t\t}\n\n\t\t\t\t\tmeta.controller = new ControllerClass(me, datasetIndex);\n\t\t\t\t\tnewControllers.push(meta.controller);\n\t\t\t\t}\n\t\t\t}, me);\n\n\t\t\treturn newControllers;\n\t\t},\n\n\t\t/**\n\t\t * Reset the elements of all datasets\n\t\t * @private\n\t\t */\n\t\tresetElements: function() {\n\t\t\tvar me = this;\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\n\t\t\t}, me);\n\t\t},\n\n\t\t/**\n\t\t* Resets the chart back to it's state before the initial animation\n\t\t*/\n\t\treset: function() {\n\t\t\tthis.resetElements();\n\t\t\tthis.tooltip.initialize();\n\t\t},\n\n\t\tupdate: function(config) {\n\t\t\tvar me = this;\n\n\t\t\tif (!config || typeof config !== 'object') {\n\t\t\t\t// backwards compatibility\n\t\t\t\tconfig = {\n\t\t\t\t\tduration: config,\n\t\t\t\t\tlazy: arguments[1]\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tupdateConfig(me);\n\n\t\t\t// plugins options references might have change, let's invalidate the cache\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\t\t\tplugins._invalidate(me);\n\n\t\t\tif (plugins.notify(me, 'beforeUpdate') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// In case the entire data object changed\n\t\t\tme.tooltip._data = me.data;\n\n\t\t\t// Make sure dataset controllers are updated and new controllers are reset\n\t\t\tvar newControllers = me.buildOrUpdateControllers();\n\n\t\t\t// Make sure all dataset controllers have correct meta data counts\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();\n\t\t\t}, me);\n\n\t\t\tme.updateLayout();\n\n\t\t\t// Can only reset the new controllers after the scales have been updated\n\t\t\tif (me.options.animation && me.options.animation.duration) {\n\t\t\t\thelpers.each(newControllers, function(controller) {\n\t\t\t\t\tcontroller.reset();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme.updateDatasets();\n\n\t\t\t// Need to reset tooltip in case it is displayed with elements that are removed\n\t\t\t// after update.\n\t\t\tme.tooltip.initialize();\n\n\t\t\t// Last active contains items that were previously in the tooltip.\n\t\t\t// When we reset the tooltip, we need to clear it\n\t\t\tme.lastActive = [];\n\n\t\t\t// Do this before render so that any plugins that need final scale updates can use it\n\t\t\tplugins.notify(me, 'afterUpdate');\n\n\t\t\tif (me._bufferedRender) {\n\t\t\t\tme._bufferedRequest = {\n\t\t\t\t\tduration: config.duration,\n\t\t\t\t\teasing: config.easing,\n\t\t\t\t\tlazy: config.lazy\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tme.render(config);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t\t * @private\n\t\t */\n\t\tupdateLayout: function() {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeLayout') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlayouts.update(this, this.width, this.height);\n\n\t\t\t/**\n\t\t\t * Provided for backward compatibility, use `afterLayout` instead.\n\t\t\t * @method IPlugin#afterScaleUpdate\n\t\t\t * @deprecated since version 2.5.0\n\t\t\t * @todo remove at version 3\n\t\t\t * @private\n\t\t\t */\n\t\t\tplugins.notify(me, 'afterScaleUpdate');\n\t\t\tplugins.notify(me, 'afterLayout');\n\t\t},\n\n\t\t/**\n\t\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t\t * @private\n\t\t */\n\t\tupdateDatasets: function() {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetsUpdate') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tme.updateDataset(i);\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterDatasetsUpdate');\n\t\t},\n\n\t\t/**\n\t\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t\t * @private\n\t\t */\n\t\tupdateDataset: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getDatasetMeta(index);\n\t\t\tvar args = {\n\t\t\t\tmeta: meta,\n\t\t\t\tindex: index\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmeta.controller.update();\n\n\t\t\tplugins.notify(me, 'afterDatasetUpdate', [args]);\n\t\t},\n\n\t\trender: function(config) {\n\t\t\tvar me = this;\n\n\t\t\tif (!config || typeof config !== 'object') {\n\t\t\t\t// backwards compatibility\n\t\t\t\tconfig = {\n\t\t\t\t\tduration: config,\n\t\t\t\t\tlazy: arguments[1]\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar duration = config.duration;\n\t\t\tvar lazy = config.lazy;\n\n\t\t\tif (plugins.notify(me, 'beforeRender') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar animationOptions = me.options.animation;\n\t\t\tvar onComplete = function(animation) {\n\t\t\t\tplugins.notify(me, 'afterRender');\n\t\t\t\thelpers.callback(animationOptions && animationOptions.onComplete, [animation], me);\n\t\t\t};\n\n\t\t\tif (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) {\n\t\t\t\tvar animation = new Animation({\n\t\t\t\t\tnumSteps: (duration || animationOptions.duration) / 16.66, // 60 fps\n\t\t\t\t\teasing: config.easing || animationOptions.easing,\n\n\t\t\t\t\trender: function(chart, animationObject) {\n\t\t\t\t\t\tvar easingFunction = helpers.easing.effects[animationObject.easing];\n\t\t\t\t\t\tvar currentStep = animationObject.currentStep;\n\t\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\n\n\t\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\n\t\t\t\t\t},\n\n\t\t\t\t\tonAnimationProgress: animationOptions.onProgress,\n\t\t\t\t\tonAnimationComplete: onComplete\n\t\t\t\t});\n\n\t\t\t\tanimations.addAnimation(me, animation, duration, lazy);\n\t\t\t} else {\n\t\t\t\tme.draw();\n\n\t\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\n\t\t\t\tonComplete(new Animation({numSteps: 0, chart: me}));\n\t\t\t}\n\n\t\t\treturn me;\n\t\t},\n\n\t\tdraw: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tme.clear();\n\n\t\t\tif (helpers.isNullOrUndef(easingValue)) {\n\t\t\t\teasingValue = 1;\n\t\t\t}\n\n\t\t\tme.transition(easingValue);\n\n\t\t\tif (me.width <= 0 || me.height <= 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Draw all the scales\n\t\t\thelpers.each(me.boxes, function(box) {\n\t\t\t\tbox.draw(me.chartArea);\n\t\t\t}, me);\n\n\t\t\tif (me.scale) {\n\t\t\t\tme.scale.draw();\n\t\t\t}\n\n\t\t\tme.drawDatasets(easingValue);\n\t\t\tme._drawTooltip(easingValue);\n\n\t\t\tplugins.notify(me, 'afterDraw', [easingValue]);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\ttransition: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tfor (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.tooltip.transition(easingValue);\n\t\t},\n\n\t\t/**\n\t\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t\t * @private\n\t\t */\n\t\tdrawDatasets: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Draw datasets reversed to support proper line stacking\n\t\t\tfor (var i = (me.data.datasets || []).length - 1; i >= 0; --i) {\n\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\tme.drawDataset(i, easingValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterDatasetsDraw', [easingValue]);\n\t\t},\n\n\t\t/**\n\t\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t\t * @private\n\t\t */\n\t\tdrawDataset: function(index, easingValue) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getDatasetMeta(index);\n\t\t\tvar args = {\n\t\t\t\tmeta: meta,\n\t\t\t\tindex: index,\n\t\t\t\teasingValue: easingValue\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmeta.controller.draw(easingValue);\n\n\t\t\tplugins.notify(me, 'afterDatasetDraw', [args]);\n\t\t},\n\n\t\t/**\n\t\t * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\n\t\t * hook, in which case, plugins will not be called on `afterTooltipDraw`.\n\t\t * @private\n\t\t */\n\t\t_drawTooltip: function(easingValue) {\n\t\t\tvar me = this;\n\t\t\tvar tooltip = me.tooltip;\n\t\t\tvar args = {\n\t\t\t\ttooltip: tooltip,\n\t\t\t\teasingValue: easingValue\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttooltip.draw();\n\n\t\t\tplugins.notify(me, 'afterTooltipDraw', [args]);\n\t\t},\n\n\t\t// Get the single element that was clicked on\n\t\t// @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\n\t\tgetElementAtEvent: function(e) {\n\t\t\treturn Interaction.modes.single(this, e);\n\t\t},\n\n\t\tgetElementsAtEvent: function(e) {\n\t\t\treturn Interaction.modes.label(this, e, {intersect: true});\n\t\t},\n\n\t\tgetElementsAtXAxis: function(e) {\n\t\t\treturn Interaction.modes['x-axis'](this, e, {intersect: true});\n\t\t},\n\n\t\tgetElementsAtEventForMode: function(e, mode, options) {\n\t\t\tvar method = Interaction.modes[mode];\n\t\t\tif (typeof method === 'function') {\n\t\t\t\treturn method(this, e, options);\n\t\t\t}\n\n\t\t\treturn [];\n\t\t},\n\n\t\tgetDatasetAtEvent: function(e) {\n\t\t\treturn Interaction.modes.dataset(this, e, {intersect: true});\n\t\t},\n\n\t\tgetDatasetMeta: function(datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.data.datasets[datasetIndex];\n\t\t\tif (!dataset._meta) {\n\t\t\t\tdataset._meta = {};\n\t\t\t}\n\n\t\t\tvar meta = dataset._meta[me.id];\n\t\t\tif (!meta) {\n\t\t\t\tmeta = dataset._meta[me.id] = {\n\t\t\t\t\ttype: null,\n\t\t\t\t\tdata: [],\n\t\t\t\t\tdataset: null,\n\t\t\t\t\tcontroller: null,\n\t\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\n\t\t\t\t\txAxisID: null,\n\t\t\t\t\tyAxisID: null\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn meta;\n\t\t},\n\n\t\tgetVisibleDatasetCount: function() {\n\t\t\tvar count = 0;\n\t\t\tfor (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tif (this.isDatasetVisible(i)) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\tisDatasetVisible: function(datasetIndex) {\n\t\t\tvar meta = this.getDatasetMeta(datasetIndex);\n\n\t\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n\t\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n\t\t\treturn typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\n\t\t},\n\n\t\tgenerateLegend: function() {\n\t\t\treturn this.options.legendCallback(this);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tdestroyDatasetMeta: function(datasetIndex) {\n\t\t\tvar id = this.id;\n\t\t\tvar dataset = this.data.datasets[datasetIndex];\n\t\t\tvar meta = dataset._meta && dataset._meta[id];\n\n\t\t\tif (meta) {\n\t\t\t\tmeta.controller.destroy();\n\t\t\t\tdelete dataset._meta[id];\n\t\t\t}\n\t\t},\n\n\t\tdestroy: function() {\n\t\t\tvar me = this;\n\t\t\tvar canvas = me.canvas;\n\t\t\tvar i, ilen;\n\n\t\t\tme.stop();\n\n\t\t\t// dataset controllers need to cleanup associated data\n\t\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tme.destroyDatasetMeta(i);\n\t\t\t}\n\n\t\t\tif (canvas) {\n\t\t\t\tme.unbindEvents();\n\t\t\t\thelpers.canvas.clear(me);\n\t\t\t\tplatform.releaseContext(me.ctx);\n\t\t\t\tme.canvas = null;\n\t\t\t\tme.ctx = null;\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'destroy');\n\n\t\t\tdelete Chart.instances[me.id];\n\t\t},\n\n\t\ttoBase64Image: function() {\n\t\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\n\t\t},\n\n\t\tinitToolTip: function() {\n\t\t\tvar me = this;\n\t\t\tme.tooltip = new Tooltip({\n\t\t\t\t_chart: me,\n\t\t\t\t_chartInstance: me, // deprecated, backward compatibility\n\t\t\t\t_data: me.data,\n\t\t\t\t_options: me.options.tooltips\n\t\t\t}, me);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tbindEvents: function() {\n\t\t\tvar me = this;\n\t\t\tvar listeners = me._listeners = {};\n\t\t\tvar listener = function() {\n\t\t\t\tme.eventHandler.apply(me, arguments);\n\t\t\t};\n\n\t\t\thelpers.each(me.options.events, function(type) {\n\t\t\t\tplatform.addEventListener(me, type, listener);\n\t\t\t\tlisteners[type] = listener;\n\t\t\t});\n\n\t\t\t// Elements used to detect size change should not be injected for non responsive charts.\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/2210\n\t\t\tif (me.options.responsive) {\n\t\t\t\tlistener = function() {\n\t\t\t\t\tme.resize();\n\t\t\t\t};\n\n\t\t\t\tplatform.addEventListener(me, 'resize', listener);\n\t\t\t\tlisteners.resize = listener;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tunbindEvents: function() {\n\t\t\tvar me = this;\n\t\t\tvar listeners = me._listeners;\n\t\t\tif (!listeners) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdelete me._listeners;\n\t\t\thelpers.each(listeners, function(listener, type) {\n\t\t\t\tplatform.removeEventListener(me, type, listener);\n\t\t\t});\n\t\t},\n\n\t\tupdateHoverStyle: function(elements, mode, enabled) {\n\t\t\tvar method = enabled ? 'setHoverStyle' : 'removeHoverStyle';\n\t\t\tvar element, i, ilen;\n\n\t\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\n\t\t\t\telement = elements[i];\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[method](element);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\teventHandler: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar tooltip = me.tooltip;\n\n\t\t\tif (plugins.notify(me, 'beforeEvent', [e]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Buffer any update calls so that renders do not occur\n\t\t\tme._bufferedRender = true;\n\t\t\tme._bufferedRequest = null;\n\n\t\t\tvar changed = me.handleEvent(e);\n\t\t\t// for smooth tooltip animations issue #4989\n\t\t\t// the tooltip should be the source of change\n\t\t\t// Animation check workaround:\n\t\t\t// tooltip._start will be null when tooltip isn't animating\n\t\t\tif (tooltip) {\n\t\t\t\tchanged = tooltip._start\n\t\t\t\t\t? tooltip.handleEvent(e)\n\t\t\t\t\t: changed | tooltip.handleEvent(e);\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterEvent', [e]);\n\n\t\t\tvar bufferedRequest = me._bufferedRequest;\n\t\t\tif (bufferedRequest) {\n\t\t\t\t// If we have an update that was triggered, we need to do a normal render\n\t\t\t\tme.render(bufferedRequest);\n\t\t\t} else if (changed && !me.animating) {\n\t\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\n\t\t\t\tme.stop();\n\n\t\t\t\t// We only need to render at this point. Updating will cause scales to be\n\t\t\t\t// recomputed generating flicker & using more memory than necessary.\n\t\t\t\tme.render({\n\t\t\t\t\tduration: me.options.hover.animationDuration,\n\t\t\t\t\tlazy: true\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme._bufferedRender = false;\n\t\t\tme._bufferedRequest = null;\n\n\t\t\treturn me;\n\t\t},\n\n\t\t/**\n\t\t * Handle an event\n\t\t * @private\n\t\t * @param {IEvent} event the event to handle\n\t\t * @return {Boolean} true if the chart needs to re-render\n\t\t */\n\t\thandleEvent: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options || {};\n\t\t\tvar hoverOptions = options.hover;\n\t\t\tvar changed = false;\n\n\t\t\tme.lastActive = me.lastActive || [];\n\n\t\t\t// Find Active Elements for hover and tooltips\n\t\t\tif (e.type === 'mouseout') {\n\t\t\t\tme.active = [];\n\t\t\t} else {\n\t\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\n\t\t\t}\n\n\t\t\t// Invoke onHover hook\n\t\t\t// Need to call with native event here to not break backwards compatibility\n\t\t\thelpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\n\n\t\t\tif (e.type === 'mouseup' || e.type === 'click') {\n\t\t\t\tif (options.onClick) {\n\t\t\t\t\t// Use e.native here for backwards compatibility\n\t\t\t\t\toptions.onClick.call(me, e.native, me.active);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove styling for last active (even if it may still be active)\n\t\t\tif (me.lastActive.length) {\n\t\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\n\t\t\t}\n\n\t\t\t// Built in hover styling\n\t\t\tif (me.active.length && hoverOptions.mode) {\n\t\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\n\t\t\t}\n\n\t\t\tchanged = !helpers.arrayEquals(me.active, me.lastActive);\n\n\t\t\t// Remember Last Actives\n\t\t\tme.lastActive = me.active;\n\n\t\t\treturn changed;\n\t\t}\n\t});\n\n\t/**\n\t * Provided for backward compatibility, use Chart instead.\n\t * @class Chart.Controller\n\t * @deprecated since version 2.6.0\n\t * @todo remove at version 3\n\t * @private\n\t */\n\tChart.Controller = Chart;\n};\n\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){\n'use strict';\n\nvar helpers = require(46);\n\nmodule.exports = function(Chart) {\n\n\tvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\n\t/**\n\t * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n\t * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n\t * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\n\t */\n\tfunction listenArrayEvents(array, listener) {\n\t\tif (array._chartjs) {\n\t\t\tarray._chartjs.listeners.push(listener);\n\t\t\treturn;\n\t\t}\n\n\t\tObject.defineProperty(array, '_chartjs', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: {\n\t\t\t\tlisteners: [listener]\n\t\t\t}\n\t\t});\n\n\t\tarrayEvents.forEach(function(key) {\n\t\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\n\t\t\tvar base = array[key];\n\n\t\t\tObject.defineProperty(array, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: function() {\n\t\t\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\t\t\t\tvar res = base.apply(this, args);\n\n\t\t\t\t\thelpers.each(array._chartjs.listeners, function(object) {\n\t\t\t\t\t\tif (typeof object[method] === 'function') {\n\t\t\t\t\t\t\tobject[method].apply(object, args);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Removes the given array event listener and cleanup extra attached properties (such as\n\t * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n\t */\n\tfunction unlistenArrayEvents(array, listener) {\n\t\tvar stub = array._chartjs;\n\t\tif (!stub) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar listeners = stub.listeners;\n\t\tvar index = listeners.indexOf(listener);\n\t\tif (index !== -1) {\n\t\t\tlisteners.splice(index, 1);\n\t\t}\n\n\t\tif (listeners.length > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tarrayEvents.forEach(function(key) {\n\t\t\tdelete array[key];\n\t\t});\n\n\t\tdelete array._chartjs;\n\t}\n\n\t// Base class for all dataset controllers (line, bar, etc)\n\tChart.DatasetController = function(chart, datasetIndex) {\n\t\tthis.initialize(chart, datasetIndex);\n\t};\n\n\thelpers.extend(Chart.DatasetController.prototype, {\n\n\t\t/**\n\t\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\n\t\t * @type {Chart.core.element}\n\t\t */\n\t\tdatasetElementType: null,\n\n\t\t/**\n\t\t * Element type used to generate a meta data (e.g. Chart.element.Point).\n\t\t * @type {Chart.core.element}\n\t\t */\n\t\tdataElementType: null,\n\n\t\tinitialize: function(chart, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tme.chart = chart;\n\t\t\tme.index = datasetIndex;\n\t\t\tme.linkScales();\n\t\t\tme.addElements();\n\t\t},\n\n\t\tupdateIndex: function(datasetIndex) {\n\t\t\tthis.index = datasetIndex;\n\t\t},\n\n\t\tlinkScales: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar dataset = me.getDataset();\n\n\t\t\tif (meta.xAxisID === null || !(meta.xAxisID in me.chart.scales)) {\n\t\t\t\tmeta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id;\n\t\t\t}\n\t\t\tif (meta.yAxisID === null || !(meta.yAxisID in me.chart.scales)) {\n\t\t\t\tmeta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id;\n\t\t\t}\n\t\t},\n\n\t\tgetDataset: function() {\n\t\t\treturn this.chart.data.datasets[this.index];\n\t\t},\n\n\t\tgetMeta: function() {\n\t\t\treturn this.chart.getDatasetMeta(this.index);\n\t\t},\n\n\t\tgetScaleForId: function(scaleID) {\n\t\t\treturn this.chart.scales[scaleID];\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.update(true);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tdestroy: function() {\n\t\t\tif (this._data) {\n\t\t\t\tunlistenArrayEvents(this._data, this);\n\t\t\t}\n\t\t},\n\n\t\tcreateMetaDataset: function() {\n\t\t\tvar me = this;\n\t\t\tvar type = me.datasetElementType;\n\t\t\treturn type && new type({\n\t\t\t\t_chart: me.chart,\n\t\t\t\t_datasetIndex: me.index\n\t\t\t});\n\t\t},\n\n\t\tcreateMetaData: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar type = me.dataElementType;\n\t\t\treturn type && new type({\n\t\t\t\t_chart: me.chart,\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index\n\t\t\t});\n\t\t},\n\n\t\taddElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar data = me.getDataset().data || [];\n\t\t\tvar metaData = meta.data;\n\t\t\tvar i, ilen;\n\n\t\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\n\t\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\n\t\t\t}\n\n\t\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\n\t\t},\n\n\t\taddElementAndReset: function(index) {\n\t\t\tvar element = this.createMetaData(index);\n\t\t\tthis.getMeta().data.splice(index, 0, element);\n\t\t\tthis.updateElement(element, index, true);\n\t\t},\n\n\t\tbuildOrUpdateElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar data = dataset.data || (dataset.data = []);\n\n\t\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\n\t\t\t// real-time charts), we need to monitor these data modifications and synchronize\n\t\t\t// the internal meta data accordingly.\n\t\t\tif (me._data !== data) {\n\t\t\t\tif (me._data) {\n\t\t\t\t\t// This case happens when the user replaced the data array instance.\n\t\t\t\t\tunlistenArrayEvents(me._data, me);\n\t\t\t\t}\n\n\t\t\t\tlistenArrayEvents(data, me);\n\t\t\t\tme._data = data;\n\t\t\t}\n\n\t\t\t// Re-sync meta data in case the user replaced the data array or if we missed\n\t\t\t// any updates and so make sure that we handle number of datapoints changing.\n\t\t\tme.resyncElements();\n\t\t},\n\n\t\tupdate: helpers.noop,\n\n\t\ttransition: function(easingValue) {\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar elements = meta.data || [];\n\t\t\tvar ilen = elements.length;\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\telements[i].transition(easingValue);\n\t\t\t}\n\n\t\t\tif (meta.dataset) {\n\t\t\t\tmeta.dataset.transition(easingValue);\n\t\t\t}\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar elements = meta.data || [];\n\t\t\tvar ilen = elements.length;\n\t\t\tvar i = 0;\n\n\t\t\tif (meta.dataset) {\n\t\t\t\tmeta.dataset.draw();\n\t\t\t}\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\telements[i].draw();\n\t\t\t}\n\t\t},\n\n\t\tremoveHoverStyle: function(element) {\n\t\t\thelpers.merge(element._model, element.$previousStyle || {});\n\t\t\tdelete element.$previousStyle;\n\t\t},\n\n\t\tsetHoverStyle: function(element) {\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\t\tvar index = element._index;\n\t\t\tvar custom = element.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar getHoverColor = helpers.getHoverColor;\n\t\t\tvar model = element._model;\n\n\t\t\telement.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth\n\t\t\t};\n\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tresyncElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar data = me.getDataset().data;\n\t\t\tvar numMeta = meta.data.length;\n\t\t\tvar numData = data.length;\n\n\t\t\tif (numData < numMeta) {\n\t\t\t\tmeta.data.splice(numData, numMeta - numData);\n\t\t\t} else if (numData > numMeta) {\n\t\t\t\tme.insertElements(numMeta, numData - numMeta);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinsertElements: function(start, count) {\n\t\t\tfor (var i = 0; i < count; ++i) {\n\t\t\t\tthis.addElementAndReset(start + i);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataPush: function() {\n\t\t\tthis.insertElements(this.getDataset().data.length - 1, arguments.length);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataPop: function() {\n\t\t\tthis.getMeta().data.pop();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataShift: function() {\n\t\t\tthis.getMeta().data.shift();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataSplice: function(start, count) {\n\t\t\tthis.getMeta().data.splice(start, count);\n\t\t\tthis.insertElements(start, arguments.length - 2);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataUnshift: function() {\n\t\t\tthis.insertElements(0, arguments.length);\n\t\t}\n\t});\n\n\tChart.DatasetController.extend = helpers.inherits;\n};\n\n},{\"46\":46}],26:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\n\nmodule.exports = {\n\t/**\n\t * @private\n\t */\n\t_set: function(scope, values) {\n\t\treturn helpers.merge(this[scope] || (this[scope] = {}), values);\n\t}\n};\n\n},{\"46\":46}],27:[function(require,module,exports){\n'use strict';\n\nvar color = require(3);\nvar helpers = require(46);\n\nfunction interpolate(start, view, model, ease) {\n\tvar keys = Object.keys(model);\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\n\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\tkey = keys[i];\n\n\t\ttarget = model[key];\n\n\t\t// if a value is added to the model after pivot() has been called, the view\n\t\t// doesn't contain it, so let's initialize the view to the target value.\n\t\tif (!view.hasOwnProperty(key)) {\n\t\t\tview[key] = target;\n\t\t}\n\n\t\tactual = view[key];\n\n\t\tif (actual === target || key[0] === '_') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!start.hasOwnProperty(key)) {\n\t\t\tstart[key] = actual;\n\t\t}\n\n\t\torigin = start[key];\n\n\t\ttype = typeof target;\n\n\t\tif (type === typeof origin) {\n\t\t\tif (type === 'string') {\n\t\t\t\tc0 = color(origin);\n\t\t\t\tif (c0.valid) {\n\t\t\t\t\tc1 = color(target);\n\t\t\t\t\tif (c1.valid) {\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (type === 'number' && isFinite(origin) && isFinite(target)) {\n\t\t\t\tview[key] = origin + (target - origin) * ease;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tview[key] = target;\n\t}\n}\n\nvar Element = function(configuration) {\n\thelpers.extend(this, configuration);\n\tthis.initialize.apply(this, arguments);\n};\n\nhelpers.extend(Element.prototype, {\n\n\tinitialize: function() {\n\t\tthis.hidden = false;\n\t},\n\n\tpivot: function() {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\tme._view = helpers.clone(me._model);\n\t\t}\n\t\tme._start = {};\n\t\treturn me;\n\t},\n\n\ttransition: function(ease) {\n\t\tvar me = this;\n\t\tvar model = me._model;\n\t\tvar start = me._start;\n\t\tvar view = me._view;\n\n\t\t// No animation -> No Transition\n\t\tif (!model || ease === 1) {\n\t\t\tme._view = model;\n\t\t\tme._start = null;\n\t\t\treturn me;\n\t\t}\n\n\t\tif (!view) {\n\t\t\tview = me._view = {};\n\t\t}\n\n\t\tif (!start) {\n\t\t\tstart = me._start = {};\n\t\t}\n\n\t\tinterpolate(start, view, model, ease);\n\n\t\treturn me;\n\t},\n\n\ttooltipPosition: function() {\n\t\treturn {\n\t\t\tx: this._model.x,\n\t\t\ty: this._model.y\n\t\t};\n\t},\n\n\thasValue: function() {\n\t\treturn helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y);\n\t}\n});\n\nElement.extend = helpers.inherits;\n\nmodule.exports = Element;\n\n},{\"3\":3,\"46\":46}],28:[function(require,module,exports){\n/* global window: false */\n/* global document: false */\n'use strict';\n\nvar color = require(3);\nvar defaults = require(26);\nvar helpers = require(46);\nvar scaleService = require(34);\n\nmodule.exports = function() {\n\n\t// -- Basic js utility methods\n\n\thelpers.configMerge = function(/* objects ... */) {\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\n\t\t\tmerger: function(key, target, source, options) {\n\t\t\t\tvar tval = target[key] || {};\n\t\t\t\tvar sval = source[key];\n\n\t\t\t\tif (key === 'scales') {\n\t\t\t\t\t// scale config merging is complex. Add our own function here for that\n\t\t\t\t\ttarget[key] = helpers.scaleMerge(tval, sval);\n\t\t\t\t} else if (key === 'scale') {\n\t\t\t\t\t// used in polar area & radar charts since there is only one scale\n\t\t\t\t\ttarget[key] = helpers.merge(tval, [scaleService.getScaleDefaults(sval.type), sval]);\n\t\t\t\t} else {\n\t\t\t\t\thelpers._merger(key, target, source, options);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\thelpers.scaleMerge = function(/* objects ... */) {\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\n\t\t\tmerger: function(key, target, source, options) {\n\t\t\t\tif (key === 'xAxes' || key === 'yAxes') {\n\t\t\t\t\tvar slen = source[key].length;\n\t\t\t\t\tvar i, type, scale;\n\n\t\t\t\t\tif (!target[key]) {\n\t\t\t\t\t\ttarget[key] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (i = 0; i < slen; ++i) {\n\t\t\t\t\t\tscale = source[key][i];\n\t\t\t\t\t\ttype = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear');\n\n\t\t\t\t\t\tif (i >= target[key].length) {\n\t\t\t\t\t\t\ttarget[key].push({});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {\n\t\t\t\t\t\t\t// new/untyped scale or type changed: let's apply the new defaults\n\t\t\t\t\t\t\t// then merge source scale to correctly overwrite the defaults.\n\t\t\t\t\t\t\thelpers.merge(target[key][i], [scaleService.getScaleDefaults(type), scale]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// scales type are the same\n\t\t\t\t\t\t\thelpers.merge(target[key][i], scale);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\thelpers._merger(key, target, source, options);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\thelpers.where = function(collection, filterCallback) {\n\t\tif (helpers.isArray(collection) && Array.prototype.filter) {\n\t\t\treturn collection.filter(filterCallback);\n\t\t}\n\t\tvar filtered = [];\n\n\t\thelpers.each(collection, function(item) {\n\t\t\tif (filterCallback(item)) {\n\t\t\t\tfiltered.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn filtered;\n\t};\n\thelpers.findIndex = Array.prototype.findIndex ?\n\t\tfunction(array, callback, scope) {\n\t\t\treturn array.findIndex(callback, scope);\n\t\t} :\n\t\tfunction(array, callback, scope) {\n\t\t\tscope = scope === undefined ? array : scope;\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\n\t\t\t\tif (callback.call(scope, array[i], i, array)) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t};\n\thelpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to start of the array\n\t\tif (helpers.isNullOrUndef(startIndex)) {\n\t\t\tstartIndex = -1;\n\t\t}\n\t\tfor (var i = startIndex + 1; i < arrayToSearch.length; i++) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to end of the array\n\t\tif (helpers.isNullOrUndef(startIndex)) {\n\t\t\tstartIndex = arrayToSearch.length;\n\t\t}\n\t\tfor (var i = startIndex - 1; i >= 0; i--) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\n\t// -- Math methods\n\thelpers.isNumber = function(n) {\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\n\t};\n\thelpers.almostEquals = function(x, y, epsilon) {\n\t\treturn Math.abs(x - y) < epsilon;\n\t};\n\thelpers.almostWhole = function(x, epsilon) {\n\t\tvar rounded = Math.round(x);\n\t\treturn (((rounded - epsilon) < x) && ((rounded + epsilon) > x));\n\t};\n\thelpers.max = function(array) {\n\t\treturn array.reduce(function(max, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.max(max, value);\n\t\t\t}\n\t\t\treturn max;\n\t\t}, Number.NEGATIVE_INFINITY);\n\t};\n\thelpers.min = function(array) {\n\t\treturn array.reduce(function(min, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.min(min, value);\n\t\t\t}\n\t\t\treturn min;\n\t\t}, Number.POSITIVE_INFINITY);\n\t};\n\thelpers.sign = Math.sign ?\n\t\tfunction(x) {\n\t\t\treturn Math.sign(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\tx = +x; // convert to a number\n\t\t\tif (x === 0 || isNaN(x)) {\n\t\t\t\treturn x;\n\t\t\t}\n\t\t\treturn x > 0 ? 1 : -1;\n\t\t};\n\thelpers.log10 = Math.log10 ?\n\t\tfunction(x) {\n\t\t\treturn Math.log10(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\n\t\t\t// Check for whole powers of 10,\n\t\t\t// which due to floating point rounding error should be corrected.\n\t\t\tvar powerOf10 = Math.round(exponent);\n\t\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\n\n\t\t\treturn isPowerOf10 ? powerOf10 : exponent;\n\t\t};\n\thelpers.toRadians = function(degrees) {\n\t\treturn degrees * (Math.PI / 180);\n\t};\n\thelpers.toDegrees = function(radians) {\n\t\treturn radians * (180 / Math.PI);\n\t};\n\t// Gets the angle from vertical upright to the point about a centre.\n\thelpers.getAngleFromPoint = function(centrePoint, anglePoint) {\n\t\tvar distanceFromXCenter = anglePoint.x - centrePoint.x;\n\t\tvar distanceFromYCenter = anglePoint.y - centrePoint.y;\n\t\tvar radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n\t\tvar angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n\t\tif (angle < (-0.5 * Math.PI)) {\n\t\t\tangle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n\t\t}\n\n\t\treturn {\n\t\t\tangle: angle,\n\t\t\tdistance: radialDistanceFromCenter\n\t\t};\n\t};\n\thelpers.distanceBetweenPoints = function(pt1, pt2) {\n\t\treturn Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n\t};\n\thelpers.aliasPixel = function(pixelWidth) {\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\n\t};\n\thelpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\n\t\t// Props to Rob Spencer at scaled innovation for his post on splining between points\n\t\t// http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n\t\t// This function must also respect \"skipped\" points\n\n\t\tvar previous = firstPoint.skip ? middlePoint : firstPoint;\n\t\tvar current = middlePoint;\n\t\tvar next = afterPoint.skip ? middlePoint : afterPoint;\n\n\t\tvar d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\n\t\tvar d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\n\n\t\tvar s01 = d01 / (d01 + d12);\n\t\tvar s12 = d12 / (d01 + d12);\n\n\t\t// If all points are the same, s01 & s02 will be inf\n\t\ts01 = isNaN(s01) ? 0 : s01;\n\t\ts12 = isNaN(s12) ? 0 : s12;\n\n\t\tvar fa = t * s01; // scaling factor for triangle Ta\n\t\tvar fb = t * s12;\n\n\t\treturn {\n\t\t\tprevious: {\n\t\t\t\tx: current.x - fa * (next.x - previous.x),\n\t\t\t\ty: current.y - fa * (next.y - previous.y)\n\t\t\t},\n\t\t\tnext: {\n\t\t\t\tx: current.x + fb * (next.x - previous.x),\n\t\t\t\ty: current.y + fb * (next.y - previous.y)\n\t\t\t}\n\t\t};\n\t};\n\thelpers.EPSILON = Number.EPSILON || 1e-14;\n\thelpers.splineCurveMonotone = function(points) {\n\t\t// This function calculates Bézier control points in a similar way than |splineCurve|,\n\t\t// but preserves monotonicity of the provided data and ensures no local extremums are added\n\t\t// between the dataset discrete points due to the interpolation.\n\t\t// See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n\n\t\tvar pointsWithTangents = (points || []).map(function(point) {\n\t\t\treturn {\n\t\t\t\tmodel: point._model,\n\t\t\t\tdeltaK: 0,\n\t\t\t\tmK: 0\n\t\t\t};\n\t\t});\n\n\t\t// Calculate slopes (deltaK) and initialize tangents (mK)\n\t\tvar pointsLen = pointsWithTangents.length;\n\t\tvar i, pointBefore, pointCurrent, pointAfter;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tvar slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);\n\n\t\t\t\t// In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n\t\t\t\tpointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\n\t\t\t}\n\n\t\t\tif (!pointBefore || pointBefore.model.skip) {\n\t\t\t\tpointCurrent.mK = pointCurrent.deltaK;\n\t\t\t} else if (!pointAfter || pointAfter.model.skip) {\n\t\t\t\tpointCurrent.mK = pointBefore.deltaK;\n\t\t\t} else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\n\t\t\t\tpointCurrent.mK = 0;\n\t\t\t} else {\n\t\t\t\tpointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\n\t\t\t}\n\t\t}\n\n\t\t// Adjust tangents to ensure monotonic properties\n\t\tvar alphaK, betaK, tauK, squaredMagnitude;\n\t\tfor (i = 0; i < pointsLen - 1; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tpointAfter = pointsWithTangents[i + 1];\n\t\t\tif (pointCurrent.model.skip || pointAfter.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\n\t\t\t\tpointCurrent.mK = pointAfter.mK = 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\talphaK = pointCurrent.mK / pointCurrent.deltaK;\n\t\t\tbetaK = pointAfter.mK / pointCurrent.deltaK;\n\t\t\tsquaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n\t\t\tif (squaredMagnitude <= 9) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ttauK = 3 / Math.sqrt(squaredMagnitude);\n\t\t\tpointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\n\t\t\tpointAfter.mK = betaK * tauK * pointCurrent.deltaK;\n\t\t}\n\n\t\t// Compute control points\n\t\tvar deltaX;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointBefore && !pointBefore.model.skip) {\n\t\t\t\tdeltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\n\t\t\t\tpointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tdeltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\n\t\t\t\tpointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.nextItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index >= collection.length - 1 ? collection[0] : collection[index + 1];\n\t\t}\n\t\treturn index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\n\t};\n\thelpers.previousItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index <= 0 ? collection[collection.length - 1] : collection[index - 1];\n\t\t}\n\t\treturn index <= 0 ? collection[0] : collection[index - 1];\n\t};\n\t// Implementation of the nice number algorithm used in determining where axis labels will go\n\thelpers.niceNum = function(range, round) {\n\t\tvar exponent = Math.floor(helpers.log10(range));\n\t\tvar fraction = range / Math.pow(10, exponent);\n\t\tvar niceFraction;\n\n\t\tif (round) {\n\t\t\tif (fraction < 1.5) {\n\t\t\t\tniceFraction = 1;\n\t\t\t} else if (fraction < 3) {\n\t\t\t\tniceFraction = 2;\n\t\t\t} else if (fraction < 7) {\n\t\t\t\tniceFraction = 5;\n\t\t\t} else {\n\t\t\t\tniceFraction = 10;\n\t\t\t}\n\t\t} else if (fraction <= 1.0) {\n\t\t\tniceFraction = 1;\n\t\t} else if (fraction <= 2) {\n\t\t\tniceFraction = 2;\n\t\t} else if (fraction <= 5) {\n\t\t\tniceFraction = 5;\n\t\t} else {\n\t\t\tniceFraction = 10;\n\t\t}\n\n\t\treturn niceFraction * Math.pow(10, exponent);\n\t};\n\t// Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\n\thelpers.requestAnimFrame = (function() {\n\t\tif (typeof window === 'undefined') {\n\t\t\treturn function(callback) {\n\t\t\t\tcallback();\n\t\t\t};\n\t\t}\n\t\treturn window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\twindow.oRequestAnimationFrame ||\n\t\t\twindow.msRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000 / 60);\n\t\t\t};\n\t}());\n\t// -- DOM methods\n\thelpers.getRelativePosition = function(evt, chart) {\n\t\tvar mouseX, mouseY;\n\t\tvar e = evt.originalEvent || evt;\n\t\tvar canvas = evt.target || evt.srcElement;\n\t\tvar boundingRect = canvas.getBoundingClientRect();\n\n\t\tvar touches = e.touches;\n\t\tif (touches && touches.length > 0) {\n\t\t\tmouseX = touches[0].clientX;\n\t\t\tmouseY = touches[0].clientY;\n\n\t\t} else {\n\t\t\tmouseX = e.clientX;\n\t\t\tmouseY = e.clientY;\n\t\t}\n\n\t\t// Scale mouse coordinates into canvas coordinates\n\t\t// by following the pattern laid out by 'jerryj' in the comments of\n\t\t// http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\n\t\tvar paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left'));\n\t\tvar paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top'));\n\t\tvar paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right'));\n\t\tvar paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom'));\n\t\tvar width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\n\t\tvar height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\n\n\t\t// We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\n\t\t// the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\n\t\tmouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\n\t\tmouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\n\n\t\treturn {\n\t\t\tx: mouseX,\n\t\t\ty: mouseY\n\t\t};\n\n\t};\n\n\t// Private helper function to convert max-width/max-height values that may be percentages into a number\n\tfunction parseMaxStyle(styleValue, node, parentProperty) {\n\t\tvar valueInPixels;\n\t\tif (typeof styleValue === 'string') {\n\t\t\tvalueInPixels = parseInt(styleValue, 10);\n\n\t\t\tif (styleValue.indexOf('%') !== -1) {\n\t\t\t\t// percentage * size in dimension\n\t\t\t\tvalueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n\t\t\t}\n\t\t} else {\n\t\t\tvalueInPixels = styleValue;\n\t\t}\n\n\t\treturn valueInPixels;\n\t}\n\n\t/**\n\t * Returns if the given value contains an effective constraint.\n\t * @private\n\t */\n\tfunction isConstrainedValue(value) {\n\t\treturn value !== undefined && value !== null && value !== 'none';\n\t}\n\n\t// Private helper to get a constraint dimension\n\t// @param domNode : the node to check the constraint on\n\t// @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight)\n\t// @param percentageProperty : property of parent to use when calculating width as a percentage\n\t// @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\n\t\tvar view = document.defaultView;\n\t\tvar parentNode = helpers._getParentNode(domNode);\n\t\tvar constrainedNode = view.getComputedStyle(domNode)[maxStyle];\n\t\tvar constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\n\t\tvar hasCNode = isConstrainedValue(constrainedNode);\n\t\tvar hasCContainer = isConstrainedValue(constrainedContainer);\n\t\tvar infinity = Number.POSITIVE_INFINITY;\n\n\t\tif (hasCNode || hasCContainer) {\n\t\t\treturn Math.min(\n\t\t\t\thasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\n\t\t\t\thasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\n\t\t}\n\n\t\treturn 'none';\n\t}\n\t// returns Number or undefined if no constraint\n\thelpers.getConstraintWidth = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\n\t};\n\t// returns Number or undefined if no constraint\n\thelpers.getConstraintHeight = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\n\t};\n\t/**\n\t * @private\n \t */\n\thelpers._calculatePadding = function(container, padding, parentDimension) {\n\t\tpadding = helpers.getStyle(container, padding);\n\n\t\treturn padding.indexOf('%') > -1 ? parentDimension / parseInt(padding, 10) : parseInt(padding, 10);\n\t};\n\t/**\n\t * @private\n\t */\n\thelpers._getParentNode = function(domNode) {\n\t\tvar parent = domNode.parentNode;\n\t\tif (parent && parent.host) {\n\t\t\tparent = parent.host;\n\t\t}\n\t\treturn parent;\n\t};\n\thelpers.getMaximumWidth = function(domNode) {\n\t\tvar container = helpers._getParentNode(domNode);\n\t\tif (!container) {\n\t\t\treturn domNode.clientWidth;\n\t\t}\n\n\t\tvar clientWidth = container.clientWidth;\n\t\tvar paddingLeft = helpers._calculatePadding(container, 'padding-left', clientWidth);\n\t\tvar paddingRight = helpers._calculatePadding(container, 'padding-right', clientWidth);\n\n\t\tvar w = clientWidth - paddingLeft - paddingRight;\n\t\tvar cw = helpers.getConstraintWidth(domNode);\n\t\treturn isNaN(cw) ? w : Math.min(w, cw);\n\t};\n\thelpers.getMaximumHeight = function(domNode) {\n\t\tvar container = helpers._getParentNode(domNode);\n\t\tif (!container) {\n\t\t\treturn domNode.clientHeight;\n\t\t}\n\n\t\tvar clientHeight = container.clientHeight;\n\t\tvar paddingTop = helpers._calculatePadding(container, 'padding-top', clientHeight);\n\t\tvar paddingBottom = helpers._calculatePadding(container, 'padding-bottom', clientHeight);\n\n\t\tvar h = clientHeight - paddingTop - paddingBottom;\n\t\tvar ch = helpers.getConstraintHeight(domNode);\n\t\treturn isNaN(ch) ? h : Math.min(h, ch);\n\t};\n\thelpers.getStyle = function(el, property) {\n\t\treturn el.currentStyle ?\n\t\t\tel.currentStyle[property] :\n\t\t\tdocument.defaultView.getComputedStyle(el, null).getPropertyValue(property);\n\t};\n\thelpers.retinaScale = function(chart, forceRatio) {\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\n\t\tif (pixelRatio === 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar canvas = chart.canvas;\n\t\tvar height = chart.height;\n\t\tvar width = chart.width;\n\n\t\tcanvas.height = height * pixelRatio;\n\t\tcanvas.width = width * pixelRatio;\n\t\tchart.ctx.scale(pixelRatio, pixelRatio);\n\n\t\t// If no style has been set on the canvas, the render size is used as display size,\n\t\t// making the chart visually bigger, so let's enforce it to the \"correct\" values.\n\t\t// See https://github.com/chartjs/Chart.js/issues/3575\n\t\tif (!canvas.style.height && !canvas.style.width) {\n\t\t\tcanvas.style.height = height + 'px';\n\t\t\tcanvas.style.width = width + 'px';\n\t\t}\n\t};\n\t// -- Canvas methods\n\thelpers.fontString = function(pixelSize, fontStyle, fontFamily) {\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n\t};\n\thelpers.longestText = function(ctx, font, arrayOfThings, cache) {\n\t\tcache = cache || {};\n\t\tvar data = cache.data = cache.data || {};\n\t\tvar gc = cache.garbageCollect = cache.garbageCollect || [];\n\n\t\tif (cache.font !== font) {\n\t\t\tdata = cache.data = {};\n\t\t\tgc = cache.garbageCollect = [];\n\t\t\tcache.font = font;\n\t\t}\n\n\t\tctx.font = font;\n\t\tvar longest = 0;\n\t\thelpers.each(arrayOfThings, function(thing) {\n\t\t\t// Undefined strings and arrays should not be measured\n\t\t\tif (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) {\n\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, thing);\n\t\t\t} else if (helpers.isArray(thing)) {\n\t\t\t\t// if it is an array lets measure each element\n\t\t\t\t// to do maybe simplify this function a bit so we can do this more recursively?\n\t\t\t\thelpers.each(thing, function(nestedThing) {\n\t\t\t\t\t// Undefined strings and arrays should not be measured\n\t\t\t\t\tif (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) {\n\t\t\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, nestedThing);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tvar gcLen = gc.length / 2;\n\t\tif (gcLen > arrayOfThings.length) {\n\t\t\tfor (var i = 0; i < gcLen; i++) {\n\t\t\t\tdelete data[gc[i]];\n\t\t\t}\n\t\t\tgc.splice(0, gcLen);\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers.measureText = function(ctx, data, gc, longest, string) {\n\t\tvar textWidth = data[string];\n\t\tif (!textWidth) {\n\t\t\ttextWidth = data[string] = ctx.measureText(string).width;\n\t\t\tgc.push(string);\n\t\t}\n\t\tif (textWidth > longest) {\n\t\t\tlongest = textWidth;\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers.numberOfLabelLines = function(arrayOfThings) {\n\t\tvar numberOfLines = 1;\n\t\thelpers.each(arrayOfThings, function(thing) {\n\t\t\tif (helpers.isArray(thing)) {\n\t\t\t\tif (thing.length > numberOfLines) {\n\t\t\t\t\tnumberOfLines = thing.length;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn numberOfLines;\n\t};\n\n\thelpers.color = !color ?\n\t\tfunction(value) {\n\t\t\tconsole.error('Color.js not found!');\n\t\t\treturn value;\n\t\t} :\n\t\tfunction(value) {\n\t\t\t/* global CanvasGradient */\n\t\t\tif (value instanceof CanvasGradient) {\n\t\t\t\tvalue = defaults.global.defaultColor;\n\t\t\t}\n\n\t\t\treturn color(value);\n\t\t};\n\n\thelpers.getHoverColor = function(colorValue) {\n\t\t/* global CanvasPattern */\n\t\treturn (colorValue instanceof CanvasPattern) ?\n\t\t\tcolorValue :\n\t\t\thelpers.color(colorValue).saturate(0.5).darken(0.1).rgbString();\n\t};\n};\n\n},{\"26\":26,\"3\":3,\"34\":34,\"46\":46}],29:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\n\n/**\n * Helper function to get relative position for an event\n * @param {Event|IEvent} event - The event to get the position for\n * @param {Chart} chart - The chart\n * @returns {Point} the event position\n */\nfunction getRelativePosition(e, chart) {\n\tif (e.native) {\n\t\treturn {\n\t\t\tx: e.x,\n\t\t\ty: e.y\n\t\t};\n\t}\n\n\treturn helpers.getRelativePosition(e, chart);\n}\n\n/**\n * Helper function to traverse all of the visible elements in the chart\n * @param chart {chart} the chart\n * @param handler {Function} the callback to execute for each visible item\n */\nfunction parseVisibleItems(chart, handler) {\n\tvar datasets = chart.data.datasets;\n\tvar meta, i, j, ilen, jlen;\n\n\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\n\t\tif (!chart.isDatasetVisible(i)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tmeta = chart.getDatasetMeta(i);\n\t\tfor (j = 0, jlen = meta.data.length; j < jlen; ++j) {\n\t\t\tvar element = meta.data[j];\n\t\t\tif (!element._view.skip) {\n\t\t\t\thandler(element);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param items {ChartElement[]} elements to filter\n * @param position {Point} the point to be nearest to\n * @return {ChartElement[]} the nearest items\n */\nfunction getIntersectItems(chart, position) {\n\tvar elements = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (element.inRange(position.x, position.y)) {\n\t\t\telements.push(element);\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\n * @param chart {Chart} the chart to look at elements from\n * @param position {Point} the point to be nearest to\n * @param intersect {Boolean} if true, only consider items that intersect the position\n * @param distanceMetric {Function} function to provide the distance between points\n * @return {ChartElement[]} the nearest items\n */\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\n\tvar minDistance = Number.POSITIVE_INFINITY;\n\tvar nearestItems = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar center = element.getCenterPoint();\n\t\tvar distance = distanceMetric(position, center);\n\n\t\tif (distance < minDistance) {\n\t\t\tnearestItems = [element];\n\t\t\tminDistance = distance;\n\t\t} else if (distance === minDistance) {\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\n\t\t\tnearestItems.push(element);\n\t\t}\n\t});\n\n\treturn nearestItems;\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {String} axis the axis mode. x|y|xy\n */\nfunction getDistanceMetricForAxis(axis) {\n\tvar useX = axis.indexOf('x') !== -1;\n\tvar useY = axis.indexOf('y') !== -1;\n\n\treturn function(pt1, pt2) {\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n\t};\n}\n\nfunction indexMode(chart, e, options) {\n\tvar position = getRelativePosition(e, chart);\n\t// Default axis for index mode is 'x' to match old behaviour\n\toptions.axis = options.axis || 'x';\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\tvar elements = [];\n\n\tif (!items.length) {\n\t\treturn [];\n\t}\n\n\tchart.data.datasets.forEach(function(dataset, datasetIndex) {\n\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\tvar element = meta.data[items[0]._index];\n\n\t\t\t// don't count items that are skipped (null data)\n\t\t\tif (element && !element._view.skip) {\n\t\t\t\telements.push(element);\n\t\t\t}\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * @interface IInteractionOptions\n */\n/**\n * If true, only consider items that intersect the point\n * @name IInterfaceOptions#boolean\n * @type Boolean\n */\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nmodule.exports = {\n\t// Helper function for different modes\n\tmodes: {\n\t\tsingle: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar elements = [];\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\telements.push(element);\n\t\t\t\t\treturn elements;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn elements.slice(0, 1);\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.label\n\t\t * @deprecated since version 2.4.0\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\tlabel: indexMode,\n\n\t\t/**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tindex: indexMode,\n\n\t\t/**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tdataset: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\n\t\t\tif (items.length > 0) {\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\n\t\t\t}\n\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.x-axis\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\t'x-axis': function(chart, e) {\n\t\t\treturn indexMode(chart, e, {intersect: false});\n\t\t},\n\n\t\t/**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tpoint: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\treturn getIntersectItems(chart, position);\n\t\t},\n\n\t\t/**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tnearest: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\tvar nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric);\n\n\t\t\t// We have multiple items at the same distance from the event. Now sort by smallest\n\t\t\tif (nearestItems.length > 1) {\n\t\t\t\tnearestItems.sort(function(a, b) {\n\t\t\t\t\tvar sizeA = a.getArea();\n\t\t\t\t\tvar sizeB = b.getArea();\n\t\t\t\t\tvar ret = sizeA - sizeB;\n\n\t\t\t\t\tif (ret === 0) {\n\t\t\t\t\t\t// if equal sort by dataset index\n\t\t\t\t\t\tret = a._datasetIndex - b._datasetIndex;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn ret;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Return only 1 item\n\t\t\treturn nearestItems.slice(0, 1);\n\t\t},\n\n\t\t/**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tx: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inXRange(position.x)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\ty: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inYRange(position.y)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t}\n\t}\n};\n\n},{\"46\":46}],30:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\n\ndefaults._set('global', {\n\tresponsive: true,\n\tresponsiveAnimationDuration: 0,\n\tmaintainAspectRatio: true,\n\tevents: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'],\n\thover: {\n\t\tonHover: null,\n\t\tmode: 'nearest',\n\t\tintersect: true,\n\t\tanimationDuration: 400\n\t},\n\tonClick: null,\n\tdefaultColor: 'rgba(0,0,0,0.1)',\n\tdefaultFontColor: '#666',\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n\tdefaultFontSize: 12,\n\tdefaultFontStyle: 'normal',\n\tshowLines: true,\n\n\t// Element defaults defined in element extensions\n\telements: {},\n\n\t// Layout options such as padding\n\tlayout: {\n\t\tpadding: {\n\t\t\ttop: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t\tleft: 0\n\t\t}\n\t}\n});\n\nmodule.exports = function() {\n\n\t// Occupy the global variable of Chart, and create a simple base class\n\tvar Chart = function(item, config) {\n\t\tthis.construct(item, config);\n\t\treturn this;\n\t};\n\n\tChart.Chart = Chart;\n\n\treturn Chart;\n};\n\n},{\"26\":26}],31:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\n\nfunction filterByPosition(array, position) {\n\treturn helpers.where(array, function(v) {\n\t\treturn v.position === position;\n\t});\n}\n\nfunction sortByWeight(array, reverse) {\n\tarray.forEach(function(v, i) {\n\t\tv._tmpIndex_ = i;\n\t\treturn v;\n\t});\n\tarray.sort(function(a, b) {\n\t\tvar v0 = reverse ? b : a;\n\t\tvar v1 = reverse ? a : b;\n\t\treturn v0.weight === v1.weight ?\n\t\t\tv0._tmpIndex_ - v1._tmpIndex_ :\n\t\t\tv0.weight - v1.weight;\n\t});\n\tarray.forEach(function(v) {\n\t\tdelete v._tmpIndex_;\n\t});\n}\n\n/**\n * @interface ILayoutItem\n * @prop {String} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\n * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {Function} update - Takes two parameters: width and height. Returns size of item\n * @prop {Function} getPadding -  Returns an object with padding on the edges\n * @prop {Number} width - Width of item. Must be valid after update()\n * @prop {Number} height - Height of item. Must be valid after update()\n * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory.  It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nmodule.exports = {\n\tdefaults: {},\n\n\t/**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {ILayoutItem} item - the item to add to be layed out\n\t */\n\taddBox: function(chart, item) {\n\t\tif (!chart.boxes) {\n\t\t\tchart.boxes = [];\n\t\t}\n\n\t\t// initialize item with default values\n\t\titem.fullWidth = item.fullWidth || false;\n\t\titem.position = item.position || 'top';\n\t\titem.weight = item.weight || 0;\n\n\t\tchart.boxes.push(item);\n\t},\n\n\t/**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {Object} layoutItem - the item to remove from the layout\n\t */\n\tremoveBox: function(chart, layoutItem) {\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n\t\tif (index !== -1) {\n\t\t\tchart.boxes.splice(index, 1);\n\t\t}\n\t},\n\n\t/**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {Object} item - the item to configure with the given options\n\t * @param {Object} options - the new item options.\n\t */\n\tconfigure: function(chart, item, options) {\n\t\tvar props = ['fullWidth', 'position', 'weight'];\n\t\tvar ilen = props.length;\n\t\tvar i = 0;\n\t\tvar prop;\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\tprop = props[i];\n\t\t\tif (options.hasOwnProperty(prop)) {\n\t\t\t\titem[prop] = options[prop];\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {Number} width - the width to fit into\n\t * @param {Number} height - the height to fit into\n\t */\n\tupdate: function(chart, width, height) {\n\t\tif (!chart) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar layoutOptions = chart.options.layout || {};\n\t\tvar padding = helpers.options.toPadding(layoutOptions.padding);\n\t\tvar leftPadding = padding.left;\n\t\tvar rightPadding = padding.right;\n\t\tvar topPadding = padding.top;\n\t\tvar bottomPadding = padding.bottom;\n\n\t\tvar leftBoxes = filterByPosition(chart.boxes, 'left');\n\t\tvar rightBoxes = filterByPosition(chart.boxes, 'right');\n\t\tvar topBoxes = filterByPosition(chart.boxes, 'top');\n\t\tvar bottomBoxes = filterByPosition(chart.boxes, 'bottom');\n\t\tvar chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea');\n\n\t\t// Sort boxes by weight. A higher weight is further away from the chart area\n\t\tsortByWeight(leftBoxes, true);\n\t\tsortByWeight(rightBoxes, false);\n\t\tsortByWeight(topBoxes, true);\n\t\tsortByWeight(bottomBoxes, false);\n\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\n\t\t// Our canvas looks like the following.\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n\t\t// B1 is the bottom axis\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n\t\t// an error will be thrown.\n\t\t//\n\t\t// |----------------------------------------------------|\n\t\t// |                  T1 (Full Width)                   |\n\t\t// |----------------------------------------------------|\n\t\t// |    |    |                 T2                  |    |\n\t\t// |    |----|-------------------------------------|----|\n\t\t// |    |    | C1 |                           | C2 |    |\n\t\t// |    |    |----|                           |----|    |\n\t\t// |    |    |                                     |    |\n\t\t// | L1 | L2 |           ChartArea (C0)            | R1 |\n\t\t// |    |    |                                     |    |\n\t\t// |    |    |----|                           |----|    |\n\t\t// |    |    | C3 |                           | C4 |    |\n\t\t// |    |----|-------------------------------------|----|\n\t\t// |    |    |                 B1                  |    |\n\t\t// |----------------------------------------------------|\n\t\t// |                  B2 (Full Width)                   |\n\t\t// |----------------------------------------------------|\n\t\t//\n\t\t// What we do to find the best sizing, we do the following\n\t\t// 1. Determine the minimum size of the chart area.\n\t\t// 2. Split the remaining width equally between each vertical axis\n\t\t// 3. Split the remaining height equally between each horizontal axis\n\t\t// 4. Give each layout the maximum size it can be. The layout will return it's minimum size\n\t\t// 5. Adjust the sizes of each axis based on it's minimum reported size.\n\t\t// 6. Refit each axis\n\t\t// 7. Position each axis in the final location\n\t\t// 8. Tell the chart the final location of the chart area\n\t\t// 9. Tell any axes that overlay the chart area the positions of the chart area\n\n\t\t// Step 1\n\t\tvar chartWidth = width - leftPadding - rightPadding;\n\t\tvar chartHeight = height - topPadding - bottomPadding;\n\t\tvar chartAreaWidth = chartWidth / 2; // min 50%\n\t\tvar chartAreaHeight = chartHeight / 2; // min 50%\n\n\t\t// Step 2\n\t\tvar verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length);\n\n\t\t// Step 3\n\t\tvar horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length);\n\n\t\t// Step 4\n\t\tvar maxChartAreaWidth = chartWidth;\n\t\tvar maxChartAreaHeight = chartHeight;\n\t\tvar minBoxSizes = [];\n\n\t\tfunction getMinimumBoxSize(box) {\n\t\t\tvar minSize;\n\t\t\tvar isHorizontal = box.isHorizontal();\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight);\n\t\t\t\tmaxChartAreaHeight -= minSize.height;\n\t\t\t} else {\n\t\t\t\tminSize = box.update(verticalBoxWidth, maxChartAreaHeight);\n\t\t\t\tmaxChartAreaWidth -= minSize.width;\n\t\t\t}\n\n\t\t\tminBoxSizes.push({\n\t\t\t\thorizontal: isHorizontal,\n\t\t\t\tminSize: minSize,\n\t\t\t\tbox: box,\n\t\t\t});\n\t\t}\n\n\t\thelpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize);\n\n\t\t// If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478)\n\t\tvar maxHorizontalLeftPadding = 0;\n\t\tvar maxHorizontalRightPadding = 0;\n\t\tvar maxVerticalTopPadding = 0;\n\t\tvar maxVerticalBottomPadding = 0;\n\n\t\thelpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) {\n\t\t\tif (horizontalBox.getPadding) {\n\t\t\t\tvar boxPadding = horizontalBox.getPadding();\n\t\t\t\tmaxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left);\n\t\t\t\tmaxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right);\n\t\t\t}\n\t\t});\n\n\t\thelpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) {\n\t\t\tif (verticalBox.getPadding) {\n\t\t\t\tvar boxPadding = verticalBox.getPadding();\n\t\t\t\tmaxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top);\n\t\t\t\tmaxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom);\n\t\t\t}\n\t\t});\n\n\t\t// At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could\n\t\t// be if the axes are drawn at their minimum sizes.\n\t\t// Steps 5 & 6\n\t\tvar totalLeftBoxesWidth = leftPadding;\n\t\tvar totalRightBoxesWidth = rightPadding;\n\t\tvar totalTopBoxesHeight = topPadding;\n\t\tvar totalBottomBoxesHeight = bottomPadding;\n\n\t\t// Function to fit a box\n\t\tfunction fitBox(box) {\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) {\n\t\t\t\treturn minBox.box === box;\n\t\t\t});\n\n\t\t\tif (minBoxSize) {\n\t\t\t\tif (box.isHorizontal()) {\n\t\t\t\t\tvar scaleMargin = {\n\t\t\t\t\t\tleft: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding),\n\t\t\t\t\t\tright: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding),\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tbottom: 0\n\t\t\t\t\t};\n\n\t\t\t\t\t// Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends\n\t\t\t\t\t// on the margin. Sometimes they need to increase in size slightly\n\t\t\t\t\tbox.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin);\n\t\t\t\t} else {\n\t\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Update, and calculate the left and right margins for the horizontal boxes\n\t\thelpers.each(leftBoxes.concat(rightBoxes), fitBox);\n\n\t\thelpers.each(leftBoxes, function(box) {\n\t\t\ttotalLeftBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(rightBoxes, function(box) {\n\t\t\ttotalRightBoxesWidth += box.width;\n\t\t});\n\n\t\t// Set the Left and Right margins for the horizontal boxes\n\t\thelpers.each(topBoxes.concat(bottomBoxes), fitBox);\n\n\t\t// Figure out how much margin is on the top and bottom of the vertical boxes\n\t\thelpers.each(topBoxes, function(box) {\n\t\t\ttotalTopBoxesHeight += box.height;\n\t\t});\n\n\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\ttotalBottomBoxesHeight += box.height;\n\t\t});\n\n\t\tfunction finalFitVerticalBox(box) {\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) {\n\t\t\t\treturn minSize.box === box;\n\t\t\t});\n\n\t\t\tvar scaleMargin = {\n\t\t\t\tleft: 0,\n\t\t\t\tright: 0,\n\t\t\t\ttop: totalTopBoxesHeight,\n\t\t\t\tbottom: totalBottomBoxesHeight\n\t\t\t};\n\n\t\t\tif (minBoxSize) {\n\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin);\n\t\t\t}\n\t\t}\n\n\t\t// Let the left layout know the final margin\n\t\thelpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox);\n\n\t\t// Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance)\n\t\ttotalLeftBoxesWidth = leftPadding;\n\t\ttotalRightBoxesWidth = rightPadding;\n\t\ttotalTopBoxesHeight = topPadding;\n\t\ttotalBottomBoxesHeight = bottomPadding;\n\n\t\thelpers.each(leftBoxes, function(box) {\n\t\t\ttotalLeftBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(rightBoxes, function(box) {\n\t\t\ttotalRightBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(topBoxes, function(box) {\n\t\t\ttotalTopBoxesHeight += box.height;\n\t\t});\n\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\ttotalBottomBoxesHeight += box.height;\n\t\t});\n\n\t\t// We may be adding some padding to account for rotated x axis labels\n\t\tvar leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0);\n\t\ttotalLeftBoxesWidth += leftPaddingAddition;\n\t\ttotalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0);\n\n\t\tvar topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0);\n\t\ttotalTopBoxesHeight += topPaddingAddition;\n\t\ttotalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0);\n\n\t\t// Figure out if our chart area changed. This would occur if the dataset layout label rotation\n\t\t// changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do\n\t\t// without calling `fit` again\n\t\tvar newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight;\n\t\tvar newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth;\n\n\t\tif (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) {\n\t\t\thelpers.each(leftBoxes, function(box) {\n\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t});\n\n\t\t\thelpers.each(rightBoxes, function(box) {\n\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t});\n\n\t\t\thelpers.each(topBoxes, function(box) {\n\t\t\t\tif (!box.fullWidth) {\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\t\tif (!box.fullWidth) {\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmaxChartAreaHeight = newMaxChartAreaHeight;\n\t\t\tmaxChartAreaWidth = newMaxChartAreaWidth;\n\t\t}\n\n\t\t// Step 7 - Position the boxes\n\t\tvar left = leftPadding + leftPaddingAddition;\n\t\tvar top = topPadding + topPaddingAddition;\n\n\t\tfunction placeBox(box) {\n\t\t\tif (box.isHorizontal()) {\n\t\t\t\tbox.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth;\n\t\t\t\tbox.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth;\n\t\t\t\tbox.top = top;\n\t\t\t\tbox.bottom = top + box.height;\n\n\t\t\t\t// Move to next point\n\t\t\t\ttop = box.bottom;\n\n\t\t\t} else {\n\n\t\t\t\tbox.left = left;\n\t\t\t\tbox.right = left + box.width;\n\t\t\t\tbox.top = totalTopBoxesHeight;\n\t\t\t\tbox.bottom = totalTopBoxesHeight + maxChartAreaHeight;\n\n\t\t\t\t// Move to next point\n\t\t\t\tleft = box.right;\n\t\t\t}\n\t\t}\n\n\t\thelpers.each(leftBoxes.concat(topBoxes), placeBox);\n\n\t\t// Account for chart width and height\n\t\tleft += maxChartAreaWidth;\n\t\ttop += maxChartAreaHeight;\n\n\t\thelpers.each(rightBoxes, placeBox);\n\t\thelpers.each(bottomBoxes, placeBox);\n\n\t\t// Step 8\n\t\tchart.chartArea = {\n\t\t\tleft: totalLeftBoxesWidth,\n\t\t\ttop: totalTopBoxesHeight,\n\t\t\tright: totalLeftBoxesWidth + maxChartAreaWidth,\n\t\t\tbottom: totalTopBoxesHeight + maxChartAreaHeight\n\t\t};\n\n\t\t// Step 9\n\t\thelpers.each(chartAreaBoxes, function(box) {\n\t\t\tbox.left = chart.chartArea.left;\n\t\t\tbox.top = chart.chartArea.top;\n\t\t\tbox.right = chart.chartArea.right;\n\t\t\tbox.bottom = chart.chartArea.bottom;\n\n\t\t\tbox.update(maxChartAreaWidth, maxChartAreaHeight);\n\t\t});\n\t}\n};\n\n},{\"46\":46}],32:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar helpers = require(46);\n\ndefaults._set('global', {\n\tplugins: {}\n});\n\n/**\n * The plugin service singleton\n * @namespace Chart.plugins\n * @since 2.1.0\n */\nmodule.exports = {\n\t/**\n\t * Globally registered plugins.\n\t * @private\n\t */\n\t_plugins: [],\n\n\t/**\n\t * This identifier is used to invalidate the descriptors cache attached to each chart\n\t * when a global plugin is registered or unregistered. In this case, the cache ID is\n\t * incremented and descriptors are regenerated during following API calls.\n\t * @private\n\t */\n\t_cacheId: 0,\n\n\t/**\n\t * Registers the given plugin(s) if not already registered.\n\t * @param {Array|Object} plugins plugin instance(s).\n\t */\n\tregister: function(plugins) {\n\t\tvar p = this._plugins;\n\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\tif (p.indexOf(plugin) === -1) {\n\t\t\t\tp.push(plugin);\n\t\t\t}\n\t\t});\n\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Unregisters the given plugin(s) only if registered.\n\t * @param {Array|Object} plugins plugin instance(s).\n\t */\n\tunregister: function(plugins) {\n\t\tvar p = this._plugins;\n\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\tvar idx = p.indexOf(plugin);\n\t\t\tif (idx !== -1) {\n\t\t\t\tp.splice(idx, 1);\n\t\t\t}\n\t\t});\n\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Remove all registered plugins.\n\t * @since 2.1.5\n\t */\n\tclear: function() {\n\t\tthis._plugins = [];\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Returns the number of registered plugins?\n\t * @returns {Number}\n\t * @since 2.1.5\n\t */\n\tcount: function() {\n\t\treturn this._plugins.length;\n\t},\n\n\t/**\n\t * Returns all registered plugin instances.\n\t * @returns {Array} array of plugin objects.\n\t * @since 2.1.5\n\t */\n\tgetAll: function() {\n\t\treturn this._plugins;\n\t},\n\n\t/**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Object} chart - The chart instance for which plugins should be called.\n\t * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Array} [args] - Extra arguments to apply to the hook call.\n\t * @returns {Boolean} false if any of the plugins return false, else returns true.\n\t */\n\tnotify: function(chart, hook, args) {\n\t\tvar descriptors = this.descriptors(chart);\n\t\tvar ilen = descriptors.length;\n\t\tvar i, descriptor, plugin, params, method;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tdescriptor = descriptors[i];\n\t\t\tplugin = descriptor.plugin;\n\t\t\tmethod = plugin[hook];\n\t\t\tif (typeof method === 'function') {\n\t\t\t\tparams = [chart].concat(args || []);\n\t\t\t\tparams.push(descriptor.options);\n\t\t\t\tif (method.apply(plugin, params) === false) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns descriptors of enabled plugins for the given chart.\n\t * @returns {Array} [{ plugin, options }]\n\t * @private\n\t */\n\tdescriptors: function(chart) {\n\t\tvar cache = chart.$plugins || (chart.$plugins = {});\n\t\tif (cache.id === this._cacheId) {\n\t\t\treturn cache.descriptors;\n\t\t}\n\n\t\tvar plugins = [];\n\t\tvar descriptors = [];\n\t\tvar config = (chart && chart.config) || {};\n\t\tvar options = (config.options && config.options.plugins) || {};\n\n\t\tthis._plugins.concat(config.plugins || []).forEach(function(plugin) {\n\t\t\tvar idx = plugins.indexOf(plugin);\n\t\t\tif (idx !== -1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar id = plugin.id;\n\t\t\tvar opts = options[id];\n\t\t\tif (opts === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (opts === true) {\n\t\t\t\topts = helpers.clone(defaults.global.plugins[id]);\n\t\t\t}\n\n\t\t\tplugins.push(plugin);\n\t\t\tdescriptors.push({\n\t\t\t\tplugin: plugin,\n\t\t\t\toptions: opts || {}\n\t\t\t});\n\t\t});\n\n\t\tcache.descriptors = descriptors;\n\t\tcache.id = this._cacheId;\n\t\treturn descriptors;\n\t},\n\n\t/**\n\t * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\n\t * but in some cases, this reference can be changed by the user when updating options.\n\t * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\t * @private\n\t */\n\t_invalidate: function(chart) {\n\t\tdelete chart.$plugins;\n\t}\n};\n\n/**\n * Plugin extension hooks.\n * @interface IPlugin\n * @since 2.1.0\n */\n/**\n * @method IPlugin#beforeInit\n * @desc Called before initializing `chart`.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#afterInit\n * @desc Called after `chart` has been initialized and before the first update.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeUpdate\n * @desc Called before updating `chart`. If any plugin returns `false`, the update\n * is cancelled (and thus subsequent render(s)) until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart update.\n */\n/**\n * @method IPlugin#afterUpdate\n * @desc Called after `chart` has been updated and before rendering. Note that this\n * hook will not be called if the chart update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetsUpdate\n * @desc Called before updating the `chart` datasets. If any plugin returns `false`,\n * the datasets update is cancelled until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} false to cancel the datasets update.\n * @since version 2.1.5\n*/\n/**\n * @method IPlugin#afterDatasetsUpdate\n * @desc Called after the `chart` datasets have been updated. Note that this hook\n * will not be called if the datasets update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @since version 2.1.5\n */\n/**\n * @method IPlugin#beforeDatasetUpdate\n * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin\n * returns `false`, the datasets update is cancelled until another `update` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetUpdate\n * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note\n * that this hook will not be called if the datasets update has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeLayout\n * @desc Called before laying out `chart`. If any plugin returns `false`,\n * the layout update is cancelled until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart layout.\n */\n/**\n * @method IPlugin#afterLayout\n * @desc Called after the `chart` has been layed out. Note that this hook will not\n * be called if the layout update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeRender\n * @desc Called before rendering `chart`. If any plugin returns `false`,\n * the rendering is cancelled until another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart rendering.\n */\n/**\n * @method IPlugin#afterRender\n * @desc Called after the `chart` has been fully rendered (and animation completed). Note\n * that this hook will not be called if the rendering has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDraw\n * @desc Called before drawing `chart` at every animation frame specified by the given\n * easing value. If any plugin returns `false`, the frame drawing is cancelled until\n * another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart drawing.\n */\n/**\n * @method IPlugin#afterDraw\n * @desc Called after the `chart` has been drawn for the specific easing value. Note\n * that this hook will not be called if the drawing has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetsDraw\n * @desc Called before drawing the `chart` datasets. If any plugin returns `false`,\n * the datasets drawing is cancelled until another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetsDraw\n * @desc Called after the `chart` datasets have been drawn. Note that this hook\n * will not be called if the datasets drawing has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetDraw\n * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets\n * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing\n * is cancelled until another `render` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetDraw\n * @desc Called after the `chart` datasets at the given `args.index` have been drawn\n * (datasets are drawn in the reverse order). Note that this hook will not be called\n * if the datasets drawing has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeTooltipDraw\n * @desc Called before drawing the `tooltip`. If any plugin returns `false`,\n * the tooltip drawing is cancelled until another `render` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Object} args.tooltip - The tooltip.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart tooltip drawing.\n */\n/**\n * @method IPlugin#afterTooltipDraw\n * @desc Called after drawing the `tooltip`. Note that this hook will not\n * be called if the tooltip drawing has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Object} args.tooltip - The tooltip.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeEvent\n * @desc Called before processing the specified `event`. If any plugin returns `false`,\n * the event will be discarded.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {IEvent} event - The event object.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#afterEvent\n * @desc Called after the `event` has been consumed. Note that this hook\n * will not be called if the `event` has been previously discarded.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {IEvent} event - The event object.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#resize\n * @desc Called after the chart as been resized.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} size - The new canvas display size (eq. canvas.style width & height).\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#destroy\n * @desc Called after the chart as been destroyed.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n\n},{\"26\":26,\"46\":46}],33:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\nvar Ticks = require(35);\n\ndefaults._set('scale', {\n\tdisplay: true,\n\tposition: 'left',\n\toffset: false,\n\n\t// grid line settings\n\tgridLines: {\n\t\tdisplay: true,\n\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\tlineWidth: 1,\n\t\tdrawBorder: true,\n\t\tdrawOnChartArea: true,\n\t\tdrawTicks: true,\n\t\ttickMarkLength: 10,\n\t\tzeroLineWidth: 1,\n\t\tzeroLineColor: 'rgba(0,0,0,0.25)',\n\t\tzeroLineBorderDash: [],\n\t\tzeroLineBorderDashOffset: 0.0,\n\t\toffsetGridLines: false,\n\t\tborderDash: [],\n\t\tborderDashOffset: 0.0\n\t},\n\n\t// scale label\n\tscaleLabel: {\n\t\t// display property\n\t\tdisplay: false,\n\n\t\t// actual label\n\t\tlabelString: '',\n\n\t\t// line height\n\t\tlineHeight: 1.2,\n\n\t\t// top/bottom padding\n\t\tpadding: {\n\t\t\ttop: 4,\n\t\t\tbottom: 4\n\t\t}\n\t},\n\n\t// label settings\n\tticks: {\n\t\tbeginAtZero: false,\n\t\tminRotation: 0,\n\t\tmaxRotation: 50,\n\t\tmirror: false,\n\t\tpadding: 0,\n\t\treverse: false,\n\t\tdisplay: true,\n\t\tautoSkip: true,\n\t\tautoSkipPadding: 0,\n\t\tlabelOffset: 0,\n\t\t// We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n\t\tcallback: Ticks.formatters.values,\n\t\tminor: {},\n\t\tmajor: {}\n\t}\n});\n\nfunction labelsFromTicks(ticks) {\n\tvar labels = [];\n\tvar i, ilen;\n\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\tlabels.push(ticks[i].label);\n\t}\n\n\treturn labels;\n}\n\nfunction getLineValue(scale, index, offsetGridLines) {\n\tvar lineValue = scale.getPixelForTick(index);\n\n\tif (offsetGridLines) {\n\t\tif (index === 0) {\n\t\t\tlineValue -= (scale.getPixelForTick(1) - lineValue) / 2;\n\t\t} else {\n\t\t\tlineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2;\n\t\t}\n\t}\n\treturn lineValue;\n}\n\nfunction computeTextSize(context, tick, font) {\n\treturn helpers.isArray(tick) ?\n\t\thelpers.longestText(context, font, tick) :\n\t\tcontext.measureText(tick).width;\n}\n\nfunction parseFontOptions(options) {\n\tvar valueOrDefault = helpers.valueOrDefault;\n\tvar globalDefaults = defaults.global;\n\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\n\tvar style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle);\n\tvar family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily);\n\n\treturn {\n\t\tsize: size,\n\t\tstyle: style,\n\t\tfamily: family,\n\t\tfont: helpers.fontString(size, style, family)\n\t};\n}\n\nfunction parseLineHeight(options) {\n\treturn helpers.options.toLineHeight(\n\t\thelpers.valueOrDefault(options.lineHeight, 1.2),\n\t\thelpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize));\n}\n\nmodule.exports = Element.extend({\n\t/**\n\t * Get the padding needed for the scale\n\t * @method getPadding\n\t * @private\n\t * @returns {Padding} the necessary padding\n\t */\n\tgetPadding: function() {\n\t\tvar me = this;\n\t\treturn {\n\t\t\tleft: me.paddingLeft || 0,\n\t\t\ttop: me.paddingTop || 0,\n\t\t\tright: me.paddingRight || 0,\n\t\t\tbottom: me.paddingBottom || 0\n\t\t};\n\t},\n\n\t/**\n\t * Returns the scale tick objects ({label, major})\n\t * @since 2.7\n\t */\n\tgetTicks: function() {\n\t\treturn this._ticks;\n\t},\n\n\t// These methods are ordered by lifecyle. Utilities then follow.\n\t// Any function defined here is inherited by all scale types.\n\t// Any function can be extended by the scale type\n\n\tmergeTicksOptions: function() {\n\t\tvar ticks = this.options.ticks;\n\t\tif (ticks.minor === false) {\n\t\t\tticks.minor = {\n\t\t\t\tdisplay: false\n\t\t\t};\n\t\t}\n\t\tif (ticks.major === false) {\n\t\t\tticks.major = {\n\t\t\t\tdisplay: false\n\t\t\t};\n\t\t}\n\t\tfor (var key in ticks) {\n\t\t\tif (key !== 'major' && key !== 'minor') {\n\t\t\t\tif (typeof ticks.minor[key] === 'undefined') {\n\t\t\t\t\tticks.minor[key] = ticks[key];\n\t\t\t\t}\n\t\t\t\tif (typeof ticks.major[key] === 'undefined') {\n\t\t\t\t\tticks.major[key] = ticks[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tbeforeUpdate: function() {\n\t\thelpers.callback(this.options.beforeUpdate, [this]);\n\t},\n\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\t\tvar i, ilen, labels, label, ticks, tick;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = helpers.extend({\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\ttop: 0,\n\t\t\tbottom: 0\n\t\t}, margins);\n\t\tme.longestTextCache = me.longestTextCache || {};\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\n\t\t// Data min/max\n\t\tme.beforeDataLimits();\n\t\tme.determineDataLimits();\n\t\tme.afterDataLimits();\n\n\t\t// Ticks - `this.ticks` is now DEPRECATED!\n\t\t// Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\n\t\t// and must not be accessed directly from outside this class. `this.ticks` being\n\t\t// around for long time and not marked as private, we can't change its structure\n\t\t// without unexpected breaking changes. If you need to access the scale ticks,\n\t\t// use scale.getTicks() instead.\n\n\t\tme.beforeBuildTicks();\n\n\t\t// New implementations should return an array of objects but for BACKWARD COMPAT,\n\t\t// we still support no return (`this.ticks` internally set by calling this method).\n\t\tticks = me.buildTicks() || [];\n\n\t\tme.afterBuildTicks();\n\n\t\tme.beforeTickToLabelConversion();\n\n\t\t// New implementations should return the formatted tick labels but for BACKWARD\n\t\t// COMPAT, we still support no return (`this.ticks` internally changed by calling\n\t\t// this method and supposed to contain only string values).\n\t\tlabels = me.convertTicksToLabels(ticks) || me.ticks;\n\n\t\tme.afterTickToLabelConversion();\n\n\t\tme.ticks = labels;   // BACKWARD COMPATIBILITY\n\n\t\t// IMPORTANT: from this point, we consider that `this.ticks` will NEVER change!\n\n\t\t// BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\t\tlabel = labels[i];\n\t\t\ttick = ticks[i];\n\t\t\tif (!tick) {\n\t\t\t\tticks.push(tick = {\n\t\t\t\t\tlabel: label,\n\t\t\t\t\tmajor: false\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttick.label = label;\n\t\t\t}\n\t\t}\n\n\t\tme._ticks = ticks;\n\n\t\t// Tick Rotation\n\t\tme.beforeCalculateTickRotation();\n\t\tme.calculateTickRotation();\n\t\tme.afterCalculateTickRotation();\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\n\t},\n\tafterUpdate: function() {\n\t\thelpers.callback(this.options.afterUpdate, [this]);\n\t},\n\n\t//\n\n\tbeforeSetDimensions: function() {\n\t\thelpers.callback(this.options.beforeSetDimensions, [this]);\n\t},\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\t},\n\tafterSetDimensions: function() {\n\t\thelpers.callback(this.options.afterSetDimensions, [this]);\n\t},\n\n\t// Data limits\n\tbeforeDataLimits: function() {\n\t\thelpers.callback(this.options.beforeDataLimits, [this]);\n\t},\n\tdetermineDataLimits: helpers.noop,\n\tafterDataLimits: function() {\n\t\thelpers.callback(this.options.afterDataLimits, [this]);\n\t},\n\n\t//\n\tbeforeBuildTicks: function() {\n\t\thelpers.callback(this.options.beforeBuildTicks, [this]);\n\t},\n\tbuildTicks: helpers.noop,\n\tafterBuildTicks: function() {\n\t\thelpers.callback(this.options.afterBuildTicks, [this]);\n\t},\n\n\tbeforeTickToLabelConversion: function() {\n\t\thelpers.callback(this.options.beforeTickToLabelConversion, [this]);\n\t},\n\tconvertTicksToLabels: function() {\n\t\tvar me = this;\n\t\t// Convert ticks to strings\n\t\tvar tickOpts = me.options.ticks;\n\t\tme.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\n\t},\n\tafterTickToLabelConversion: function() {\n\t\thelpers.callback(this.options.afterTickToLabelConversion, [this]);\n\t},\n\n\t//\n\n\tbeforeCalculateTickRotation: function() {\n\t\thelpers.callback(this.options.beforeCalculateTickRotation, [this]);\n\t},\n\tcalculateTickRotation: function() {\n\t\tvar me = this;\n\t\tvar context = me.ctx;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar labels = labelsFromTicks(me._ticks);\n\n\t\t// Get the width of each grid by calculating the difference\n\t\t// between x offsets between 0 and 1.\n\t\tvar tickFont = parseFontOptions(tickOpts);\n\t\tcontext.font = tickFont.font;\n\n\t\tvar labelRotation = tickOpts.minRotation || 0;\n\n\t\tif (labels.length && me.options.display && me.isHorizontal()) {\n\t\t\tvar originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache);\n\t\t\tvar labelWidth = originalLabelWidth;\n\t\t\tvar cosRotation, sinRotation;\n\n\t\t\t// Allow 3 pixels x2 padding either side for label readability\n\t\t\tvar tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6;\n\n\t\t\t// Max label rotation can be set or default to 90 - also act as a loop counter\n\t\t\twhile (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) {\n\t\t\t\tvar angleRadians = helpers.toRadians(labelRotation);\n\t\t\t\tcosRotation = Math.cos(angleRadians);\n\t\t\t\tsinRotation = Math.sin(angleRadians);\n\n\t\t\t\tif (sinRotation * originalLabelWidth > me.maxHeight) {\n\t\t\t\t\t// go back one step\n\t\t\t\t\tlabelRotation--;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tlabelRotation++;\n\t\t\t\tlabelWidth = cosRotation * originalLabelWidth;\n\t\t\t}\n\t\t}\n\n\t\tme.labelRotation = labelRotation;\n\t},\n\tafterCalculateTickRotation: function() {\n\t\thelpers.callback(this.options.afterCalculateTickRotation, [this]);\n\t},\n\n\t//\n\n\tbeforeFit: function() {\n\t\thelpers.callback(this.options.beforeFit, [this]);\n\t},\n\tfit: function() {\n\t\tvar me = this;\n\t\t// Reset\n\t\tvar minSize = me.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\n\t\tvar labels = labelsFromTicks(me._ticks);\n\n\t\tvar opts = me.options;\n\t\tvar tickOpts = opts.ticks;\n\t\tvar scaleLabelOpts = opts.scaleLabel;\n\t\tvar gridLineOpts = opts.gridLines;\n\t\tvar display = opts.display;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tvar tickFont = parseFontOptions(tickOpts);\n\t\tvar tickMarkLength = opts.gridLines.tickMarkLength;\n\n\t\t// Width\n\t\tif (isHorizontal) {\n\t\t\t// subtract the margins to line up with the chartArea if we are a full width scale\n\t\t\tminSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth;\n\t\t} else {\n\t\t\tminSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t}\n\n\t\t// height\n\t\tif (isHorizontal) {\n\t\t\tminSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t} else {\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\t// Are we showing a title for the scale?\n\t\tif (scaleLabelOpts.display && display) {\n\t\t\tvar scaleLabelLineHeight = parseLineHeight(scaleLabelOpts);\n\t\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding);\n\t\t\tvar deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize.height += deltaHeight;\n\t\t\t} else {\n\t\t\t\tminSize.width += deltaHeight;\n\t\t\t}\n\t\t}\n\n\t\t// Don't bother fitting the ticks if we are not showing them\n\t\tif (tickOpts.display && display) {\n\t\t\tvar largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache);\n\t\t\tvar tallestLabelHeightInLines = helpers.numberOfLabelLines(labels);\n\t\t\tvar lineSpace = tickFont.size * 0.5;\n\t\t\tvar tickPadding = me.options.ticks.padding;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\t// A horizontal axis is more constrained by the height.\n\t\t\t\tme.longestLabelWidth = largestTextWidth;\n\n\t\t\t\tvar angleRadians = helpers.toRadians(me.labelRotation);\n\t\t\t\tvar cosRotation = Math.cos(angleRadians);\n\t\t\t\tvar sinRotation = Math.sin(angleRadians);\n\n\t\t\t\t// TODO - improve this calculation\n\t\t\t\tvar labelHeight = (sinRotation * largestTextWidth)\n\t\t\t\t\t+ (tickFont.size * tallestLabelHeightInLines)\n\t\t\t\t\t+ (lineSpace * (tallestLabelHeightInLines - 1))\n\t\t\t\t\t+ lineSpace; // padding\n\n\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\n\n\t\t\t\tme.ctx.font = tickFont.font;\n\t\t\t\tvar firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font);\n\t\t\t\tvar lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font);\n\n\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n\t\t\t\t// which means that the right padding is dominated by the font height\n\t\t\t\tif (me.labelRotation !== 0) {\n\t\t\t\t\tme.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges\n\t\t\t\t\tme.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3;\n\t\t\t\t} else {\n\t\t\t\t\tme.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges\n\t\t\t\t\tme.paddingRight = lastLabelWidth / 2 + 3;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// A vertical axis is more constrained by the width. Labels are the\n\t\t\t\t// dominant factor here, so get that length first and account for padding\n\t\t\t\tif (tickOpts.mirror) {\n\t\t\t\t\tlargestTextWidth = 0;\n\t\t\t\t} else {\n\t\t\t\t\t// use lineSpace for consistency with horizontal axis\n\t\t\t\t\t// tickPadding is not implemented for horizontal\n\t\t\t\t\tlargestTextWidth += tickPadding + lineSpace;\n\t\t\t\t}\n\n\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth);\n\n\t\t\t\tme.paddingTop = tickFont.size / 2;\n\t\t\t\tme.paddingBottom = tickFont.size / 2;\n\t\t\t}\n\t\t}\n\n\t\tme.handleMargins();\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\t},\n\n\t/**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n\thandleMargins: function() {\n\t\tvar me = this;\n\t\tif (me.margins) {\n\t\t\tme.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0);\n\t\t\tme.paddingTop = Math.max(me.paddingTop - me.margins.top, 0);\n\t\t\tme.paddingRight = Math.max(me.paddingRight - me.margins.right, 0);\n\t\t\tme.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0);\n\t\t}\n\t},\n\n\tafterFit: function() {\n\t\thelpers.callback(this.options.afterFit, [this]);\n\t},\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t},\n\tisFullWidth: function() {\n\t\treturn (this.options.fullWidth);\n\t},\n\n\t// Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not\n\tgetRightValue: function(rawValue) {\n\t\t// Null and undefined values first\n\t\tif (helpers.isNullOrUndef(rawValue)) {\n\t\t\treturn NaN;\n\t\t}\n\t\t// isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\n\t\tif (typeof rawValue === 'number' && !isFinite(rawValue)) {\n\t\t\treturn NaN;\n\t\t}\n\t\t// If it is in fact an object, dive in one more level\n\t\tif (rawValue) {\n\t\t\tif (this.isHorizontal()) {\n\t\t\t\tif (rawValue.x !== undefined) {\n\t\t\t\t\treturn this.getRightValue(rawValue.x);\n\t\t\t\t}\n\t\t\t} else if (rawValue.y !== undefined) {\n\t\t\t\treturn this.getRightValue(rawValue.y);\n\t\t\t}\n\t\t}\n\n\t\t// Value is good, return it\n\t\treturn rawValue;\n\t},\n\n\t/**\n\t * Used to get the value to display in the tooltip for the data at the given index\n\t * @param index\n\t * @param datasetIndex\n\t */\n\tgetLabelForIndex: helpers.noop,\n\n\t/**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param value\n\t * @param index\n\t * @param datasetIndex\n\t */\n\tgetPixelForValue: helpers.noop,\n\n\t/**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param pixel\n\t */\n\tgetValueForPixel: helpers.noop,\n\n\t/**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetPixelForTick: function(index) {\n\t\tvar me = this;\n\t\tvar offset = me.options.offset;\n\t\tif (me.isHorizontal()) {\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\tvar tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n\t\t\tvar pixel = (tickWidth * index) + me.paddingLeft;\n\n\t\t\tif (offset) {\n\t\t\t\tpixel += tickWidth / 2;\n\t\t\t}\n\n\t\t\tvar finalVal = me.left + Math.round(pixel);\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\treturn finalVal;\n\t\t}\n\t\tvar innerHeight = me.height - (me.paddingTop + me.paddingBottom);\n\t\treturn me.top + (index * (innerHeight / (me._ticks.length - 1)));\n\t},\n\n\t/**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetPixelForDecimal: function(decimal) {\n\t\tvar me = this;\n\t\tif (me.isHorizontal()) {\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\tvar valueOffset = (innerWidth * decimal) + me.paddingLeft;\n\n\t\t\tvar finalVal = me.left + Math.round(valueOffset);\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\treturn finalVal;\n\t\t}\n\t\treturn me.top + (decimal * me.height);\n\t},\n\n\t/**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetBasePixel: function() {\n\t\treturn this.getPixelForValue(this.getBaseValue());\n\t},\n\n\tgetBaseValue: function() {\n\t\tvar me = this;\n\t\tvar min = me.min;\n\t\tvar max = me.max;\n\n\t\treturn me.beginAtZero ? 0 :\n\t\t\tmin < 0 && max < 0 ? max :\n\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t0;\n\t},\n\n\t/**\n\t * Returns a subset of ticks to be plotted to avoid overlapping labels.\n\t * @private\n\t */\n\t_autoSkip: function(ticks) {\n\t\tvar skipRatio;\n\t\tvar me = this;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tvar optionTicks = me.options.ticks.minor;\n\t\tvar tickCount = ticks.length;\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\n\t\tvar cosRotation = Math.cos(labelRotationRadians);\n\t\tvar longestRotatedLabel = me.longestLabelWidth * cosRotation;\n\t\tvar result = [];\n\t\tvar i, tick, shouldSkip;\n\n\t\t// figure out the maximum number of gridlines to show\n\t\tvar maxTicks;\n\t\tif (optionTicks.maxTicksLimit) {\n\t\t\tmaxTicks = optionTicks.maxTicksLimit;\n\t\t}\n\n\t\tif (isHorizontal) {\n\t\t\tskipRatio = false;\n\n\t\t\tif ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) {\n\t\t\t\tskipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight)));\n\t\t\t}\n\n\t\t\t// if they defined a max number of optionTicks,\n\t\t\t// increase skipRatio until that number is met\n\t\t\tif (maxTicks && tickCount > maxTicks) {\n\t\t\t\tskipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks));\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < tickCount; i++) {\n\t\t\ttick = ticks[i];\n\n\t\t\t// Since we always show the last tick,we need may need to hide the last shown one before\n\t\t\tshouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount);\n\t\t\tif (shouldSkip && i !== tickCount - 1) {\n\t\t\t\t// leave tick in place but make sure it's not displayed (#4635)\n\t\t\t\tdelete tick.label;\n\t\t\t}\n\t\t\tresult.push(tick);\n\t\t}\n\t\treturn result;\n\t},\n\n\t// Actually draw the scale on the canvas\n\t// @param {rectangle} chartArea : the area of the chart to draw full grid lines on\n\tdraw: function(chartArea) {\n\t\tvar me = this;\n\t\tvar options = me.options;\n\t\tif (!options.display) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar context = me.ctx;\n\t\tvar globalDefaults = defaults.global;\n\t\tvar optionTicks = options.ticks.minor;\n\t\tvar optionMajorTicks = options.ticks.major || optionTicks;\n\t\tvar gridLines = options.gridLines;\n\t\tvar scaleLabel = options.scaleLabel;\n\n\t\tvar isRotated = me.labelRotation !== 0;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tvar ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks();\n\t\tvar tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor);\n\t\tvar tickFont = parseFontOptions(optionTicks);\n\t\tvar majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor);\n\t\tvar majorTickFont = parseFontOptions(optionMajorTicks);\n\n\t\tvar tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0;\n\n\t\tvar scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor);\n\t\tvar scaleLabelFont = parseFontOptions(scaleLabel);\n\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding);\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\n\n\t\tvar itemsToDraw = [];\n\n\t\tvar axisWidth = me.options.gridLines.lineWidth;\n\t\tvar xTickStart = options.position === 'right' ? me.left : me.right - axisWidth - tl;\n\t\tvar xTickEnd = options.position === 'right' ? me.left + tl : me.right;\n\t\tvar yTickStart = options.position === 'bottom' ? me.top + axisWidth : me.bottom - tl - axisWidth;\n\t\tvar yTickEnd = options.position === 'bottom' ? me.top + axisWidth + tl : me.bottom + axisWidth;\n\n\t\thelpers.each(ticks, function(tick, index) {\n\t\t\t// autoskipper skipped this tick (#4635)\n\t\t\tif (helpers.isNullOrUndef(tick.label)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar label = tick.label;\n\t\t\tvar lineWidth, lineColor, borderDash, borderDashOffset;\n\t\t\tif (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) {\n\t\t\t\t// Draw the first index specially\n\t\t\t\tlineWidth = gridLines.zeroLineWidth;\n\t\t\t\tlineColor = gridLines.zeroLineColor;\n\t\t\t\tborderDash = gridLines.zeroLineBorderDash;\n\t\t\t\tborderDashOffset = gridLines.zeroLineBorderDashOffset;\n\t\t\t} else {\n\t\t\t\tlineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index);\n\t\t\t\tlineColor = helpers.valueAtIndexOrDefault(gridLines.color, index);\n\t\t\t\tborderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash);\n\t\t\t\tborderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset);\n\t\t\t}\n\n\t\t\t// Common properties\n\t\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY;\n\t\t\tvar textAlign = 'middle';\n\t\t\tvar textBaseline = 'middle';\n\t\t\tvar tickPadding = optionTicks.padding;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tvar labelYOffset = tl + tickPadding;\n\n\t\t\t\tif (options.position === 'bottom') {\n\t\t\t\t\t// bottom\n\t\t\t\t\ttextBaseline = !isRotated ? 'top' : 'middle';\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'right';\n\t\t\t\t\tlabelY = me.top + labelYOffset;\n\t\t\t\t} else {\n\t\t\t\t\t// top\n\t\t\t\t\ttextBaseline = !isRotated ? 'bottom' : 'middle';\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'left';\n\t\t\t\t\tlabelY = me.bottom - labelYOffset;\n\t\t\t\t}\n\n\t\t\t\tvar xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\n\t\t\t\tif (xLineValue < me.left) {\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\n\t\t\t\t}\n\t\t\t\txLineValue += helpers.aliasPixel(lineWidth);\n\n\t\t\t\tlabelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option)\n\n\t\t\t\ttx1 = tx2 = x1 = x2 = xLineValue;\n\t\t\t\tty1 = yTickStart;\n\t\t\t\tty2 = yTickEnd;\n\t\t\t\ty1 = chartArea.top;\n\t\t\t\ty2 = chartArea.bottom + axisWidth;\n\t\t\t} else {\n\t\t\t\tvar isLeft = options.position === 'left';\n\t\t\t\tvar labelXOffset;\n\n\t\t\t\tif (optionTicks.mirror) {\n\t\t\t\t\ttextAlign = isLeft ? 'left' : 'right';\n\t\t\t\t\tlabelXOffset = tickPadding;\n\t\t\t\t} else {\n\t\t\t\t\ttextAlign = isLeft ? 'right' : 'left';\n\t\t\t\t\tlabelXOffset = tl + tickPadding;\n\t\t\t\t}\n\n\t\t\t\tlabelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset;\n\n\t\t\t\tvar yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\n\t\t\t\tif (yLineValue < me.top) {\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\n\t\t\t\t}\n\t\t\t\tyLineValue += helpers.aliasPixel(lineWidth);\n\n\t\t\t\tlabelY = me.getPixelForTick(index) + optionTicks.labelOffset;\n\n\t\t\t\ttx1 = xTickStart;\n\t\t\t\ttx2 = xTickEnd;\n\t\t\t\tx1 = chartArea.left;\n\t\t\t\tx2 = chartArea.right + axisWidth;\n\t\t\t\tty1 = ty2 = y1 = y2 = yLineValue;\n\t\t\t}\n\n\t\t\titemsToDraw.push({\n\t\t\t\ttx1: tx1,\n\t\t\t\tty1: ty1,\n\t\t\t\ttx2: tx2,\n\t\t\t\tty2: ty2,\n\t\t\t\tx1: x1,\n\t\t\t\ty1: y1,\n\t\t\t\tx2: x2,\n\t\t\t\ty2: y2,\n\t\t\t\tlabelX: labelX,\n\t\t\t\tlabelY: labelY,\n\t\t\t\tglWidth: lineWidth,\n\t\t\t\tglColor: lineColor,\n\t\t\t\tglBorderDash: borderDash,\n\t\t\t\tglBorderDashOffset: borderDashOffset,\n\t\t\t\trotation: -1 * labelRotationRadians,\n\t\t\t\tlabel: label,\n\t\t\t\tmajor: tick.major,\n\t\t\t\ttextBaseline: textBaseline,\n\t\t\t\ttextAlign: textAlign\n\t\t\t});\n\t\t});\n\n\t\t// Draw all of the tick labels, tick marks, and grid lines at the correct places\n\t\thelpers.each(itemsToDraw, function(itemToDraw) {\n\t\t\tif (gridLines.display) {\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.lineWidth = itemToDraw.glWidth;\n\t\t\t\tcontext.strokeStyle = itemToDraw.glColor;\n\t\t\t\tif (context.setLineDash) {\n\t\t\t\t\tcontext.setLineDash(itemToDraw.glBorderDash);\n\t\t\t\t\tcontext.lineDashOffset = itemToDraw.glBorderDashOffset;\n\t\t\t\t}\n\n\t\t\t\tcontext.beginPath();\n\n\t\t\t\tif (gridLines.drawTicks) {\n\t\t\t\t\tcontext.moveTo(itemToDraw.tx1, itemToDraw.ty1);\n\t\t\t\t\tcontext.lineTo(itemToDraw.tx2, itemToDraw.ty2);\n\t\t\t\t}\n\n\t\t\t\tif (gridLines.drawOnChartArea) {\n\t\t\t\t\tcontext.moveTo(itemToDraw.x1, itemToDraw.y1);\n\t\t\t\t\tcontext.lineTo(itemToDraw.x2, itemToDraw.y2);\n\t\t\t\t}\n\n\t\t\t\tcontext.stroke();\n\t\t\t\tcontext.restore();\n\t\t\t}\n\n\t\t\tif (optionTicks.display) {\n\t\t\t\t// Make sure we draw text in the correct color and font\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.translate(itemToDraw.labelX, itemToDraw.labelY);\n\t\t\t\tcontext.rotate(itemToDraw.rotation);\n\t\t\t\tcontext.font = itemToDraw.major ? majorTickFont.font : tickFont.font;\n\t\t\t\tcontext.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor;\n\t\t\t\tcontext.textBaseline = itemToDraw.textBaseline;\n\t\t\t\tcontext.textAlign = itemToDraw.textAlign;\n\n\t\t\t\tvar label = itemToDraw.label;\n\t\t\t\tif (helpers.isArray(label)) {\n\t\t\t\t\tvar lineCount = label.length;\n\t\t\t\t\tvar lineHeight = tickFont.size * 1.5;\n\t\t\t\t\tvar y = me.isHorizontal() ? 0 : -lineHeight * (lineCount - 1) / 2;\n\n\t\t\t\t\tfor (var i = 0; i < lineCount; ++i) {\n\t\t\t\t\t\t// We just make sure the multiline element is a string here..\n\t\t\t\t\t\tcontext.fillText('' + label[i], 0, y);\n\t\t\t\t\t\t// apply same lineSpacing as calculated @ L#320\n\t\t\t\t\t\ty += lineHeight;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcontext.fillText(label, 0, 0);\n\t\t\t\t}\n\t\t\t\tcontext.restore();\n\t\t\t}\n\t\t});\n\n\t\tif (scaleLabel.display) {\n\t\t\t// Draw the scale label\n\t\t\tvar scaleLabelX;\n\t\t\tvar scaleLabelY;\n\t\t\tvar rotation = 0;\n\t\t\tvar halfLineHeight = parseLineHeight(scaleLabel) / 2;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tscaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width\n\t\t\t\tscaleLabelY = options.position === 'bottom'\n\t\t\t\t\t? me.bottom - halfLineHeight - scaleLabelPadding.bottom\n\t\t\t\t\t: me.top + halfLineHeight + scaleLabelPadding.top;\n\t\t\t} else {\n\t\t\t\tvar isLeft = options.position === 'left';\n\t\t\t\tscaleLabelX = isLeft\n\t\t\t\t\t? me.left + halfLineHeight + scaleLabelPadding.top\n\t\t\t\t\t: me.right - halfLineHeight - scaleLabelPadding.top;\n\t\t\t\tscaleLabelY = me.top + ((me.bottom - me.top) / 2);\n\t\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\n\t\t\t}\n\n\t\t\tcontext.save();\n\t\t\tcontext.translate(scaleLabelX, scaleLabelY);\n\t\t\tcontext.rotate(rotation);\n\t\t\tcontext.textAlign = 'center';\n\t\t\tcontext.textBaseline = 'middle';\n\t\t\tcontext.fillStyle = scaleLabelFontColor; // render in correct colour\n\t\t\tcontext.font = scaleLabelFont.font;\n\t\t\tcontext.fillText(scaleLabel.labelString, 0, 0);\n\t\t\tcontext.restore();\n\t\t}\n\n\t\tif (gridLines.drawBorder) {\n\t\t\t// Draw the line at the edge of the axis\n\t\t\tcontext.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0);\n\t\t\tcontext.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0);\n\t\t\tvar x1 = me.left;\n\t\t\tvar x2 = me.right + axisWidth;\n\t\t\tvar y1 = me.top;\n\t\t\tvar y2 = me.bottom + axisWidth;\n\n\t\t\tvar aliasPixel = helpers.aliasPixel(context.lineWidth);\n\t\t\tif (isHorizontal) {\n\t\t\t\ty1 = y2 = options.position === 'top' ? me.bottom : me.top;\n\t\t\t\ty1 += aliasPixel;\n\t\t\t\ty2 += aliasPixel;\n\t\t\t} else {\n\t\t\t\tx1 = x2 = options.position === 'left' ? me.right : me.left;\n\t\t\t\tx1 += aliasPixel;\n\t\t\t\tx2 += aliasPixel;\n\t\t\t}\n\n\t\t\tcontext.beginPath();\n\t\t\tcontext.moveTo(x1, y1);\n\t\t\tcontext.lineTo(x2, y2);\n\t\t\tcontext.stroke();\n\t\t}\n\t}\n});\n\n},{\"26\":26,\"27\":27,\"35\":35,\"46\":46}],34:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar helpers = require(46);\nvar layouts = require(31);\n\nmodule.exports = {\n\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\n\t// use the new chart options to grab the correct scale\n\tconstructors: {},\n\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\n\t// old browsers\n\n\t// Scale config defaults\n\tdefaults: {},\n\tregisterScaleType: function(type, scaleConstructor, scaleDefaults) {\n\t\tthis.constructors[type] = scaleConstructor;\n\t\tthis.defaults[type] = helpers.clone(scaleDefaults);\n\t},\n\tgetScaleConstructor: function(type) {\n\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\n\t},\n\tgetScaleDefaults: function(type) {\n\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\n\t\treturn this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {};\n\t},\n\tupdateScaleDefaults: function(type, additions) {\n\t\tvar me = this;\n\t\tif (me.defaults.hasOwnProperty(type)) {\n\t\t\tme.defaults[type] = helpers.extend(me.defaults[type], additions);\n\t\t}\n\t},\n\taddScalesToLayout: function(chart) {\n\t\t// Adds each scale to the chart.boxes array to be sized accordingly\n\t\thelpers.each(chart.scales, function(scale) {\n\t\t\t// Set ILayoutItem parameters for backwards compatibility\n\t\t\tscale.fullWidth = scale.options.fullWidth;\n\t\t\tscale.position = scale.options.position;\n\t\t\tscale.weight = scale.options.weight;\n\t\t\tlayouts.addBox(chart, scale);\n\t\t});\n\t}\n};\n\n},{\"26\":26,\"31\":31,\"46\":46}],35:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nmodule.exports = {\n\t/**\n\t * Namespace to hold formatters for different types of ticks\n\t * @namespace Chart.Ticks.formatters\n\t */\n\tformatters: {\n\t\t/**\n\t\t * Formatter for value labels\n\t\t * @method Chart.Ticks.formatters.values\n\t\t * @param value the value to display\n\t\t * @return {String|Array} the label to display\n\t\t */\n\t\tvalues: function(value) {\n\t\t\treturn helpers.isArray(value) ? value : '' + value;\n\t\t},\n\n\t\t/**\n\t\t * Formatter for linear numeric ticks\n\t\t * @method Chart.Ticks.formatters.linear\n\t\t * @param tickValue {Number} the value to be formatted\n\t\t * @param index {Number} the position of the tickValue parameter in the ticks array\n\t\t * @param ticks {Array<Number>} the list of ticks being converted\n\t\t * @return {String} string representation of the tickValue parameter\n\t\t */\n\t\tlinear: function(tickValue, index, ticks) {\n\t\t\t// If we have lots of ticks, don't use the ones\n\t\t\tvar delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\n\n\t\t\t// If we have a number like 2.5 as the delta, figure out how many decimal places we need\n\t\t\tif (Math.abs(delta) > 1) {\n\t\t\t\tif (tickValue !== Math.floor(tickValue)) {\n\t\t\t\t\t// not an integer\n\t\t\t\t\tdelta = tickValue - Math.floor(tickValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar logDelta = helpers.log10(Math.abs(delta));\n\t\t\tvar tickString = '';\n\n\t\t\tif (tickValue !== 0) {\n\t\t\t\tvar maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\n\t\t\t\tif (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation\n\t\t\t\t\tvar logTick = helpers.log10(Math.abs(tickValue));\n\t\t\t\t\ttickString = tickValue.toExponential(Math.floor(logTick) - Math.floor(logDelta));\n\t\t\t\t} else {\n\t\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\n\t\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\n\t\t\t\t\ttickString = tickValue.toFixed(numDecimal);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttickString = '0'; // never show decimal places for 0\n\t\t\t}\n\n\t\t\treturn tickString;\n\t\t},\n\n\t\tlogarithmic: function(tickValue, index, ticks) {\n\t\t\tvar remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue))));\n\n\t\t\tif (tickValue === 0) {\n\t\t\t\treturn '0';\n\t\t\t} else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\n\t\t\t\treturn tickValue.toExponential();\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\t}\n};\n\n},{\"46\":46}],36:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\n\ndefaults._set('global', {\n\ttooltips: {\n\t\tenabled: true,\n\t\tcustom: null,\n\t\tmode: 'nearest',\n\t\tposition: 'average',\n\t\tintersect: true,\n\t\tbackgroundColor: 'rgba(0,0,0,0.8)',\n\t\ttitleFontStyle: 'bold',\n\t\ttitleSpacing: 2,\n\t\ttitleMarginBottom: 6,\n\t\ttitleFontColor: '#fff',\n\t\ttitleAlign: 'left',\n\t\tbodySpacing: 2,\n\t\tbodyFontColor: '#fff',\n\t\tbodyAlign: 'left',\n\t\tfooterFontStyle: 'bold',\n\t\tfooterSpacing: 2,\n\t\tfooterMarginTop: 6,\n\t\tfooterFontColor: '#fff',\n\t\tfooterAlign: 'left',\n\t\tyPadding: 6,\n\t\txPadding: 6,\n\t\tcaretPadding: 2,\n\t\tcaretSize: 5,\n\t\tcornerRadius: 6,\n\t\tmultiKeyBackground: '#fff',\n\t\tdisplayColors: true,\n\t\tborderColor: 'rgba(0,0,0,0)',\n\t\tborderWidth: 0,\n\t\tcallbacks: {\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeTitle: helpers.noop,\n\t\t\ttitle: function(tooltipItems, data) {\n\t\t\t\t// Pick first xLabel for now\n\t\t\t\tvar title = '';\n\t\t\t\tvar labels = data.labels;\n\t\t\t\tvar labelCount = labels ? labels.length : 0;\n\n\t\t\t\tif (tooltipItems.length > 0) {\n\t\t\t\t\tvar item = tooltipItems[0];\n\n\t\t\t\t\tif (item.xLabel) {\n\t\t\t\t\t\ttitle = item.xLabel;\n\t\t\t\t\t} else if (labelCount > 0 && item.index < labelCount) {\n\t\t\t\t\t\ttitle = labels[item.index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn title;\n\t\t\t},\n\t\t\tafterTitle: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeBody: helpers.noop,\n\n\t\t\t// Args are: (tooltipItem, data)\n\t\t\tbeforeLabel: helpers.noop,\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar label = data.datasets[tooltipItem.datasetIndex].label || '';\n\n\t\t\t\tif (label) {\n\t\t\t\t\tlabel += ': ';\n\t\t\t\t}\n\t\t\t\tlabel += tooltipItem.yLabel;\n\t\t\t\treturn label;\n\t\t\t},\n\t\t\tlabelColor: function(tooltipItem, chart) {\n\t\t\t\tvar meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\n\t\t\t\tvar activeElement = meta.data[tooltipItem.index];\n\t\t\t\tvar view = activeElement._view;\n\t\t\t\treturn {\n\t\t\t\t\tborderColor: view.borderColor,\n\t\t\t\t\tbackgroundColor: view.backgroundColor\n\t\t\t\t};\n\t\t\t},\n\t\t\tlabelTextColor: function() {\n\t\t\t\treturn this._options.bodyFontColor;\n\t\t\t},\n\t\t\tafterLabel: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tafterBody: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeFooter: helpers.noop,\n\t\t\tfooter: helpers.noop,\n\t\t\tafterFooter: helpers.noop\n\t\t}\n\t}\n});\n\nvar positioners = {\n\t/**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t * @function Chart.Tooltip.positioners.average\n\t * @param elements {ChartElement[]} the elements being displayed in the tooltip\n\t * @returns {Point} tooltip position\n\t */\n\taverage: function(elements) {\n\t\tif (!elements.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar i, len;\n\t\tvar x = 0;\n\t\tvar y = 0;\n\t\tvar count = 0;\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()) {\n\t\t\t\tvar pos = el.tooltipPosition();\n\t\t\t\tx += pos.x;\n\t\t\t\ty += pos.y;\n\t\t\t\t++count;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tx: Math.round(x / count),\n\t\t\ty: Math.round(y / count)\n\t\t};\n\t},\n\n\t/**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t * @function Chart.Tooltip.positioners.nearest\n\t * @param elements {Chart.Element[]} the tooltip elements\n\t * @param eventPosition {Point} the position of the event in canvas coordinates\n\t * @returns {Point} the tooltip position\n\t */\n\tnearest: function(elements, eventPosition) {\n\t\tvar x = eventPosition.x;\n\t\tvar y = eventPosition.y;\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\n\t\tvar i, len, nearestElement;\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()) {\n\t\t\t\tvar center = el.getCenterPoint();\n\t\t\t\tvar d = helpers.distanceBetweenPoints(eventPosition, center);\n\n\t\t\t\tif (d < minDistance) {\n\t\t\t\t\tminDistance = d;\n\t\t\t\t\tnearestElement = el;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (nearestElement) {\n\t\t\tvar tp = nearestElement.tooltipPosition();\n\t\t\tx = tp.x;\n\t\t\ty = tp.y;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t}\n};\n\n/**\n * Helper method to merge the opacity into a color\n */\nfunction mergeOpacity(colorString, opacity) {\n\tvar color = helpers.color(colorString);\n\treturn color.alpha(opacity * color.alpha()).rgbaString();\n}\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n\tif (toPush) {\n\t\tif (helpers.isArray(toPush)) {\n\t\t\t// base = base.concat(toPush);\n\t\t\tArray.prototype.push.apply(base, toPush);\n\t\t} else {\n\t\t\tbase.push(toPush);\n\t\t}\n\t}\n\n\treturn base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {String} value - The value to split by newline.\n * @returns {Array} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n\tif ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n\t\treturn str.split('\\n');\n\t}\n\treturn str;\n}\n\n\n// Private helper to create a tooltip item model\n// @param element : the chart element (point, arc, bar) to create the tooltip item for\n// @return : new tooltip item\nfunction createTooltipItem(element) {\n\tvar xScale = element._xScale;\n\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\n\tvar index = element._index;\n\tvar datasetIndex = element._datasetIndex;\n\n\treturn {\n\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tindex: index,\n\t\tdatasetIndex: datasetIndex,\n\t\tx: element._model.x,\n\t\ty: element._model.y\n\t};\n}\n\n/**\n * Helper to get the reset model for the tooltip\n * @param tooltipOpts {Object} the tooltip options\n */\nfunction getBaseModel(tooltipOpts) {\n\tvar globalDefaults = defaults.global;\n\tvar valueOrDefault = helpers.valueOrDefault;\n\n\treturn {\n\t\t// Positioning\n\t\txPadding: tooltipOpts.xPadding,\n\t\tyPadding: tooltipOpts.yPadding,\n\t\txAlign: tooltipOpts.xAlign,\n\t\tyAlign: tooltipOpts.yAlign,\n\n\t\t// Body\n\t\tbodyFontColor: tooltipOpts.bodyFontColor,\n\t\t_bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\n\t\t_bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\n\t\t_bodyAlign: tooltipOpts.bodyAlign,\n\t\tbodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\n\t\tbodySpacing: tooltipOpts.bodySpacing,\n\n\t\t// Title\n\t\ttitleFontColor: tooltipOpts.titleFontColor,\n\t\t_titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\n\t\t_titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\n\t\ttitleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\n\t\t_titleAlign: tooltipOpts.titleAlign,\n\t\ttitleSpacing: tooltipOpts.titleSpacing,\n\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\n\n\t\t// Footer\n\t\tfooterFontColor: tooltipOpts.footerFontColor,\n\t\t_footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\n\t\t_footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\n\t\tfooterFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\n\t\t_footerAlign: tooltipOpts.footerAlign,\n\t\tfooterSpacing: tooltipOpts.footerSpacing,\n\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\n\n\t\t// Appearance\n\t\tcaretSize: tooltipOpts.caretSize,\n\t\tcornerRadius: tooltipOpts.cornerRadius,\n\t\tbackgroundColor: tooltipOpts.backgroundColor,\n\t\topacity: 0,\n\t\tlegendColorBackground: tooltipOpts.multiKeyBackground,\n\t\tdisplayColors: tooltipOpts.displayColors,\n\t\tborderColor: tooltipOpts.borderColor,\n\t\tborderWidth: tooltipOpts.borderWidth\n\t};\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, model) {\n\tvar ctx = tooltip._chart.ctx;\n\n\tvar height = model.yPadding * 2; // Tooltip Padding\n\tvar width = 0;\n\n\t// Count of all lines in the body\n\tvar body = model.body;\n\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\n\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\n\t}, 0);\n\tcombinedBodyLength += model.beforeBody.length + model.afterBody.length;\n\n\tvar titleLineCount = model.title.length;\n\tvar footerLineCount = model.footer.length;\n\tvar titleFontSize = model.titleFontSize;\n\tvar bodyFontSize = model.bodyFontSize;\n\tvar footerFontSize = model.footerFontSize;\n\n\theight += titleLineCount * titleFontSize; // Title Lines\n\theight += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\n\theight += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\n\theight += combinedBodyLength * bodyFontSize; // Body Lines\n\theight += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\n\theight += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\n\theight += footerLineCount * (footerFontSize); // Footer Lines\n\theight += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\n\n\t// Title width\n\tvar widthPadding = 0;\n\tvar maxLineWidth = function(line) {\n\t\twidth = Math.max(width, ctx.measureText(line).width + widthPadding);\n\t};\n\n\tctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\n\thelpers.each(model.title, maxLineWidth);\n\n\t// Body width\n\tctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\n\thelpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\n\n\t// Body lines may include some extra width due to the color box\n\twidthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\n\thelpers.each(body, function(bodyItem) {\n\t\thelpers.each(bodyItem.before, maxLineWidth);\n\t\thelpers.each(bodyItem.lines, maxLineWidth);\n\t\thelpers.each(bodyItem.after, maxLineWidth);\n\t});\n\n\t// Reset back to 0\n\twidthPadding = 0;\n\n\t// Footer width\n\tctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\n\thelpers.each(model.footer, maxLineWidth);\n\n\t// Add padding\n\twidth += 2 * model.xPadding;\n\n\treturn {\n\t\twidth: width,\n\t\theight: height\n\t};\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(tooltip, size) {\n\tvar model = tooltip._model;\n\tvar chart = tooltip._chart;\n\tvar chartArea = tooltip._chart.chartArea;\n\tvar xAlign = 'center';\n\tvar yAlign = 'center';\n\n\tif (model.y < size.height) {\n\t\tyAlign = 'top';\n\t} else if (model.y > (chart.height - size.height)) {\n\t\tyAlign = 'bottom';\n\t}\n\n\tvar lf, rf; // functions to determine left, right alignment\n\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\n\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\n\tvar midX = (chartArea.left + chartArea.right) / 2;\n\tvar midY = (chartArea.top + chartArea.bottom) / 2;\n\n\tif (yAlign === 'center') {\n\t\tlf = function(x) {\n\t\t\treturn x <= midX;\n\t\t};\n\t\trf = function(x) {\n\t\t\treturn x > midX;\n\t\t};\n\t} else {\n\t\tlf = function(x) {\n\t\t\treturn x <= (size.width / 2);\n\t\t};\n\t\trf = function(x) {\n\t\t\treturn x >= (chart.width - (size.width / 2));\n\t\t};\n\t}\n\n\tolf = function(x) {\n\t\treturn x + size.width + model.caretSize + model.caretPadding > chart.width;\n\t};\n\torf = function(x) {\n\t\treturn x - size.width - model.caretSize - model.caretPadding < 0;\n\t};\n\tyf = function(y) {\n\t\treturn y <= midY ? 'top' : 'bottom';\n\t};\n\n\tif (lf(model.x)) {\n\t\txAlign = 'left';\n\n\t\t// Is tooltip too wide and goes over the right side of the chart.?\n\t\tif (olf(model.x)) {\n\t\t\txAlign = 'center';\n\t\t\tyAlign = yf(model.y);\n\t\t}\n\t} else if (rf(model.x)) {\n\t\txAlign = 'right';\n\n\t\t// Is tooltip too wide and goes outside left edge of canvas?\n\t\tif (orf(model.x)) {\n\t\t\txAlign = 'center';\n\t\t\tyAlign = yf(model.y);\n\t\t}\n\t}\n\n\tvar opts = tooltip._options;\n\treturn {\n\t\txAlign: opts.xAlign ? opts.xAlign : xAlign,\n\t\tyAlign: opts.yAlign ? opts.yAlign : yAlign\n\t};\n}\n\n/**\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n */\nfunction getBackgroundPoint(vm, size, alignment, chart) {\n\t// Background Position\n\tvar x = vm.x;\n\tvar y = vm.y;\n\n\tvar caretSize = vm.caretSize;\n\tvar caretPadding = vm.caretPadding;\n\tvar cornerRadius = vm.cornerRadius;\n\tvar xAlign = alignment.xAlign;\n\tvar yAlign = alignment.yAlign;\n\tvar paddingAndSize = caretSize + caretPadding;\n\tvar radiusAndPadding = cornerRadius + caretPadding;\n\n\tif (xAlign === 'right') {\n\t\tx -= size.width;\n\t} else if (xAlign === 'center') {\n\t\tx -= (size.width / 2);\n\t\tif (x + size.width > chart.width) {\n\t\t\tx = chart.width - size.width;\n\t\t}\n\t\tif (x < 0) {\n\t\t\tx = 0;\n\t\t}\n\t}\n\n\tif (yAlign === 'top') {\n\t\ty += paddingAndSize;\n\t} else if (yAlign === 'bottom') {\n\t\ty -= size.height + paddingAndSize;\n\t} else {\n\t\ty -= (size.height / 2);\n\t}\n\n\tif (yAlign === 'center') {\n\t\tif (xAlign === 'left') {\n\t\t\tx += paddingAndSize;\n\t\t} else if (xAlign === 'right') {\n\t\t\tx -= paddingAndSize;\n\t\t}\n\t} else if (xAlign === 'left') {\n\t\tx -= radiusAndPadding;\n\t} else if (xAlign === 'right') {\n\t\tx += radiusAndPadding;\n\t}\n\n\treturn {\n\t\tx: x,\n\t\ty: y\n\t};\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n\treturn pushOrConcat([], splitNewlines(callback));\n}\n\nvar exports = module.exports = Element.extend({\n\tinitialize: function() {\n\t\tthis._model = getBaseModel(this._options);\n\t\tthis._lastActive = [];\n\t},\n\n\t// Get the title\n\t// Args are: (tooltipItem, data)\n\tgetTitle: function() {\n\t\tvar me = this;\n\t\tvar opts = me._options;\n\t\tvar callbacks = opts.callbacks;\n\n\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments);\n\t\tvar title = callbacks.title.apply(me, arguments);\n\t\tvar afterTitle = callbacks.afterTitle.apply(me, arguments);\n\n\t\tvar lines = [];\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeTitle));\n\t\tlines = pushOrConcat(lines, splitNewlines(title));\n\t\tlines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n\t\treturn lines;\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetBeforeBody: function() {\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetBody: function(tooltipItems, data) {\n\t\tvar me = this;\n\t\tvar callbacks = me._options.callbacks;\n\t\tvar bodyItems = [];\n\n\t\thelpers.each(tooltipItems, function(tooltipItem) {\n\t\t\tvar bodyItem = {\n\t\t\t\tbefore: [],\n\t\t\t\tlines: [],\n\t\t\t\tafter: []\n\t\t\t};\n\t\t\tpushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\n\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\n\t\t\tpushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\n\n\t\t\tbodyItems.push(bodyItem);\n\t\t});\n\n\t\treturn bodyItems;\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetAfterBody: function() {\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\n\t},\n\n\t// Get the footer and beforeFooter and afterFooter lines\n\t// Args are: (tooltipItem, data)\n\tgetFooter: function() {\n\t\tvar me = this;\n\t\tvar callbacks = me._options.callbacks;\n\n\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\n\t\tvar footer = callbacks.footer.apply(me, arguments);\n\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\n\n\t\tvar lines = [];\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeFooter));\n\t\tlines = pushOrConcat(lines, splitNewlines(footer));\n\t\tlines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n\t\treturn lines;\n\t},\n\n\tupdate: function(changed) {\n\t\tvar me = this;\n\t\tvar opts = me._options;\n\n\t\t// Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition\n\t\t// that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time\n\t\t// which breaks any animations.\n\t\tvar existingModel = me._model;\n\t\tvar model = me._model = getBaseModel(opts);\n\t\tvar active = me._active;\n\n\t\tvar data = me._data;\n\n\t\t// In the case where active.length === 0 we need to keep these at existing values for good animations\n\t\tvar alignment = {\n\t\t\txAlign: existingModel.xAlign,\n\t\t\tyAlign: existingModel.yAlign\n\t\t};\n\t\tvar backgroundPoint = {\n\t\t\tx: existingModel.x,\n\t\t\ty: existingModel.y\n\t\t};\n\t\tvar tooltipSize = {\n\t\t\twidth: existingModel.width,\n\t\t\theight: existingModel.height\n\t\t};\n\t\tvar tooltipPosition = {\n\t\t\tx: existingModel.caretX,\n\t\t\ty: existingModel.caretY\n\t\t};\n\n\t\tvar i, len;\n\n\t\tif (active.length) {\n\t\t\tmodel.opacity = 1;\n\n\t\t\tvar labelColors = [];\n\t\t\tvar labelTextColors = [];\n\t\t\ttooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\n\n\t\t\tvar tooltipItems = [];\n\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\n\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\n\t\t\t}\n\n\t\t\t// If the user provided a filter function, use it to modify the tooltip items\n\t\t\tif (opts.filter) {\n\t\t\t\ttooltipItems = tooltipItems.filter(function(a) {\n\t\t\t\t\treturn opts.filter(a, data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\n\t\t\tif (opts.itemSort) {\n\t\t\t\ttooltipItems = tooltipItems.sort(function(a, b) {\n\t\t\t\t\treturn opts.itemSort(a, b, data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Determine colors for boxes\n\t\t\thelpers.each(tooltipItems, function(tooltipItem) {\n\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\n\t\t\t\tlabelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\n\t\t\t});\n\n\n\t\t\t// Build the Text Lines\n\t\t\tmodel.title = me.getTitle(tooltipItems, data);\n\t\t\tmodel.beforeBody = me.getBeforeBody(tooltipItems, data);\n\t\t\tmodel.body = me.getBody(tooltipItems, data);\n\t\t\tmodel.afterBody = me.getAfterBody(tooltipItems, data);\n\t\t\tmodel.footer = me.getFooter(tooltipItems, data);\n\n\t\t\t// Initial positioning and colors\n\t\t\tmodel.x = Math.round(tooltipPosition.x);\n\t\t\tmodel.y = Math.round(tooltipPosition.y);\n\t\t\tmodel.caretPadding = opts.caretPadding;\n\t\t\tmodel.labelColors = labelColors;\n\t\t\tmodel.labelTextColors = labelTextColors;\n\n\t\t\t// data points\n\t\t\tmodel.dataPoints = tooltipItems;\n\n\t\t\t// We need to determine alignment of the tooltip\n\t\t\ttooltipSize = getTooltipSize(this, model);\n\t\t\talignment = determineAlignment(this, tooltipSize);\n\t\t\t// Final Size and Position\n\t\t\tbackgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\n\t\t} else {\n\t\t\tmodel.opacity = 0;\n\t\t}\n\n\t\tmodel.xAlign = alignment.xAlign;\n\t\tmodel.yAlign = alignment.yAlign;\n\t\tmodel.x = backgroundPoint.x;\n\t\tmodel.y = backgroundPoint.y;\n\t\tmodel.width = tooltipSize.width;\n\t\tmodel.height = tooltipSize.height;\n\n\t\t// Point where the caret on the tooltip points to\n\t\tmodel.caretX = tooltipPosition.x;\n\t\tmodel.caretY = tooltipPosition.y;\n\n\t\tme._model = model;\n\n\t\tif (changed && opts.custom) {\n\t\t\topts.custom.call(me, model);\n\t\t}\n\n\t\treturn me;\n\t},\n\n\tdrawCaret: function(tooltipPoint, size) {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\n\n\t\tctx.lineTo(caretPosition.x1, caretPosition.y1);\n\t\tctx.lineTo(caretPosition.x2, caretPosition.y2);\n\t\tctx.lineTo(caretPosition.x3, caretPosition.y3);\n\t},\n\tgetCaretPosition: function(tooltipPoint, size, vm) {\n\t\tvar x1, x2, x3, y1, y2, y3;\n\t\tvar caretSize = vm.caretSize;\n\t\tvar cornerRadius = vm.cornerRadius;\n\t\tvar xAlign = vm.xAlign;\n\t\tvar yAlign = vm.yAlign;\n\t\tvar ptX = tooltipPoint.x;\n\t\tvar ptY = tooltipPoint.y;\n\t\tvar width = size.width;\n\t\tvar height = size.height;\n\n\t\tif (yAlign === 'center') {\n\t\t\ty2 = ptY + (height / 2);\n\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx1 = ptX;\n\t\t\t\tx2 = x1 - caretSize;\n\t\t\t\tx3 = x1;\n\n\t\t\t\ty1 = y2 + caretSize;\n\t\t\t\ty3 = y2 - caretSize;\n\t\t\t} else {\n\t\t\t\tx1 = ptX + width;\n\t\t\t\tx2 = x1 + caretSize;\n\t\t\t\tx3 = x1;\n\n\t\t\t\ty1 = y2 - caretSize;\n\t\t\t\ty3 = y2 + caretSize;\n\t\t\t}\n\t\t} else {\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx2 = ptX + cornerRadius + (caretSize);\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t} else if (xAlign === 'right') {\n\t\t\t\tx2 = ptX + width - cornerRadius - caretSize;\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t} else {\n\t\t\t\tx2 = vm.caretX;\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t}\n\t\t\tif (yAlign === 'top') {\n\t\t\t\ty1 = ptY;\n\t\t\t\ty2 = y1 - caretSize;\n\t\t\t\ty3 = y1;\n\t\t\t} else {\n\t\t\t\ty1 = ptY + height;\n\t\t\t\ty2 = y1 + caretSize;\n\t\t\t\ty3 = y1;\n\t\t\t\t// invert drawing order\n\t\t\t\tvar tmp = x3;\n\t\t\t\tx3 = x1;\n\t\t\t\tx1 = tmp;\n\t\t\t}\n\t\t}\n\t\treturn {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\n\t},\n\n\tdrawTitle: function(pt, vm, ctx, opacity) {\n\t\tvar title = vm.title;\n\n\t\tif (title.length) {\n\t\t\tctx.textAlign = vm._titleAlign;\n\t\t\tctx.textBaseline = 'top';\n\n\t\t\tvar titleFontSize = vm.titleFontSize;\n\t\t\tvar titleSpacing = vm.titleSpacing;\n\n\t\t\tctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity);\n\t\t\tctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\n\n\t\t\tvar i, len;\n\t\t\tfor (i = 0, len = title.length; i < len; ++i) {\n\t\t\t\tctx.fillText(title[i], pt.x, pt.y);\n\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\n\n\t\t\t\tif (i + 1 === title.length) {\n\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tdrawBody: function(pt, vm, ctx, opacity) {\n\t\tvar bodyFontSize = vm.bodyFontSize;\n\t\tvar bodySpacing = vm.bodySpacing;\n\t\tvar body = vm.body;\n\n\t\tctx.textAlign = vm._bodyAlign;\n\t\tctx.textBaseline = 'top';\n\t\tctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\n\n\t\t// Before Body\n\t\tvar xLinePadding = 0;\n\t\tvar fillLineOfText = function(line) {\n\t\t\tctx.fillText(line, pt.x + xLinePadding, pt.y);\n\t\t\tpt.y += bodyFontSize + bodySpacing;\n\t\t};\n\n\t\t// Before body lines\n\t\tctx.fillStyle = mergeOpacity(vm.bodyFontColor, opacity);\n\t\thelpers.each(vm.beforeBody, fillLineOfText);\n\n\t\tvar drawColorBoxes = vm.displayColors;\n\t\txLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0;\n\n\t\t// Draw body lines now\n\t\thelpers.each(body, function(bodyItem, i) {\n\t\t\tvar textColor = mergeOpacity(vm.labelTextColors[i], opacity);\n\t\t\tctx.fillStyle = textColor;\n\t\t\thelpers.each(bodyItem.before, fillLineOfText);\n\n\t\t\thelpers.each(bodyItem.lines, function(line) {\n\t\t\t\t// Draw Legend-like boxes if needed\n\t\t\t\tif (drawColorBoxes) {\n\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity);\n\t\t\t\t\tctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t// Border\n\t\t\t\t\tctx.lineWidth = 1;\n\t\t\t\t\tctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity);\n\t\t\t\t\tctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t// Inner square\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity);\n\t\t\t\t\tctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\n\t\t\t\t\tctx.fillStyle = textColor;\n\t\t\t\t}\n\n\t\t\t\tfillLineOfText(line);\n\t\t\t});\n\n\t\t\thelpers.each(bodyItem.after, fillLineOfText);\n\t\t});\n\n\t\t// Reset back to 0 for after body\n\t\txLinePadding = 0;\n\n\t\t// After body lines\n\t\thelpers.each(vm.afterBody, fillLineOfText);\n\t\tpt.y -= bodySpacing; // Remove last body spacing\n\t},\n\n\tdrawFooter: function(pt, vm, ctx, opacity) {\n\t\tvar footer = vm.footer;\n\n\t\tif (footer.length) {\n\t\t\tpt.y += vm.footerMarginTop;\n\n\t\t\tctx.textAlign = vm._footerAlign;\n\t\t\tctx.textBaseline = 'top';\n\n\t\t\tctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity);\n\t\t\tctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\n\n\t\t\thelpers.each(footer, function(line) {\n\t\t\t\tctx.fillText(line, pt.x, pt.y);\n\t\t\t\tpt.y += vm.footerFontSize + vm.footerSpacing;\n\t\t\t});\n\t\t}\n\t},\n\n\tdrawBackground: function(pt, vm, ctx, tooltipSize, opacity) {\n\t\tctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity);\n\t\tctx.strokeStyle = mergeOpacity(vm.borderColor, opacity);\n\t\tctx.lineWidth = vm.borderWidth;\n\t\tvar xAlign = vm.xAlign;\n\t\tvar yAlign = vm.yAlign;\n\t\tvar x = pt.x;\n\t\tvar y = pt.y;\n\t\tvar width = tooltipSize.width;\n\t\tvar height = tooltipSize.height;\n\t\tvar radius = vm.cornerRadius;\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x + radius, y);\n\t\tif (yAlign === 'top') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + width - radius, y);\n\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n\t\tif (yAlign === 'center' && xAlign === 'right') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + width, y + height - radius);\n\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n\t\tif (yAlign === 'bottom') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + radius, y + height);\n\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n\t\tif (yAlign === 'center' && xAlign === 'left') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x, y + radius);\n\t\tctx.quadraticCurveTo(x, y, x + radius, y);\n\t\tctx.closePath();\n\n\t\tctx.fill();\n\n\t\tif (vm.borderWidth > 0) {\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\n\t\tif (vm.opacity === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar tooltipSize = {\n\t\t\twidth: vm.width,\n\t\t\theight: vm.height\n\t\t};\n\t\tvar pt = {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\n\t\t// IE11/Edge does not like very small opacities, so snap to 0\n\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\n\n\t\t// Truthy/falsey value for empty tooltip\n\t\tvar hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\n\n\t\tif (this._options.enabled && hasTooltipContent) {\n\t\t\t// Draw Background\n\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize, opacity);\n\n\t\t\t// Draw Title, Body, and Footer\n\t\t\tpt.x += vm.xPadding;\n\t\t\tpt.y += vm.yPadding;\n\n\t\t\t// Titles\n\t\t\tthis.drawTitle(pt, vm, ctx, opacity);\n\n\t\t\t// Body\n\t\t\tthis.drawBody(pt, vm, ctx, opacity);\n\n\t\t\t// Footer\n\t\t\tthis.drawFooter(pt, vm, ctx, opacity);\n\t\t}\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event - The event to handle\n\t * @returns {Boolean} true if the tooltip changed\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar options = me._options;\n\t\tvar changed = false;\n\n\t\tme._lastActive = me._lastActive || [];\n\n\t\t// Find Active Elements for tooltips\n\t\tif (e.type === 'mouseout') {\n\t\t\tme._active = [];\n\t\t} else {\n\t\t\tme._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\n\t\t}\n\n\t\t// Remember Last Actives\n\t\tchanged = !helpers.arrayEquals(me._active, me._lastActive);\n\n\t\t// Only handle target event on tooltip change\n\t\tif (changed) {\n\t\t\tme._lastActive = me._active;\n\n\t\t\tif (options.enabled || options.custom) {\n\t\t\t\tme._eventPosition = {\n\t\t\t\t\tx: e.x,\n\t\t\t\t\ty: e.y\n\t\t\t\t};\n\n\t\t\t\tme.update(true);\n\t\t\t\tme.pivot();\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t}\n});\n\n/**\n * @namespace Chart.Tooltip.positioners\n */\nexports.positioners = positioners;\n\n\n},{\"26\":26,\"27\":27,\"46\":46}],37:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\n\ndefaults._set('global', {\n\telements: {\n\t\tarc: {\n\t\t\tbackgroundColor: defaults.global.defaultColor,\n\t\t\tborderColor: '#fff',\n\t\t\tborderWidth: 2\n\t\t}\n\t}\n});\n\nmodule.exports = Element.extend({\n\tinLabelRange: function(mouseX) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\n\t\t}\n\t\treturn false;\n\t},\n\n\tinRange: function(chartX, chartY) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\tvar pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY});\n\t\t\tvar\tangle = pointRelativePosition.angle;\n\t\t\tvar distance = pointRelativePosition.distance;\n\n\t\t\t// Sanitise angle range\n\t\t\tvar startAngle = vm.startAngle;\n\t\t\tvar endAngle = vm.endAngle;\n\t\t\twhile (endAngle < startAngle) {\n\t\t\t\tendAngle += 2.0 * Math.PI;\n\t\t\t}\n\t\t\twhile (angle > endAngle) {\n\t\t\t\tangle -= 2.0 * Math.PI;\n\t\t\t}\n\t\t\twhile (angle < startAngle) {\n\t\t\t\tangle += 2.0 * Math.PI;\n\t\t\t}\n\n\t\t\t// Check if within the range of the open/close angle\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\n\n\t\t\treturn (betweenAngles && withinRadius);\n\t\t}\n\t\treturn false;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\n\t\treturn {\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\n\n\t\treturn {\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\n\t\t};\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar sA = vm.startAngle;\n\t\tvar eA = vm.endAngle;\n\n\t\tctx.beginPath();\n\n\t\tctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);\n\t\tctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);\n\n\t\tctx.closePath();\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = vm.borderWidth;\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\n\t\tctx.fill();\n\t\tctx.lineJoin = 'bevel';\n\n\t\tif (vm.borderWidth) {\n\t\t\tctx.stroke();\n\t\t}\n\t}\n});\n\n},{\"26\":26,\"27\":27,\"46\":46}],38:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\n\nvar globalDefaults = defaults.global;\n\ndefaults._set('global', {\n\telements: {\n\t\tline: {\n\t\t\ttension: 0.4,\n\t\t\tbackgroundColor: globalDefaults.defaultColor,\n\t\t\tborderWidth: 3,\n\t\t\tborderColor: globalDefaults.defaultColor,\n\t\t\tborderCapStyle: 'butt',\n\t\t\tborderDash: [],\n\t\t\tborderDashOffset: 0.0,\n\t\t\tborderJoinStyle: 'miter',\n\t\t\tcapBezierPoints: true,\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\n\t\t}\n\t}\n});\n\nmodule.exports = Element.extend({\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar vm = me._view;\n\t\tvar ctx = me._chart.ctx;\n\t\tvar spanGaps = vm.spanGaps;\n\t\tvar points = me._children.slice(); // clone array\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\n\t\tvar lastDrawnIndex = -1;\n\t\tvar index, current, previous, currentVM;\n\n\t\t// If we are looping, adding the first point again\n\t\tif (me._loop && points.length) {\n\t\t\tpoints.push(points[0]);\n\t\t}\n\n\t\tctx.save();\n\n\t\t// Stroke Line Options\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\n\n\t\t// IE 9 and 10 do not support line dash\n\t\tif (ctx.setLineDash) {\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\n\t\t}\n\n\t\tctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset;\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n\t\tctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth;\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\n\n\t\t// Stroke Line\n\t\tctx.beginPath();\n\t\tlastDrawnIndex = -1;\n\n\t\tfor (index = 0; index < points.length; ++index) {\n\t\t\tcurrent = points[index];\n\t\t\tprevious = helpers.previousItem(points, index);\n\t\t\tcurrentVM = current._view;\n\n\t\t\t// First point moves to it's starting position no matter what\n\t\t\tif (index === 0) {\n\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tprevious = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex];\n\n\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\n\t\t\t\t\t\t// There was a gap and this is the first point after the gap\n\t\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Line to next point\n\t\t\t\t\t\thelpers.canvas.lineTo(ctx, previous._view, current._view);\n\t\t\t\t\t}\n\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tctx.stroke();\n\t\tctx.restore();\n\t}\n});\n\n},{\"26\":26,\"27\":27,\"46\":46}],39:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\n\nvar defaultColor = defaults.global.defaultColor;\n\ndefaults._set('global', {\n\telements: {\n\t\tpoint: {\n\t\t\tradius: 3,\n\t\t\tpointStyle: 'circle',\n\t\t\tbackgroundColor: defaultColor,\n\t\t\tborderColor: defaultColor,\n\t\t\tborderWidth: 1,\n\t\t\t// Hover\n\t\t\thitRadius: 1,\n\t\t\thoverRadius: 4,\n\t\t\thoverBorderWidth: 1\n\t\t}\n\t}\n});\n\nfunction xRange(mouseX) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\n}\n\nfunction yRange(mouseY) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\n}\n\nmodule.exports = Element.extend({\n\tinRange: function(mouseX, mouseY) {\n\t\tvar vm = this._view;\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\n\t},\n\n\tinLabelRange: xRange,\n\tinXRange: xRange,\n\tinYRange: yRange,\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y,\n\t\t\tpadding: vm.radius + vm.borderWidth\n\t\t};\n\t},\n\n\tdraw: function(chartArea) {\n\t\tvar vm = this._view;\n\t\tvar model = this._model;\n\t\tvar ctx = this._chart.ctx;\n\t\tvar pointStyle = vm.pointStyle;\n\t\tvar rotation = vm.rotation;\n\t\tvar radius = vm.radius;\n\t\tvar x = vm.x;\n\t\tvar y = vm.y;\n\t\tvar errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.)\n\n\t\tif (vm.skip) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clipping for Points.\n\t\tif (chartArea === undefined || (model.x >= chartArea.left && chartArea.right * errMargin >= model.x && model.y >= chartArea.top && chartArea.bottom * errMargin >= model.y)) {\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\n\t\t\tctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth);\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\n\t\t\thelpers.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\n\t\t}\n\t}\n});\n\n},{\"26\":26,\"27\":27,\"46\":46}],40:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\n\ndefaults._set('global', {\n\telements: {\n\t\trectangle: {\n\t\t\tbackgroundColor: defaults.global.defaultColor,\n\t\t\tborderColor: defaults.global.defaultColor,\n\t\t\tborderSkipped: 'bottom',\n\t\t\tborderWidth: 0\n\t\t}\n\t}\n});\n\nfunction isVertical(bar) {\n\treturn bar._view.width !== undefined;\n}\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param bar {Chart.Element.Rectangle} the bar\n * @return {Bounds} bounds of the bar\n * @private\n */\nfunction getBarBounds(bar) {\n\tvar vm = bar._view;\n\tvar x1, x2, y1, y2;\n\n\tif (isVertical(bar)) {\n\t\t// vertical\n\t\tvar halfWidth = vm.width / 2;\n\t\tx1 = vm.x - halfWidth;\n\t\tx2 = vm.x + halfWidth;\n\t\ty1 = Math.min(vm.y, vm.base);\n\t\ty2 = Math.max(vm.y, vm.base);\n\t} else {\n\t\t// horizontal bar\n\t\tvar halfHeight = vm.height / 2;\n\t\tx1 = Math.min(vm.x, vm.base);\n\t\tx2 = Math.max(vm.x, vm.base);\n\t\ty1 = vm.y - halfHeight;\n\t\ty2 = vm.y + halfHeight;\n\t}\n\n\treturn {\n\t\tleft: x1,\n\t\ttop: y1,\n\t\tright: x2,\n\t\tbottom: y2\n\t};\n}\n\nmodule.exports = Element.extend({\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar left, right, top, bottom, signX, signY, borderSkipped;\n\t\tvar borderWidth = vm.borderWidth;\n\n\t\tif (!vm.horizontal) {\n\t\t\t// bar\n\t\t\tleft = vm.x - vm.width / 2;\n\t\t\tright = vm.x + vm.width / 2;\n\t\t\ttop = vm.y;\n\t\t\tbottom = vm.base;\n\t\t\tsignX = 1;\n\t\t\tsignY = bottom > top ? 1 : -1;\n\t\t\tborderSkipped = vm.borderSkipped || 'bottom';\n\t\t} else {\n\t\t\t// horizontal bar\n\t\t\tleft = vm.base;\n\t\t\tright = vm.x;\n\t\t\ttop = vm.y - vm.height / 2;\n\t\t\tbottom = vm.y + vm.height / 2;\n\t\t\tsignX = right > left ? 1 : -1;\n\t\t\tsignY = 1;\n\t\t\tborderSkipped = vm.borderSkipped || 'left';\n\t\t}\n\n\t\t// Canvas doesn't allow us to stroke inside the width so we can\n\t\t// adjust the sizes to fit if we're setting a stroke on the line\n\t\tif (borderWidth) {\n\t\t\t// borderWidth shold be less than bar width and bar height.\n\t\t\tvar barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\n\t\t\tborderWidth = borderWidth > barSize ? barSize : borderWidth;\n\t\t\tvar halfStroke = borderWidth / 2;\n\t\t\t// Adjust borderWidth when bar top position is near vm.base(zero).\n\t\t\tvar borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\n\t\t\tvar borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\n\t\t\tvar borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\n\t\t\tvar borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\n\t\t\t// not become a vertical line?\n\t\t\tif (borderLeft !== borderRight) {\n\t\t\t\ttop = borderTop;\n\t\t\t\tbottom = borderBottom;\n\t\t\t}\n\t\t\t// not become a horizontal line?\n\t\t\tif (borderTop !== borderBottom) {\n\t\t\t\tleft = borderLeft;\n\t\t\t\tright = borderRight;\n\t\t\t}\n\t\t}\n\n\t\tctx.beginPath();\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = borderWidth;\n\n\t\t// Corner points, from bottom-left to bottom-right clockwise\n\t\t// | 1 2 |\n\t\t// | 0 3 |\n\t\tvar corners = [\n\t\t\t[left, bottom],\n\t\t\t[left, top],\n\t\t\t[right, top],\n\t\t\t[right, bottom]\n\t\t];\n\n\t\t// Find first (starting) corner with fallback to 'bottom'\n\t\tvar borders = ['bottom', 'left', 'top', 'right'];\n\t\tvar startCorner = borders.indexOf(borderSkipped, 0);\n\t\tif (startCorner === -1) {\n\t\t\tstartCorner = 0;\n\t\t}\n\n\t\tfunction cornerAt(index) {\n\t\t\treturn corners[(startCorner + index) % 4];\n\t\t}\n\n\t\t// Draw rectangle from 'startCorner'\n\t\tvar corner = cornerAt(0);\n\t\tctx.moveTo(corner[0], corner[1]);\n\n\t\tfor (var i = 1; i < 4; i++) {\n\t\t\tcorner = cornerAt(i);\n\t\t\tctx.lineTo(corner[0], corner[1]);\n\t\t}\n\n\t\tctx.fill();\n\t\tif (borderWidth) {\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\theight: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.base - vm.y;\n\t},\n\n\tinRange: function(mouseX, mouseY) {\n\t\tvar inRange = false;\n\n\t\tif (this._view) {\n\t\t\tvar bounds = getBarBounds(this);\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t}\n\n\t\treturn inRange;\n\t},\n\n\tinLabelRange: function(mouseX, mouseY) {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar inRange = false;\n\t\tvar bounds = getBarBounds(me);\n\n\t\tif (isVertical(me)) {\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right;\n\t\t} else {\n\t\t\tinRange = mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t}\n\n\t\treturn inRange;\n\t},\n\n\tinXRange: function(mouseX) {\n\t\tvar bounds = getBarBounds(this);\n\t\treturn mouseX >= bounds.left && mouseX <= bounds.right;\n\t},\n\n\tinYRange: function(mouseY) {\n\t\tvar bounds = getBarBounds(this);\n\t\treturn mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar x, y;\n\t\tif (isVertical(this)) {\n\t\t\tx = vm.x;\n\t\t\ty = (vm.y + vm.base) / 2;\n\t\t} else {\n\t\t\tx = (vm.x + vm.base) / 2;\n\t\t\ty = vm.y;\n\t\t}\n\n\t\treturn {x: x, y: y};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.width * Math.abs(vm.y - vm.base);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t}\n});\n\n},{\"26\":26,\"27\":27}],41:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {};\nmodule.exports.Arc = require(37);\nmodule.exports.Line = require(38);\nmodule.exports.Point = require(39);\nmodule.exports.Rectangle = require(40);\n\n},{\"37\":37,\"38\":38,\"39\":39,\"40\":40}],42:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(43);\n\n/**\n * @namespace Chart.helpers.canvas\n */\nvar exports = module.exports = {\n\t/**\n\t * Clears the entire canvas associated to the given `chart`.\n\t * @param {Chart} chart - The chart for which to clear the canvas.\n\t */\n\tclear: function(chart) {\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\n\t},\n\n\t/**\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\n\t * given size (width, height) and the same `radius` for all corners.\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\n\t * @param {Number} x - The x axis of the coordinate for the rectangle starting point.\n\t * @param {Number} y - The y axis of the coordinate for the rectangle starting point.\n\t * @param {Number} width - The rectangle's width.\n\t * @param {Number} height - The rectangle's height.\n\t * @param {Number} radius - The rounded amount (in pixels) for the four corners.\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\n\t */\n\troundedRect: function(ctx, x, y, width, height, radius) {\n\t\tif (radius) {\n\t\t\t// NOTE(SB) `epsilon` helps to prevent minor artifacts appearing\n\t\t\t// on Chrome when `r` is exactly half the height or the width.\n\t\t\tvar epsilon = 0.0000001;\n\t\t\tvar r = Math.min(radius, (height / 2) - epsilon, (width / 2) - epsilon);\n\n\t\t\tctx.moveTo(x + r, y);\n\t\t\tctx.lineTo(x + width - r, y);\n\t\t\tctx.arcTo(x + width, y, x + width, y + r, r);\n\t\t\tctx.lineTo(x + width, y + height - r);\n\t\t\tctx.arcTo(x + width, y + height, x + width - r, y + height, r);\n\t\t\tctx.lineTo(x + r, y + height);\n\t\t\tctx.arcTo(x, y + height, x, y + height - r, r);\n\t\t\tctx.lineTo(x, y + r);\n\t\t\tctx.arcTo(x, y, x + r, y, r);\n\t\t\tctx.closePath();\n\t\t\tctx.moveTo(x, y);\n\t\t} else {\n\t\t\tctx.rect(x, y, width, height);\n\t\t}\n\t},\n\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\n\t\tvar type, edgeLength, xOffset, yOffset, height, size;\n\t\trotation = rotation || 0;\n\n\t\tif (style && typeof style === 'object') {\n\t\t\ttype = style.toString();\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n\t\t\t\tctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (isNaN(radius) || radius <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.save();\n\t\tctx.translate(x, y);\n\t\tctx.rotate(rotation * Math.PI / 180);\n\t\tctx.beginPath();\n\n\t\tswitch (style) {\n\t\t// Default includes circle\n\t\tdefault:\n\t\t\tctx.arc(0, 0, radius, 0, Math.PI * 2);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'triangle':\n\t\t\tedgeLength = 3 * radius / Math.sqrt(3);\n\t\t\theight = edgeLength * Math.sqrt(3) / 2;\n\t\t\tctx.moveTo(-edgeLength / 2, height / 3);\n\t\t\tctx.lineTo(edgeLength / 2, height / 3);\n\t\t\tctx.lineTo(0, -2 * height / 3);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'rect':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.rect(-size, -size, 2 * size, 2 * size);\n\t\t\tbreak;\n\t\tcase 'rectRounded':\n\t\t\tvar offset = radius / Math.SQRT2;\n\t\t\tvar leftX = -offset;\n\t\t\tvar topY = -offset;\n\t\t\tvar sideSize = Math.SQRT2 * radius;\n\n\t\t\t// NOTE(SB) the rounded rect implementation changed to use `arcTo`\n\t\t\t// instead of `quadraticCurveTo` since it generates better results\n\t\t\t// when rect is almost a circle. 0.425 (instead of 0.5) produces\n\t\t\t// results visually closer to the previous impl.\n\t\t\tthis.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius * 0.425);\n\t\t\tbreak;\n\t\tcase 'rectRot':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.moveTo(-size, 0);\n\t\t\tctx.lineTo(0, size);\n\t\t\tctx.lineTo(size, 0);\n\t\t\tctx.lineTo(0, -size);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'cross':\n\t\t\tctx.moveTo(0, radius);\n\t\t\tctx.lineTo(0, -radius);\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\tcase 'crossRot':\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(-xOffset, -yOffset);\n\t\t\tctx.lineTo(xOffset, yOffset);\n\t\t\tctx.moveTo(-xOffset, yOffset);\n\t\t\tctx.lineTo(xOffset, -yOffset);\n\t\t\tbreak;\n\t\tcase 'star':\n\t\t\tctx.moveTo(0, radius);\n\t\t\tctx.lineTo(0, -radius);\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(-xOffset, -yOffset);\n\t\t\tctx.lineTo(xOffset, yOffset);\n\t\t\tctx.moveTo(-xOffset, yOffset);\n\t\t\tctx.lineTo(xOffset, -yOffset);\n\t\t\tbreak;\n\t\tcase 'line':\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\tcase 'dash':\n\t\t\tctx.moveTo(0, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\t}\n\n\t\tctx.fill();\n\t\tctx.stroke();\n\t\tctx.restore();\n\t},\n\n\tclipArea: function(ctx, area) {\n\t\tctx.save();\n\t\tctx.beginPath();\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n\t\tctx.clip();\n\t},\n\n\tunclipArea: function(ctx) {\n\t\tctx.restore();\n\t},\n\n\tlineTo: function(ctx, previous, target, flip) {\n\t\tif (target.steppedLine) {\n\t\t\tif ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) {\n\t\t\t\tctx.lineTo(previous.x, target.y);\n\t\t\t} else {\n\t\t\t\tctx.lineTo(target.x, previous.y);\n\t\t\t}\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!target.tension) {\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tctx.bezierCurveTo(\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\n\t\t\ttarget.x,\n\t\t\ttarget.y);\n\t}\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\n * @namespace Chart.helpers.clear\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.clear = exports.clear;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\n * @namespace Chart.helpers.drawRoundedRectangle\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.drawRoundedRectangle = function(ctx) {\n\tctx.beginPath();\n\texports.roundedRect.apply(exports, arguments);\n};\n\n},{\"43\":43}],43:[function(require,module,exports){\n'use strict';\n\n/**\n * @namespace Chart.helpers\n */\nvar helpers = {\n\t/**\n\t * An empty function that can be used, for example, for optional callback.\n\t */\n\tnoop: function() {},\n\n\t/**\n\t * Returns a unique id, sequentially generated from a global variable.\n\t * @returns {Number}\n\t * @function\n\t */\n\tuid: (function() {\n\t\tvar id = 0;\n\t\treturn function() {\n\t\t\treturn id++;\n\t\t};\n\t}()),\n\n\t/**\n\t * Returns true if `value` is neither null nor undefined, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @since 2.7.0\n\t */\n\tisNullOrUndef: function(value) {\n\t\treturn value === null || typeof value === 'undefined';\n\t},\n\n\t/**\n\t * Returns true if `value` is an array, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @function\n\t */\n\tisArray: Array.isArray ? Array.isArray : function(value) {\n\t\treturn Object.prototype.toString.call(value) === '[object Array]';\n\t},\n\n\t/**\n\t * Returns true if `value` is an object (excluding null), else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @since 2.7.0\n\t */\n\tisObject: function(value) {\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\n\t},\n\n\t/**\n\t * Returns `value` if defined, else returns `defaultValue`.\n\t * @param {*} value - The value to return if defined.\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\n\t * @returns {*}\n\t */\n\tvalueOrDefault: function(value, defaultValue) {\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\n\t},\n\n\t/**\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\n\t * @param {Array} value - The array to lookup for value at `index`.\n\t * @param {Number} index - The index in `value` to lookup for value.\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\n\t * @returns {*}\n\t */\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\n\t},\n\n\t/**\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n\t * @param {Function} fn - The function to call.\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @returns {*}\n\t */\n\tcallback: function(fn, args, thisArg) {\n\t\tif (fn && typeof fn.call === 'function') {\n\t\t\treturn fn.apply(thisArg, args);\n\t\t}\n\t},\n\n\t/**\n\t * Note(SB) for performance sake, this method should only be used when loopable type\n\t * is unknown or in none intensive code (not called often and small loopable). Else\n\t * it's preferable to use a regular for() loop and save extra function calls.\n\t * @param {Object|Array} loopable - The object or array to be iterated.\n\t * @param {Function} fn - The function to call for each item.\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @param {Boolean} [reverse] - If true, iterates backward on the loopable.\n\t */\n\teach: function(loopable, fn, thisArg, reverse) {\n\t\tvar i, len, keys;\n\t\tif (helpers.isArray(loopable)) {\n\t\t\tlen = loopable.length;\n\t\t\tif (reverse) {\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (helpers.isObject(loopable)) {\n\t\t\tkeys = Object.keys(loopable);\n\t\t\tlen = keys.length;\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n\t * @see http://stackoverflow.com/a/14853974\n\t * @param {Array} a0 - The array to compare\n\t * @param {Array} a1 - The array to compare\n\t * @returns {Boolean}\n\t */\n\tarrayEquals: function(a0, a1) {\n\t\tvar i, ilen, v0, v1;\n\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\n\t\t\tv0 = a0[i];\n\t\t\tv1 = a1[i];\n\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (v0 !== v1) {\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\n\t * @param {*} source - The value to clone.\n\t * @returns {*}\n\t */\n\tclone: function(source) {\n\t\tif (helpers.isArray(source)) {\n\t\t\treturn source.map(helpers.clone);\n\t\t}\n\n\t\tif (helpers.isObject(source)) {\n\t\t\tvar target = {};\n\t\t\tvar keys = Object.keys(source);\n\t\t\tvar klen = keys.length;\n\t\t\tvar k = 0;\n\n\t\t\tfor (; k < klen; ++k) {\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\n\t\t\t}\n\n\t\t\treturn target;\n\t\t}\n\n\t\treturn source;\n\t},\n\n\t/**\n\t * The default merger when Chart.helpers.merge is called without merger option.\n\t * Note(SB): this method is also used by configMerge and scaleMerge as fallback.\n\t * @private\n\t */\n\t_merger: function(key, target, source, options) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.merge(tval, sval, options);\n\t\t} else {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Merges source[key] in target[key] only if target[key] is undefined.\n\t * @private\n\t */\n\t_mergerIf: function(key, target, source) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.mergeIf(tval, sval);\n\t\t} else if (!target.hasOwnProperty(key)) {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {Object} target - The target object in which all sources are merged into.\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\n\t * @param {Object} [options] - Merging options:\n\t * @param {Function} [options.merger] - The merge method (key, target, source, options)\n\t * @returns {Object} The `target` object.\n\t */\n\tmerge: function(target, source, options) {\n\t\tvar sources = helpers.isArray(source) ? source : [source];\n\t\tvar ilen = sources.length;\n\t\tvar merge, i, keys, klen, k;\n\n\t\tif (!helpers.isObject(target)) {\n\t\t\treturn target;\n\t\t}\n\n\t\toptions = options || {};\n\t\tmerge = options.merger || helpers._merger;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!helpers.isObject(source)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tkeys = Object.keys(source);\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\n\t\t\t\tmerge(keys[k], target, source, options);\n\t\t\t}\n\t\t}\n\n\t\treturn target;\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {Object} target - The target object in which all sources are merged into.\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\n\t * @returns {Object} The `target` object.\n\t */\n\tmergeIf: function(target, source) {\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\n\t},\n\n\t/**\n\t * Applies the contents of two or more objects together into the first object.\n\t * @param {Object} target - The target object in which all objects are merged into.\n\t * @param {Object} arg1 - Object containing additional properties to merge in target.\n\t * @param {Object} argN - Additional objects containing properties to merge in target.\n\t * @returns {Object} The `target` object.\n\t */\n\textend: function(target) {\n\t\tvar setFn = function(value, key) {\n\t\t\ttarget[key] = value;\n\t\t};\n\t\tfor (var i = 1, ilen = arguments.length; i < ilen; ++i) {\n\t\t\thelpers.each(arguments[i], setFn);\n\t\t}\n\t\treturn target;\n\t},\n\n\t/**\n\t * Basic javascript inheritance based on the model created in Backbone.js\n\t */\n\tinherits: function(extensions) {\n\t\tvar me = this;\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\n\t\t\treturn me.apply(this, arguments);\n\t\t};\n\n\t\tvar Surrogate = function() {\n\t\t\tthis.constructor = ChartElement;\n\t\t};\n\n\t\tSurrogate.prototype = me.prototype;\n\t\tChartElement.prototype = new Surrogate();\n\t\tChartElement.extend = helpers.inherits;\n\n\t\tif (extensions) {\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\n\t\t}\n\n\t\tChartElement.__super__ = me.prototype;\n\t\treturn ChartElement;\n\t}\n};\n\nmodule.exports = helpers;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.callback instead.\n * @function Chart.helpers.callCallback\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\nhelpers.callCallback = helpers.callback;\n\n/**\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\n * @function Chart.helpers.indexOf\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.indexOf = function(array, item, fromIndex) {\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\n};\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\n * @function Chart.helpers.getValueOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueOrDefault = helpers.valueOrDefault;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\n * @function Chart.helpers.getValueAtIndexOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n},{}],44:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(43);\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easingEffects\n * @see http://www.robertpenner.com/easing/\n */\nvar effects = {\n\tlinear: function(t) {\n\t\treturn t;\n\t},\n\n\teaseInQuad: function(t) {\n\t\treturn t * t;\n\t},\n\n\teaseOutQuad: function(t) {\n\t\treturn -t * (t - 2);\n\t},\n\n\teaseInOutQuad: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t;\n\t\t}\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\n\t},\n\n\teaseInCubic: function(t) {\n\t\treturn t * t * t;\n\t},\n\n\teaseOutCubic: function(t) {\n\t\treturn (t = t - 1) * t * t + 1;\n\t},\n\n\teaseInOutCubic: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\n\t},\n\n\teaseInQuart: function(t) {\n\t\treturn t * t * t * t;\n\t},\n\n\teaseOutQuart: function(t) {\n\t\treturn -((t = t - 1) * t * t * t - 1);\n\t},\n\n\teaseInOutQuart: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t;\n\t\t}\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\n\t},\n\n\teaseInQuint: function(t) {\n\t\treturn t * t * t * t * t;\n\t},\n\n\teaseOutQuint: function(t) {\n\t\treturn (t = t - 1) * t * t * t * t + 1;\n\t},\n\n\teaseInOutQuint: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\n\t},\n\n\teaseInSine: function(t) {\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\n\t},\n\n\teaseOutSine: function(t) {\n\t\treturn Math.sin(t * (Math.PI / 2));\n\t},\n\n\teaseInOutSine: function(t) {\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\n\t},\n\n\teaseInExpo: function(t) {\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\n\t},\n\n\teaseOutExpo: function(t) {\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\n\t},\n\n\teaseInOutExpo: function(t) {\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\n\t\t}\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\n\t},\n\n\teaseInCirc: function(t) {\n\t\tif (t >= 1) {\n\t\t\treturn t;\n\t\t}\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\n\t},\n\n\teaseOutCirc: function(t) {\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\n\t},\n\n\teaseInOutCirc: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\n\t\t}\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n\t},\n\n\teaseInElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t},\n\n\teaseOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\n\t},\n\n\teaseInOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif ((t /= 0.5) === 2) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.45;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\tif (t < 1) {\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t\t}\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\n\t},\n\teaseInBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn t * t * ((s + 1) * t - s);\n\t},\n\n\teaseOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\n\t},\n\n\teaseInOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n\t},\n\n\teaseInBounce: function(t) {\n\t\treturn 1 - effects.easeOutBounce(1 - t);\n\t},\n\n\teaseOutBounce: function(t) {\n\t\tif (t < (1 / 2.75)) {\n\t\t\treturn 7.5625 * t * t;\n\t\t}\n\t\tif (t < (2 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\n\t\t}\n\t\tif (t < (2.5 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\n\t\t}\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\n\t},\n\n\teaseInOutBounce: function(t) {\n\t\tif (t < 0.5) {\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\n\t\t}\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n\t}\n};\n\nmodule.exports = {\n\teffects: effects\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\n * @function Chart.helpers.easingEffects\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.easingEffects = effects;\n\n},{\"43\":43}],45:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(43);\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\nmodule.exports = {\n\t/**\n\t * Converts the given line height `value` in pixels for a specific font `size`.\n\t * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n\t * @param {Number} size - The font size (in pixels) used to resolve relative `value`.\n\t * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid).\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n\t * @since 2.7.0\n\t */\n\ttoLineHeight: function(value, size) {\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\n\t\tif (!matches || matches[1] === 'normal') {\n\t\t\treturn size * 1.2;\n\t\t}\n\n\t\tvalue = +matches[2];\n\n\t\tswitch (matches[3]) {\n\t\tcase 'px':\n\t\t\treturn value;\n\t\tcase '%':\n\t\t\tvalue /= 100;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\n\t\treturn size * value;\n\t},\n\n\t/**\n\t * Converts the given value into a padding object with pre-computed width/height.\n\t * @param {Number|Object} value - If a number, set the value to all TRBL component,\n\t *  else, if and object, use defined properties and sets undefined ones to 0.\n\t * @returns {Object} The padding values (top, right, bottom, left, width, height)\n\t * @since 2.7.0\n\t */\n\ttoPadding: function(value) {\n\t\tvar t, r, b, l;\n\n\t\tif (helpers.isObject(value)) {\n\t\t\tt = +value.top || 0;\n\t\t\tr = +value.right || 0;\n\t\t\tb = +value.bottom || 0;\n\t\t\tl = +value.left || 0;\n\t\t} else {\n\t\t\tt = r = b = l = +value || 0;\n\t\t}\n\n\t\treturn {\n\t\t\ttop: t,\n\t\t\tright: r,\n\t\t\tbottom: b,\n\t\t\tleft: l,\n\t\t\theight: t + b,\n\t\t\twidth: l + r\n\t\t};\n\t},\n\n\t/**\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\n\t * @param {Array[]} inputs - An array of values, falling back to the last value.\n\t * @param {Object} [context] - If defined and the current value is a function, the value\n\t * is called with `context` as first argument and the result becomes the new input.\n\t * @param {Number} [index] - If defined and the current value is an array, the value\n\t * at `index` become the new input.\n\t * @since 2.7.0\n\t */\n\tresolve: function(inputs, context, index) {\n\t\tvar i, ilen, value;\n\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\n\t\t\tvalue = inputs[i];\n\t\t\tif (value === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (context !== undefined && typeof value === 'function') {\n\t\t\t\tvalue = value(context);\n\t\t\t}\n\t\t\tif (index !== undefined && helpers.isArray(value)) {\n\t\t\t\tvalue = value[index];\n\t\t\t}\n\t\t\tif (value !== undefined) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t}\n};\n\n},{\"43\":43}],46:[function(require,module,exports){\n'use strict';\n\nmodule.exports = require(43);\nmodule.exports.easing = require(44);\nmodule.exports.canvas = require(42);\nmodule.exports.options = require(45);\n\n},{\"42\":42,\"43\":43,\"44\":44,\"45\":45}],47:[function(require,module,exports){\n/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nmodule.exports = {\n\tacquireContext: function(item) {\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\treturn item && item.getContext('2d') || null;\n\t}\n};\n\n},{}],48:[function(require,module,exports){\n/**\n * Chart.Platform implementation for targeting a web browser\n */\n\n'use strict';\n\nvar helpers = require(46);\n\nvar EXPANDO_KEY = '$chartjs';\nvar CSS_PREFIX = 'chartjs-';\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nvar EVENT_TYPES = {\n\ttouchstart: 'mousedown',\n\ttouchmove: 'mousemove',\n\ttouchend: 'mouseup',\n\tpointerenter: 'mouseenter',\n\tpointerdown: 'mousedown',\n\tpointermove: 'mousemove',\n\tpointerup: 'mouseup',\n\tpointerleave: 'mouseout',\n\tpointerout: 'mouseout'\n};\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns {Number} Size in pixels or undefined if unknown.\n */\nfunction readUsedSize(element, property) {\n\tvar value = helpers.getStyle(element, property);\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n\treturn matches ? Number(matches[1]) : undefined;\n}\n\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n */\nfunction initCanvas(canvas, config) {\n\tvar style = canvas.style;\n\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\n\tvar renderHeight = canvas.getAttribute('height');\n\tvar renderWidth = canvas.getAttribute('width');\n\n\t// Chart.js modifies some canvas values that we want to restore on destroy\n\tcanvas[EXPANDO_KEY] = {\n\t\tinitial: {\n\t\t\theight: renderHeight,\n\t\t\twidth: renderWidth,\n\t\t\tstyle: {\n\t\t\t\tdisplay: style.display,\n\t\t\t\theight: style.height,\n\t\t\t\twidth: style.width\n\t\t\t}\n\t\t}\n\t};\n\n\t// Force canvas to display as block to avoid extra space caused by inline\n\t// elements, which would interfere with the responsive resize process.\n\t// https://github.com/chartjs/Chart.js/issues/2538\n\tstyle.display = style.display || 'block';\n\n\tif (renderWidth === null || renderWidth === '') {\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\n\t\tif (displayWidth !== undefined) {\n\t\t\tcanvas.width = displayWidth;\n\t\t}\n\t}\n\n\tif (renderHeight === null || renderHeight === '') {\n\t\tif (canvas.style.height === '') {\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\n\t\t\t// which one can be specified by the user but also by charts as default option\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\n\t\t} else {\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\n\t\t\tif (displayWidth !== undefined) {\n\t\t\t\tcanvas.height = displayHeight;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn canvas;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nvar supportsEventListenerOptions = (function() {\n\tvar supports = false;\n\ttry {\n\t\tvar options = Object.defineProperty({}, 'passive', {\n\t\t\tget: function() {\n\t\t\t\tsupports = true;\n\t\t\t}\n\t\t});\n\t\twindow.addEventListener('e', null, options);\n\t} catch (e) {\n\t\t// continue regardless of error\n\t}\n\treturn supports;\n}());\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addEventListener(node, type, listener) {\n\tnode.addEventListener(type, listener, eventListenerOptions);\n}\n\nfunction removeEventListener(node, type, listener) {\n\tnode.removeEventListener(type, listener, eventListenerOptions);\n}\n\nfunction createEvent(type, chart, x, y, nativeEvent) {\n\treturn {\n\t\ttype: type,\n\t\tchart: chart,\n\t\tnative: nativeEvent || null,\n\t\tx: x !== undefined ? x : null,\n\t\ty: y !== undefined ? y : null,\n\t};\n}\n\nfunction fromNativeEvent(event, chart) {\n\tvar type = EVENT_TYPES[event.type] || event.type;\n\tvar pos = helpers.getRelativePosition(event, chart);\n\treturn createEvent(type, chart, pos.x, pos.y, event);\n}\n\nfunction throttled(fn, thisArg) {\n\tvar ticking = false;\n\tvar args = [];\n\n\treturn function() {\n\t\targs = Array.prototype.slice.call(arguments);\n\t\tthisArg = thisArg || this;\n\n\t\tif (!ticking) {\n\t\t\tticking = true;\n\t\t\thelpers.requestAnimFrame.call(window, function() {\n\t\t\t\tticking = false;\n\t\t\t\tfn.apply(thisArg, args);\n\t\t\t});\n\t\t}\n\t};\n}\n\n// Implementation based on https://github.com/marcj/css-element-queries\nfunction createResizer(handler) {\n\tvar resizer = document.createElement('div');\n\tvar cls = CSS_PREFIX + 'size-monitor';\n\tvar maxSize = 1000000;\n\tvar style =\n\t\t'position:absolute;' +\n\t\t'left:0;' +\n\t\t'top:0;' +\n\t\t'right:0;' +\n\t\t'bottom:0;' +\n\t\t'overflow:hidden;' +\n\t\t'pointer-events:none;' +\n\t\t'visibility:hidden;' +\n\t\t'z-index:-1;';\n\n\tresizer.style.cssText = style;\n\tresizer.className = cls;\n\tresizer.innerHTML =\n\t\t'<div class=\"' + cls + '-expand\" style=\"' + style + '\">' +\n\t\t\t'<div style=\"' +\n\t\t\t\t'position:absolute;' +\n\t\t\t\t'width:' + maxSize + 'px;' +\n\t\t\t\t'height:' + maxSize + 'px;' +\n\t\t\t\t'left:0;' +\n\t\t\t\t'top:0\">' +\n\t\t\t'</div>' +\n\t\t'</div>' +\n\t\t'<div class=\"' + cls + '-shrink\" style=\"' + style + '\">' +\n\t\t\t'<div style=\"' +\n\t\t\t\t'position:absolute;' +\n\t\t\t\t'width:200%;' +\n\t\t\t\t'height:200%;' +\n\t\t\t\t'left:0; ' +\n\t\t\t\t'top:0\">' +\n\t\t\t'</div>' +\n\t\t'</div>';\n\n\tvar expand = resizer.childNodes[0];\n\tvar shrink = resizer.childNodes[1];\n\n\tresizer._reset = function() {\n\t\texpand.scrollLeft = maxSize;\n\t\texpand.scrollTop = maxSize;\n\t\tshrink.scrollLeft = maxSize;\n\t\tshrink.scrollTop = maxSize;\n\t};\n\tvar onScroll = function() {\n\t\tresizer._reset();\n\t\thandler();\n\t};\n\n\taddEventListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\n\taddEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\n\n\treturn resizer;\n}\n\n// https://davidwalsh.name/detect-node-insertion\nfunction watchForRender(node, handler) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\tvar proxy = expando.renderProxy = function(e) {\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\n\t\t\thandler();\n\t\t}\n\t};\n\n\thelpers.each(ANIMATION_START_EVENTS, function(type) {\n\t\taddEventListener(node, type, proxy);\n\t});\n\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\n\t// is removed then added back immediately (same animation frame?). Accessing the\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\n\t// https://github.com/chartjs/Chart.js/issues/4737\n\texpando.reflow = !!node.offsetParent;\n\n\tnode.classList.add(CSS_RENDER_MONITOR);\n}\n\nfunction unwatchForRender(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar proxy = expando.renderProxy;\n\n\tif (proxy) {\n\t\thelpers.each(ANIMATION_START_EVENTS, function(type) {\n\t\t\tremoveEventListener(node, type, proxy);\n\t\t});\n\n\t\tdelete expando.renderProxy;\n\t}\n\n\tnode.classList.remove(CSS_RENDER_MONITOR);\n}\n\nfunction addResizeListener(node, listener, chart) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\n\t\tif (expando.resizer) {\n\t\t\treturn listener(createEvent('resize', chart));\n\t\t}\n\t}));\n\n\t// The resizer needs to be attached to the node parent, so we first need to be\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\n\twatchForRender(node, function() {\n\t\tif (expando.resizer) {\n\t\t\tvar container = node.parentNode;\n\t\t\tif (container && container !== resizer.parentNode) {\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\n\t\t\t}\n\n\t\t\t// The container size might have changed, let's reset the resizer state.\n\t\t\tresizer._reset();\n\t\t}\n\t});\n}\n\nfunction removeResizeListener(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar resizer = expando.resizer;\n\n\tdelete expando.resizer;\n\tunwatchForRender(node);\n\n\tif (resizer && resizer.parentNode) {\n\t\tresizer.parentNode.removeChild(resizer);\n\t}\n}\n\nfunction injectCSS(platform, css) {\n\t// http://stackoverflow.com/q/3922139\n\tvar style = platform._style || document.createElement('style');\n\tif (!platform._style) {\n\t\tplatform._style = style;\n\t\tcss = '/* Chart.js */\\n' + css;\n\t\tstyle.setAttribute('type', 'text/css');\n\t\tdocument.getElementsByTagName('head')[0].appendChild(style);\n\t}\n\n\tstyle.appendChild(document.createTextNode(css));\n}\n\nmodule.exports = {\n\t/**\n\t * This property holds whether this platform is enabled for the current environment.\n\t * Currently used by platform.js to select the proper implementation.\n\t * @private\n\t */\n\t_enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\n\n\tinitialize: function() {\n\t\tvar keyframes = 'from{opacity:0.99}to{opacity:1}';\n\n\t\tinjectCSS(this,\n\t\t\t// DOM rendering detection\n\t\t\t// https://davidwalsh.name/detect-node-insertion\n\t\t\t'@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\n\t\t\t'@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\n\t\t\t'.' + CSS_RENDER_MONITOR + '{' +\n\t\t\t\t'-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\n\t\t\t\t'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\n\t\t\t'}'\n\t\t);\n\t},\n\n\tacquireContext: function(item, config) {\n\t\tif (typeof item === 'string') {\n\t\t\titem = document.getElementById(item);\n\t\t} else if (item.length) {\n\t\t\t// Support for array based queries (such as jQuery)\n\t\t\titem = item[0];\n\t\t}\n\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\t// To prevent canvas fingerprinting, some add-ons undefine the getContext\n\t\t// method, for example: https://github.com/kkapsner/CanvasBlocker\n\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\tvar context = item && item.getContext && item.getContext('2d');\n\n\t\t// `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\n\t\t// inside an iframe or when running in a protected environment. We could guess the\n\t\t// types from their toString() value but let's keep things flexible and assume it's\n\t\t// a sufficient condition if the item has a context2D which has item as `canvas`.\n\t\t// https://github.com/chartjs/Chart.js/issues/3887\n\t\t// https://github.com/chartjs/Chart.js/issues/4102\n\t\t// https://github.com/chartjs/Chart.js/issues/4152\n\t\tif (context && context.canvas === item) {\n\t\t\tinitCanvas(item, config);\n\t\t\treturn context;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\treleaseContext: function(context) {\n\t\tvar canvas = context.canvas;\n\t\tif (!canvas[EXPANDO_KEY]) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar initial = canvas[EXPANDO_KEY].initial;\n\t\t['height', 'width'].forEach(function(prop) {\n\t\t\tvar value = initial[prop];\n\t\t\tif (helpers.isNullOrUndef(value)) {\n\t\t\t\tcanvas.removeAttribute(prop);\n\t\t\t} else {\n\t\t\t\tcanvas.setAttribute(prop, value);\n\t\t\t}\n\t\t});\n\n\t\thelpers.each(initial.style || {}, function(value, key) {\n\t\t\tcanvas.style[key] = value;\n\t\t});\n\n\t\t// The canvas render size might have been changed (and thus the state stack discarded),\n\t\t// we can't use save() and restore() to restore the initial state. So make sure that at\n\t\t// least the canvas context is reset to the default state by setting the canvas width.\n\t\t// https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n\t\tcanvas.width = canvas.width;\n\n\t\tdelete canvas[EXPANDO_KEY];\n\t},\n\n\taddEventListener: function(chart, type, listener) {\n\t\tvar canvas = chart.canvas;\n\t\tif (type === 'resize') {\n\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\taddResizeListener(canvas, listener, chart);\n\t\t\treturn;\n\t\t}\n\n\t\tvar expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\n\t\tvar proxies = expando.proxies || (expando.proxies = {});\n\t\tvar proxy = proxies[chart.id + '_' + type] = function(event) {\n\t\t\tlistener(fromNativeEvent(event, chart));\n\t\t};\n\n\t\taddEventListener(canvas, type, proxy);\n\t},\n\n\tremoveEventListener: function(chart, type, listener) {\n\t\tvar canvas = chart.canvas;\n\t\tif (type === 'resize') {\n\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\tremoveResizeListener(canvas, listener);\n\t\t\treturn;\n\t\t}\n\n\t\tvar expando = listener[EXPANDO_KEY] || {};\n\t\tvar proxies = expando.proxies || {};\n\t\tvar proxy = proxies[chart.id + '_' + type];\n\t\tif (!proxy) {\n\t\t\treturn;\n\t\t}\n\n\t\tremoveEventListener(canvas, type, proxy);\n\t}\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use EventTarget.addEventListener instead.\n * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n * @function Chart.helpers.addEvent\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.addEvent = addEventListener;\n\n/**\n * Provided for backward compatibility, use EventTarget.removeEventListener instead.\n * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\n * @function Chart.helpers.removeEvent\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.removeEvent = removeEventListener;\n\n},{\"46\":46}],49:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\nvar basic = require(47);\nvar dom = require(48);\n\n// @TODO Make possible to select another platform at build time.\nvar implementation = dom._enabled ? dom : basic;\n\n/**\n * @namespace Chart.platform\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\n * @since 2.4.0\n */\nmodule.exports = helpers.extend({\n\t/**\n\t * @since 2.7.0\n\t */\n\tinitialize: function() {},\n\n\t/**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {*} item - The native item from which to acquire context (platform specific)\n\t * @param {Object} options - The chart options\n\t * @returns {CanvasRenderingContext2D} context2d instance\n\t */\n\tacquireContext: function() {},\n\n\t/**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {Boolean} true if the method succeeded, else false\n\t */\n\treleaseContext: function() {},\n\n\t/**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {String} type - The ({@link IEvent}) type to listen for\n\t * @param {Function} listener - Receives a notification (an object that implements\n\t * the {@link IEvent} interface) when an event of the specified type occurs.\n\t */\n\taddEventListener: function() {},\n\n\t/**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart -Chart from which to remove the listener\n\t * @param {String} type - The ({@link IEvent}) type to remove\n\t * @param {Function} listener - The listener function to remove from the event target.\n\t */\n\tremoveEventListener: function() {}\n\n}, implementation);\n\n/**\n * @interface IPlatform\n * Allows abstracting platform dependencies away from the chart\n * @borrows Chart.platform.acquireContext as acquireContext\n * @borrows Chart.platform.releaseContext as releaseContext\n * @borrows Chart.platform.addEventListener as addEventListener\n * @borrows Chart.platform.removeEventListener as removeEventListener\n */\n\n/**\n * @interface IEvent\n * @prop {String} type - The event type name, possible values are:\n * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout',\n * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize'\n * @prop {*} native - The original native event (null for emulated events, e.g. 'resize')\n * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events)\n * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events)\n */\n\n},{\"46\":46,\"47\":47,\"48\":48}],50:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {};\nmodule.exports.filler = require(51);\nmodule.exports.legend = require(52);\nmodule.exports.title = require(53);\n\n},{\"51\":51,\"52\":52,\"53\":53}],51:[function(require,module,exports){\n/**\n * Plugin based on discussion from the following Chart.js issues:\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\n */\n\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('global', {\n\tplugins: {\n\t\tfiller: {\n\t\t\tpropagate: true\n\t\t}\n\t}\n});\n\nvar mappers = {\n\tdataset: function(source) {\n\t\tvar index = source.fill;\n\t\tvar chart = source.chart;\n\t\tvar meta = chart.getDatasetMeta(index);\n\t\tvar visible = meta && chart.isDatasetVisible(index);\n\t\tvar points = (visible && meta.dataset._children) || [];\n\t\tvar length = points.length || 0;\n\n\t\treturn !length ? null : function(point, i) {\n\t\t\treturn (i < length && points[i]._view) || null;\n\t\t};\n\t},\n\n\tboundary: function(source) {\n\t\tvar boundary = source.boundary;\n\t\tvar x = boundary ? boundary.x : null;\n\t\tvar y = boundary ? boundary.y : null;\n\n\t\treturn function(point) {\n\t\t\treturn {\n\t\t\t\tx: x === null ? point.x : x,\n\t\t\t\ty: y === null ? point.y : y,\n\t\t\t};\n\t\t};\n\t}\n};\n\n// @todo if (fill[0] === '#')\nfunction decodeFill(el, index, count) {\n\tvar model = el._model || {};\n\tvar fill = model.fill;\n\tvar target;\n\n\tif (fill === undefined) {\n\t\tfill = !!model.backgroundColor;\n\t}\n\n\tif (fill === false || fill === null) {\n\t\treturn false;\n\t}\n\n\tif (fill === true) {\n\t\treturn 'origin';\n\t}\n\n\ttarget = parseFloat(fill, 10);\n\tif (isFinite(target) && Math.floor(target) === target) {\n\t\tif (fill[0] === '-' || fill[0] === '+') {\n\t\t\ttarget = index + target;\n\t\t}\n\n\t\tif (target === index || target < 0 || target >= count) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn target;\n\t}\n\n\tswitch (fill) {\n\t// compatibility\n\tcase 'bottom':\n\t\treturn 'start';\n\tcase 'top':\n\t\treturn 'end';\n\tcase 'zero':\n\t\treturn 'origin';\n\t// supported boundaries\n\tcase 'origin':\n\tcase 'start':\n\tcase 'end':\n\t\treturn fill;\n\t// invalid fill values\n\tdefault:\n\t\treturn false;\n\t}\n}\n\nfunction computeBoundary(source) {\n\tvar model = source.el._model || {};\n\tvar scale = source.el._scale || {};\n\tvar fill = source.fill;\n\tvar target = null;\n\tvar horizontal;\n\n\tif (isFinite(fill)) {\n\t\treturn null;\n\t}\n\n\t// Backward compatibility: until v3, we still need to support boundary values set on\n\t// the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\n\t// controllers might still use it (e.g. the Smith chart).\n\n\tif (fill === 'start') {\n\t\ttarget = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\n\t} else if (fill === 'end') {\n\t\ttarget = model.scaleTop === undefined ? scale.top : model.scaleTop;\n\t} else if (model.scaleZero !== undefined) {\n\t\ttarget = model.scaleZero;\n\t} else if (scale.getBasePosition) {\n\t\ttarget = scale.getBasePosition();\n\t} else if (scale.getBasePixel) {\n\t\ttarget = scale.getBasePixel();\n\t}\n\n\tif (target !== undefined && target !== null) {\n\t\tif (target.x !== undefined && target.y !== undefined) {\n\t\t\treturn target;\n\t\t}\n\n\t\tif (typeof target === 'number' && isFinite(target)) {\n\t\t\thorizontal = scale.isHorizontal();\n\t\t\treturn {\n\t\t\t\tx: horizontal ? target : null,\n\t\t\t\ty: horizontal ? null : target\n\t\t\t};\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction resolveTarget(sources, index, propagate) {\n\tvar source = sources[index];\n\tvar fill = source.fill;\n\tvar visited = [index];\n\tvar target;\n\n\tif (!propagate) {\n\t\treturn fill;\n\t}\n\n\twhile (fill !== false && visited.indexOf(fill) === -1) {\n\t\tif (!isFinite(fill)) {\n\t\t\treturn fill;\n\t\t}\n\n\t\ttarget = sources[fill];\n\t\tif (!target) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (target.visible) {\n\t\t\treturn fill;\n\t\t}\n\n\t\tvisited.push(fill);\n\t\tfill = target.fill;\n\t}\n\n\treturn false;\n}\n\nfunction createMapper(source) {\n\tvar fill = source.fill;\n\tvar type = 'dataset';\n\n\tif (fill === false) {\n\t\treturn null;\n\t}\n\n\tif (!isFinite(fill)) {\n\t\ttype = 'boundary';\n\t}\n\n\treturn mappers[type](source);\n}\n\nfunction isDrawable(point) {\n\treturn point && !point.skip;\n}\n\nfunction drawArea(ctx, curve0, curve1, len0, len1) {\n\tvar i;\n\n\tif (!len0 || !len1) {\n\t\treturn;\n\t}\n\n\t// building first area curve (normal)\n\tctx.moveTo(curve0[0].x, curve0[0].y);\n\tfor (i = 1; i < len0; ++i) {\n\t\thelpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\n\t}\n\n\t// joining the two area curves\n\tctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\n\n\t// building opposite area curve (reverse)\n\tfor (i = len1 - 1; i > 0; --i) {\n\t\thelpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\n\t}\n}\n\nfunction doFill(ctx, points, mapper, view, color, loop) {\n\tvar count = points.length;\n\tvar span = view.spanGaps;\n\tvar curve0 = [];\n\tvar curve1 = [];\n\tvar len0 = 0;\n\tvar len1 = 0;\n\tvar i, ilen, index, p0, p1, d0, d1;\n\n\tctx.beginPath();\n\n\tfor (i = 0, ilen = (count + !!loop); i < ilen; ++i) {\n\t\tindex = i % count;\n\t\tp0 = points[index]._view;\n\t\tp1 = mapper(p0, index, view);\n\t\td0 = isDrawable(p0);\n\t\td1 = isDrawable(p1);\n\n\t\tif (d0 && d1) {\n\t\t\tlen0 = curve0.push(p0);\n\t\t\tlen1 = curve1.push(p1);\n\t\t} else if (len0 && len1) {\n\t\t\tif (!span) {\n\t\t\t\tdrawArea(ctx, curve0, curve1, len0, len1);\n\t\t\t\tlen0 = len1 = 0;\n\t\t\t\tcurve0 = [];\n\t\t\t\tcurve1 = [];\n\t\t\t} else {\n\t\t\t\tif (d0) {\n\t\t\t\t\tcurve0.push(p0);\n\t\t\t\t}\n\t\t\t\tif (d1) {\n\t\t\t\t\tcurve1.push(p1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tdrawArea(ctx, curve0, curve1, len0, len1);\n\n\tctx.closePath();\n\tctx.fillStyle = color;\n\tctx.fill();\n}\n\nmodule.exports = {\n\tid: 'filler',\n\n\tafterDatasetsUpdate: function(chart, options) {\n\t\tvar count = (chart.data.datasets || []).length;\n\t\tvar propagate = options.propagate;\n\t\tvar sources = [];\n\t\tvar meta, i, el, source;\n\n\t\tfor (i = 0; i < count; ++i) {\n\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\tel = meta.dataset;\n\t\t\tsource = null;\n\n\t\t\tif (el && el._model && el instanceof elements.Line) {\n\t\t\t\tsource = {\n\t\t\t\t\tvisible: chart.isDatasetVisible(i),\n\t\t\t\t\tfill: decodeFill(el, i, count),\n\t\t\t\t\tchart: chart,\n\t\t\t\t\tel: el\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tmeta.$filler = source;\n\t\t\tsources.push(source);\n\t\t}\n\n\t\tfor (i = 0; i < count; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!source) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tsource.fill = resolveTarget(sources, i, propagate);\n\t\t\tsource.boundary = computeBoundary(source);\n\t\t\tsource.mapper = createMapper(source);\n\t\t}\n\t},\n\n\tbeforeDatasetDraw: function(chart, args) {\n\t\tvar meta = args.meta.$filler;\n\t\tif (!meta) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar ctx = chart.ctx;\n\t\tvar el = meta.el;\n\t\tvar view = el._view;\n\t\tvar points = el._children || [];\n\t\tvar mapper = meta.mapper;\n\t\tvar color = view.backgroundColor || defaults.global.defaultColor;\n\n\t\tif (mapper && color && points.length) {\n\t\t\thelpers.canvas.clipArea(ctx, chart.chartArea);\n\t\t\tdoFill(ctx, points, mapper, view, color, el._loop);\n\t\t\thelpers.canvas.unclipArea(ctx);\n\t\t}\n\t}\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],52:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\nvar layouts = require(31);\n\nvar noop = helpers.noop;\n\ndefaults._set('global', {\n\tlegend: {\n\t\tdisplay: true,\n\t\tposition: 'top',\n\t\tfullWidth: true,\n\t\treverse: false,\n\t\tweight: 1000,\n\n\t\t// a callback that will handle\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.datasetIndex;\n\t\t\tvar ci = this.chart;\n\t\t\tvar meta = ci.getDatasetMeta(index);\n\n\t\t\t// See controller.isDatasetVisible comment\n\t\t\tmeta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\n\n\t\t\t// We hid a dataset ... rerender the chart\n\t\t\tci.update();\n\t\t},\n\n\t\tonHover: null,\n\n\t\tlabels: {\n\t\t\tboxWidth: 40,\n\t\t\tpadding: 10,\n\t\t\t// Generates labels shown in the legend\n\t\t\t// Valid properties to return:\n\t\t\t// text : text to display\n\t\t\t// fillStyle : fill of coloured box\n\t\t\t// strokeStyle: stroke of coloured box\n\t\t\t// hidden : if this legend item refers to a hidden item\n\t\t\t// lineCap : cap style for line\n\t\t\t// lineDash\n\t\t\t// lineDashOffset :\n\t\t\t// lineJoin :\n\t\t\t// lineWidth :\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\treturn helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttext: dataset.label,\n\t\t\t\t\t\tfillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]),\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(i),\n\t\t\t\t\t\tlineCap: dataset.borderCapStyle,\n\t\t\t\t\t\tlineDash: dataset.borderDash,\n\t\t\t\t\t\tlineDashOffset: dataset.borderDashOffset,\n\t\t\t\t\t\tlineJoin: dataset.borderJoinStyle,\n\t\t\t\t\t\tlineWidth: dataset.borderWidth,\n\t\t\t\t\t\tstrokeStyle: dataset.borderColor,\n\t\t\t\t\t\tpointStyle: dataset.pointStyle,\n\n\t\t\t\t\t\t// Below is extra data used for toggling the datasets\n\t\t\t\t\t\tdatasetIndex: i\n\t\t\t\t\t};\n\t\t\t\t}, this) : [];\n\t\t\t}\n\t\t}\n\t},\n\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('<ul class=\"' + chart.id + '-legend\">');\n\t\tfor (var i = 0; i < chart.data.datasets.length; i++) {\n\t\t\ttext.push('<li><span style=\"background-color:' + chart.data.datasets[i].backgroundColor + '\"></span>');\n\t\t\tif (chart.data.datasets[i].label) {\n\t\t\t\ttext.push(chart.data.datasets[i].label);\n\t\t\t}\n\t\t\ttext.push('</li>');\n\t\t}\n\t\ttext.push('</ul>');\n\t\treturn text.join('');\n\t}\n});\n\n/**\n * Helper function to get the box width based on the usePointStyle option\n * @param labelopts {Object} the label options on the legend\n * @param fontSize {Number} the label font size\n * @return {Number} width of the color box area\n */\nfunction getBoxWidth(labelOpts, fontSize) {\n\treturn labelOpts.usePointStyle ?\n\t\tfontSize * Math.SQRT2 :\n\t\tlabelOpts.boxWidth;\n}\n\n/**\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n */\nvar Legend = Element.extend({\n\n\tinitialize: function(config) {\n\t\thelpers.extend(this, config);\n\n\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\tthis.legendHitBoxes = [];\n\n\t\t// Are we in doughnut mode which has a different data type\n\t\tthis.doughnutMode = false;\n\t},\n\n\t// These methods are ordered by lifecycle. Utilities then follow.\n\t// Any function defined here is inherited by all legend types.\n\t// Any function can be extended by the legend type\n\n\tbeforeUpdate: noop,\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = margins;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\t\t// Labels\n\t\tme.beforeBuildLabels();\n\t\tme.buildLabels();\n\t\tme.afterBuildLabels();\n\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\t},\n\tafterUpdate: noop,\n\n\t//\n\n\tbeforeSetDimensions: noop,\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\n\t\t// Reset minSize\n\t\tme.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t},\n\tafterSetDimensions: noop,\n\n\t//\n\n\tbeforeBuildLabels: noop,\n\tbuildLabels: function() {\n\t\tvar me = this;\n\t\tvar labelOpts = me.options.labels || {};\n\t\tvar legendItems = helpers.callback(labelOpts.generateLabels, [me.chart], me) || [];\n\n\t\tif (labelOpts.filter) {\n\t\t\tlegendItems = legendItems.filter(function(item) {\n\t\t\t\treturn labelOpts.filter(item, me.chart.data);\n\t\t\t});\n\t\t}\n\n\t\tif (me.options.reverse) {\n\t\t\tlegendItems.reverse();\n\t\t}\n\n\t\tme.legendItems = legendItems;\n\t},\n\tafterBuildLabels: noop,\n\n\t//\n\n\tbeforeFit: noop,\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar labelOpts = opts.labels;\n\t\tvar display = opts.display;\n\n\t\tvar ctx = me.ctx;\n\n\t\tvar globalDefault = defaults.global;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\n\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\n\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\n\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\t// Reset hit boxes\n\t\tvar hitboxes = me.legendHitBoxes = [];\n\n\t\tvar minSize = me.minSize;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tif (isHorizontal) {\n\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\tminSize.height = display ? 10 : 0;\n\t\t} else {\n\t\t\tminSize.width = display ? 10 : 0;\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\t// Increase sizes here\n\t\tif (display) {\n\t\t\tctx.font = labelFont;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\t// Labels\n\n\t\t\t\t// Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n\t\t\t\tvar lineWidths = me.lineWidths = [0];\n\t\t\t\tvar totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0;\n\n\t\t\t\tctx.textAlign = 'left';\n\t\t\t\tctx.textBaseline = 'top';\n\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\tif (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) {\n\t\t\t\t\t\ttotalHeight += fontSize + (labelOpts.padding);\n\t\t\t\t\t\tlineWidths[lineWidths.length] = me.left;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t};\n\n\t\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\n\t\t\t\t});\n\n\t\t\t\tminSize.height += totalHeight;\n\n\t\t\t} else {\n\t\t\t\tvar vPadding = labelOpts.padding;\n\t\t\t\tvar columnWidths = me.columnWidths = [];\n\t\t\t\tvar totalWidth = labelOpts.padding;\n\t\t\t\tvar currentColWidth = 0;\n\t\t\t\tvar currentColHeight = 0;\n\t\t\t\tvar itemHeight = fontSize + vPadding;\n\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\t// If too tall, go to new column\n\t\t\t\t\tif (currentColHeight + itemHeight > minSize.height) {\n\t\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\n\t\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\n\n\t\t\t\t\t\tcurrentColWidth = 0;\n\t\t\t\t\t\tcurrentColHeight = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Get max width\n\t\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\n\t\t\t\t\tcurrentColHeight += itemHeight;\n\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\twidth: itemWidth,\n\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\ttotalWidth += currentColWidth;\n\t\t\t\tcolumnWidths.push(currentColWidth);\n\t\t\t\tminSize.width += totalWidth;\n\t\t\t}\n\t\t}\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\t},\n\tafterFit: noop,\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t},\n\n\t// Actually draw the legend on the canvas\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar labelOpts = opts.labels;\n\t\tvar globalDefault = defaults.global;\n\t\tvar lineDefault = globalDefault.elements.line;\n\t\tvar legendWidth = me.width;\n\t\tvar lineWidths = me.lineWidths;\n\n\t\tif (opts.display) {\n\t\t\tvar ctx = me.ctx;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\t\tvar fontColor = valueOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor);\n\t\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\n\t\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\n\t\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\n\t\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\t\t\tvar cursor;\n\n\t\t\t// Canvas setup\n\t\t\tctx.textAlign = 'left';\n\t\t\tctx.textBaseline = 'middle';\n\t\t\tctx.lineWidth = 0.5;\n\t\t\tctx.strokeStyle = fontColor; // for strikethrough effect\n\t\t\tctx.fillStyle = fontColor; // render in correct colour\n\t\t\tctx.font = labelFont;\n\n\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\tvar hitboxes = me.legendHitBoxes;\n\n\t\t\t// current position\n\t\t\tvar drawLegendBox = function(x, y, legendItem) {\n\t\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Set the ctx for the box\n\t\t\t\tctx.save();\n\n\t\t\t\tctx.fillStyle = valueOrDefault(legendItem.fillStyle, globalDefault.defaultColor);\n\t\t\t\tctx.lineCap = valueOrDefault(legendItem.lineCap, lineDefault.borderCapStyle);\n\t\t\t\tctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset);\n\t\t\t\tctx.lineJoin = valueOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle);\n\t\t\t\tctx.lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth);\n\t\t\t\tctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, globalDefault.defaultColor);\n\t\t\t\tvar isLineWidthZero = (valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth) === 0);\n\n\t\t\t\tif (ctx.setLineDash) {\n\t\t\t\t\t// IE 9 and 10 do not support line dash\n\t\t\t\t\tctx.setLineDash(valueOrDefault(legendItem.lineDash, lineDefault.borderDash));\n\t\t\t\t}\n\n\t\t\t\tif (opts.labels && opts.labels.usePointStyle) {\n\t\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\n\t\t\t\t\t// x and y to be center of figure (instead of top left)\n\t\t\t\t\tvar radius = fontSize * Math.SQRT2 / 2;\n\t\t\t\t\tvar offSet = radius / Math.SQRT2;\n\t\t\t\t\tvar centerX = x + offSet;\n\t\t\t\t\tvar centerY = y + offSet;\n\n\t\t\t\t\t// Draw pointStyle as legend symbol\n\t\t\t\t\thelpers.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY);\n\t\t\t\t} else {\n\t\t\t\t\t// Draw box as legend symbol\n\t\t\t\t\tif (!isLineWidthZero) {\n\t\t\t\t\t\tctx.strokeRect(x, y, boxWidth, fontSize);\n\t\t\t\t\t}\n\t\t\t\t\tctx.fillRect(x, y, boxWidth, fontSize);\n\t\t\t\t}\n\n\t\t\t\tctx.restore();\n\t\t\t};\n\t\t\tvar fillText = function(x, y, legendItem, textWidth) {\n\t\t\t\tvar halfFontSize = fontSize / 2;\n\t\t\t\tvar xLeft = boxWidth + halfFontSize + x;\n\t\t\t\tvar yMiddle = y + halfFontSize;\n\n\t\t\t\tctx.fillText(legendItem.text, xLeft, yMiddle);\n\n\t\t\t\tif (legendItem.hidden) {\n\t\t\t\t\t// Strikethrough the text if hidden\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.lineWidth = 2;\n\t\t\t\t\tctx.moveTo(xLeft, yMiddle);\n\t\t\t\t\tctx.lineTo(xLeft + textWidth, yMiddle);\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Horizontal\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tif (isHorizontal) {\n\t\t\t\tcursor = {\n\t\t\t\t\tx: me.left + ((legendWidth - lineWidths[0]) / 2),\n\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\tline: 0\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tcursor = {\n\t\t\t\t\tx: me.left + labelOpts.padding,\n\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\tline: 0\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar itemHeight = fontSize + labelOpts.padding;\n\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\tvar textWidth = ctx.measureText(legendItem.text).width;\n\t\t\t\tvar width = boxWidth + (fontSize / 2) + textWidth;\n\t\t\t\tvar x = cursor.x;\n\t\t\t\tvar y = cursor.y;\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tif (x + width >= legendWidth) {\n\t\t\t\t\t\ty = cursor.y += itemHeight;\n\t\t\t\t\t\tcursor.line++;\n\t\t\t\t\t\tx = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2);\n\t\t\t\t\t}\n\t\t\t\t} else if (y + itemHeight > me.bottom) {\n\t\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\n\t\t\t\t\ty = cursor.y = me.top + labelOpts.padding;\n\t\t\t\t\tcursor.line++;\n\t\t\t\t}\n\n\t\t\t\tdrawLegendBox(x, y, legendItem);\n\n\t\t\t\thitboxes[i].left = x;\n\t\t\t\thitboxes[i].top = y;\n\n\t\t\t\t// Fill the actual label\n\t\t\t\tfillText(x, y, legendItem, textWidth);\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tcursor.x += width + (labelOpts.padding);\n\t\t\t\t} else {\n\t\t\t\t\tcursor.y += itemHeight;\n\t\t\t\t}\n\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event - The event to handle\n\t * @return {Boolean} true if a change occured\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar type = e.type === 'mouseup' ? 'click' : e.type;\n\t\tvar changed = false;\n\n\t\tif (type === 'mousemove') {\n\t\t\tif (!opts.onHover) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (type === 'click') {\n\t\t\tif (!opts.onClick) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\t// Chart event already has relative position in it\n\t\tvar x = e.x;\n\t\tvar y = e.y;\n\n\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\n\t\t\t// See if we are touching one of the dataset boxes\n\t\t\tvar lh = me.legendHitBoxes;\n\t\t\tfor (var i = 0; i < lh.length; ++i) {\n\t\t\t\tvar hitBox = lh[i];\n\n\t\t\t\tif (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\n\t\t\t\t\t// Touching an element\n\t\t\t\t\tif (type === 'click') {\n\t\t\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\t\t\topts.onClick.call(me, e.native, me.legendItems[i]);\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (type === 'mousemove') {\n\t\t\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\t\t\topts.onHover.call(me, e.native, me.legendItems[i]);\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t}\n});\n\nfunction createNewLegendAndAttach(chart, legendOpts) {\n\tvar legend = new Legend({\n\t\tctx: chart.ctx,\n\t\toptions: legendOpts,\n\t\tchart: chart\n\t});\n\n\tlayouts.configure(chart, legend, legendOpts);\n\tlayouts.addBox(chart, legend);\n\tchart.legend = legend;\n}\n\nmodule.exports = {\n\tid: 'legend',\n\n\t/**\n\t * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\n\t * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\n\t * the plugin, which one will be re-exposed in the chart.js file.\n\t * https://github.com/chartjs/Chart.js/pull/2640\n\t * @private\n\t */\n\t_element: Legend,\n\n\tbeforeInit: function(chart) {\n\t\tvar legendOpts = chart.options.legend;\n\n\t\tif (legendOpts) {\n\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t}\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar legendOpts = chart.options.legend;\n\t\tvar legend = chart.legend;\n\n\t\tif (legendOpts) {\n\t\t\thelpers.mergeIf(legendOpts, defaults.global.legend);\n\n\t\t\tif (legend) {\n\t\t\t\tlayouts.configure(chart, legend, legendOpts);\n\t\t\t\tlegend.options = legendOpts;\n\t\t\t} else {\n\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t\t}\n\t\t} else if (legend) {\n\t\t\tlayouts.removeBox(chart, legend);\n\t\t\tdelete chart.legend;\n\t\t}\n\t},\n\n\tafterEvent: function(chart, e) {\n\t\tvar legend = chart.legend;\n\t\tif (legend) {\n\t\t\tlegend.handleEvent(e);\n\t\t}\n\t}\n};\n\n},{\"26\":26,\"27\":27,\"31\":31,\"46\":46}],53:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\nvar layouts = require(31);\n\nvar noop = helpers.noop;\n\ndefaults._set('global', {\n\ttitle: {\n\t\tdisplay: false,\n\t\tfontStyle: 'bold',\n\t\tfullWidth: true,\n\t\tlineHeight: 1.2,\n\t\tpadding: 10,\n\t\tposition: 'top',\n\t\ttext: '',\n\t\tweight: 2000         // by default greater than legend (1000) to be above\n\t}\n});\n\n/**\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n */\nvar Title = Element.extend({\n\tinitialize: function(config) {\n\t\tvar me = this;\n\t\thelpers.extend(me, config);\n\n\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\tme.legendHitBoxes = [];\n\t},\n\n\t// These methods are ordered by lifecycle. Utilities then follow.\n\n\tbeforeUpdate: noop,\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = margins;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\t\t// Labels\n\t\tme.beforeBuildLabels();\n\t\tme.buildLabels();\n\t\tme.afterBuildLabels();\n\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\n\t},\n\tafterUpdate: noop,\n\n\t//\n\n\tbeforeSetDimensions: noop,\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\n\t\t// Reset minSize\n\t\tme.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t},\n\tafterSetDimensions: noop,\n\n\t//\n\n\tbeforeBuildLabels: noop,\n\tbuildLabels: noop,\n\tafterBuildLabels: noop,\n\n\t//\n\n\tbeforeFit: noop,\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar opts = me.options;\n\t\tvar display = opts.display;\n\t\tvar fontSize = valueOrDefault(opts.fontSize, defaults.global.defaultFontSize);\n\t\tvar minSize = me.minSize;\n\t\tvar lineCount = helpers.isArray(opts.text) ? opts.text.length : 1;\n\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\n\t\tvar textSize = display ? (lineCount * lineHeight) + (opts.padding * 2) : 0;\n\n\t\tif (me.isHorizontal()) {\n\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\tminSize.height = textSize;\n\t\t} else {\n\t\t\tminSize.width = textSize;\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\n\t},\n\tafterFit: noop,\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\tvar pos = this.options.position;\n\t\treturn pos === 'top' || pos === 'bottom';\n\t},\n\n\t// Actually draw the title block on the canvas\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar ctx = me.ctx;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar opts = me.options;\n\t\tvar globalDefaults = defaults.global;\n\n\t\tif (opts.display) {\n\t\t\tvar fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize);\n\t\t\tvar fontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\tvar fontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\tvar titleFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\t\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\n\t\t\tvar offset = lineHeight / 2 + opts.padding;\n\t\t\tvar rotation = 0;\n\t\t\tvar top = me.top;\n\t\t\tvar left = me.left;\n\t\t\tvar bottom = me.bottom;\n\t\t\tvar right = me.right;\n\t\t\tvar maxWidth, titleX, titleY;\n\n\t\t\tctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour\n\t\t\tctx.font = titleFont;\n\n\t\t\t// Horizontal\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\n\t\t\t\ttitleY = top + offset;\n\t\t\t\tmaxWidth = right - left;\n\t\t\t} else {\n\t\t\t\ttitleX = opts.position === 'left' ? left + offset : right - offset;\n\t\t\t\ttitleY = top + ((bottom - top) / 2);\n\t\t\t\tmaxWidth = bottom - top;\n\t\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\n\t\t\t}\n\n\t\t\tctx.save();\n\t\t\tctx.translate(titleX, titleY);\n\t\t\tctx.rotate(rotation);\n\t\t\tctx.textAlign = 'center';\n\t\t\tctx.textBaseline = 'middle';\n\n\t\t\tvar text = opts.text;\n\t\t\tif (helpers.isArray(text)) {\n\t\t\t\tvar y = 0;\n\t\t\t\tfor (var i = 0; i < text.length; ++i) {\n\t\t\t\t\tctx.fillText(text[i], 0, y, maxWidth);\n\t\t\t\t\ty += lineHeight;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tctx.fillText(text, 0, 0, maxWidth);\n\t\t\t}\n\n\t\t\tctx.restore();\n\t\t}\n\t}\n});\n\nfunction createNewTitleBlockAndAttach(chart, titleOpts) {\n\tvar title = new Title({\n\t\tctx: chart.ctx,\n\t\toptions: titleOpts,\n\t\tchart: chart\n\t});\n\n\tlayouts.configure(chart, title, titleOpts);\n\tlayouts.addBox(chart, title);\n\tchart.titleBlock = title;\n}\n\nmodule.exports = {\n\tid: 'title',\n\n\t/**\n\t * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\n\t * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\n\t * the plugin, which one will be re-exposed in the chart.js file.\n\t * https://github.com/chartjs/Chart.js/pull/2640\n\t * @private\n\t */\n\t_element: Title,\n\n\tbeforeInit: function(chart) {\n\t\tvar titleOpts = chart.options.title;\n\n\t\tif (titleOpts) {\n\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t}\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar titleOpts = chart.options.title;\n\t\tvar titleBlock = chart.titleBlock;\n\n\t\tif (titleOpts) {\n\t\t\thelpers.mergeIf(titleOpts, defaults.global.title);\n\n\t\t\tif (titleBlock) {\n\t\t\t\tlayouts.configure(chart, titleBlock, titleOpts);\n\t\t\t\ttitleBlock.options = titleOpts;\n\t\t\t} else {\n\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t\t}\n\t\t} else if (titleBlock) {\n\t\t\tlayouts.removeBox(chart, titleBlock);\n\t\t\tdelete chart.titleBlock;\n\t\t}\n\t}\n};\n\n},{\"26\":26,\"27\":27,\"31\":31,\"46\":46}],54:[function(require,module,exports){\n'use strict';\n\nvar Scale = require(33);\nvar scaleService = require(34);\n\nmodule.exports = function() {\n\n\t// Default config for a category scale\n\tvar defaultConfig = {\n\t\tposition: 'bottom'\n\t};\n\n\tvar DatasetScale = Scale.extend({\n\t\t/**\n\t\t* Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those\n\t\t* else fall back to data.labels\n\t\t* @private\n\t\t*/\n\t\tgetLabels: function() {\n\t\t\tvar data = this.chart.data;\n\t\t\treturn this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels;\n\t\t},\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar labels = me.getLabels();\n\t\t\tme.minIndex = 0;\n\t\t\tme.maxIndex = labels.length - 1;\n\t\t\tvar findIndex;\n\n\t\t\tif (me.options.ticks.min !== undefined) {\n\t\t\t\t// user specified min value\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.min);\n\t\t\t\tme.minIndex = findIndex !== -1 ? findIndex : me.minIndex;\n\t\t\t}\n\n\t\t\tif (me.options.ticks.max !== undefined) {\n\t\t\t\t// user specified max value\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.max);\n\t\t\t\tme.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex;\n\t\t\t}\n\n\t\t\tme.min = labels[me.minIndex];\n\t\t\tme.max = labels[me.maxIndex];\n\t\t},\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar labels = me.getLabels();\n\t\t\t// If we are viewing some subset of labels, slice the original array\n\t\t\tme.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1);\n\t\t},\n\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar data = me.chart.data;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\n\t\t\tif (data.yLabels && !isHorizontal) {\n\t\t\t\treturn me.getRightValue(data.datasets[datasetIndex].data[index]);\n\t\t\t}\n\t\t\treturn me.ticks[index - me.minIndex];\n\t\t},\n\n\t\t// Used to get data value locations.  Value can either be an index or a numerical value\n\t\tgetPixelForValue: function(value, index) {\n\t\t\tvar me = this;\n\t\t\tvar offset = me.options.offset;\n\t\t\t// 1 is added because we need the length but we have the indexes\n\t\t\tvar offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1);\n\n\t\t\t// If value is a data object, then index is the index in the data array,\n\t\t\t// not the index of the scale. We need to change that.\n\t\t\tvar valueCategory;\n\t\t\tif (value !== undefined && value !== null) {\n\t\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\n\t\t\t}\n\t\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\n\t\t\t\tvar labels = me.getLabels();\n\t\t\t\tvalue = valueCategory || value;\n\t\t\t\tvar idx = labels.indexOf(value);\n\t\t\t\tindex = idx !== -1 ? idx : index;\n\t\t\t}\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tvar valueWidth = me.width / offsetAmt;\n\t\t\t\tvar widthOffset = (valueWidth * (index - me.minIndex));\n\n\t\t\t\tif (offset) {\n\t\t\t\t\twidthOffset += (valueWidth / 2);\n\t\t\t\t}\n\n\t\t\t\treturn me.left + Math.round(widthOffset);\n\t\t\t}\n\t\t\tvar valueHeight = me.height / offsetAmt;\n\t\t\tvar heightOffset = (valueHeight * (index - me.minIndex));\n\n\t\t\tif (offset) {\n\t\t\t\theightOffset += (valueHeight / 2);\n\t\t\t}\n\n\t\t\treturn me.top + Math.round(heightOffset);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.ticks[index], index + this.minIndex, null);\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar offset = me.options.offset;\n\t\t\tvar value;\n\t\t\tvar offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n\t\t\tvar horz = me.isHorizontal();\n\t\t\tvar valueDimension = (horz ? me.width : me.height) / offsetAmt;\n\n\t\t\tpixel -= horz ? me.left : me.top;\n\n\t\t\tif (offset) {\n\t\t\t\tpixel -= (valueDimension / 2);\n\t\t\t}\n\n\t\t\tif (pixel <= 0) {\n\t\t\t\tvalue = 0;\n\t\t\t} else {\n\t\t\t\tvalue = Math.round(pixel / valueDimension);\n\t\t\t}\n\n\t\t\treturn value + me.minIndex;\n\t\t},\n\t\tgetBasePixel: function() {\n\t\t\treturn this.bottom;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('category', DatasetScale, defaultConfig);\n};\n\n},{\"33\":33,\"34\":34}],55:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar helpers = require(46);\nvar scaleService = require(34);\nvar Ticks = require(35);\n\nmodule.exports = function(Chart) {\n\n\tvar defaultConfig = {\n\t\tposition: 'left',\n\t\tticks: {\n\t\t\tcallback: Ticks.formatters.linear\n\t\t}\n\t};\n\n\tvar LinearScale = Chart.LinearScaleBase.extend({\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar chart = me.chart;\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tvar DEFAULT_MIN = 0;\n\t\t\tvar DEFAULT_MAX = 1;\n\n\t\t\tfunction IDMatches(meta) {\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t\t}\n\n\t\t\t// First Calculate the range\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\n\t\t\tvar hasStacks = opts.stacked;\n\t\t\tif (hasStacks === undefined) {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (hasStacks) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\t\thasStacks = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (opts.stacked || hasStacks) {\n\t\t\t\tvar valuesPerStack = {};\n\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tvar key = [\n\t\t\t\t\t\tmeta.type,\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\t\tmeta.stack\n\t\t\t\t\t].join('.');\n\n\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\tvaluesPerStack[key] = {\n\t\t\t\t\t\t\tpositiveValues: [],\n\t\t\t\t\t\t\tnegativeValues: []\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store these per type\n\t\t\t\t\tvar positiveValues = valuesPerStack[key].positiveValues;\n\t\t\t\t\tvar negativeValues = valuesPerStack[key].negativeValues;\n\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tpositiveValues[index] = positiveValues[index] || 0;\n\t\t\t\t\t\t\tnegativeValues[index] = negativeValues[index] || 0;\n\n\t\t\t\t\t\t\tif (opts.relativePoints) {\n\t\t\t\t\t\t\t\tpositiveValues[index] = 100;\n\t\t\t\t\t\t\t} else if (value < 0) {\n\t\t\t\t\t\t\t\tnegativeValues[index] += value;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpositiveValues[index] += value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\n\t\t\t\t\tvar values = valuesForType.positiveValues.concat(valuesForType.negativeValues);\n\t\t\t\t\tvar minVal = helpers.min(values);\n\t\t\t\t\tvar maxVal = helpers.max(values);\n\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\n\t\t\tme.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\t\tthis.handleTickRangeOptions();\n\t\t},\n\t\tgetTickLimit: function() {\n\t\t\tvar maxTicks;\n\t\t\tvar me = this;\n\t\t\tvar tickOpts = me.options.ticks;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50));\n\t\t\t} else {\n\t\t\t\t// The factor of 2 used to scale the font size has been experimentally determined.\n\t\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize);\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize)));\n\t\t\t}\n\n\t\t\treturn maxTicks;\n\t\t},\n\t\t// Called after the ticks are built. We need\n\t\thandleDirectionalChanges: function() {\n\t\t\tif (!this.isHorizontal()) {\n\t\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\n\t\t\t\tthis.ticks.reverse();\n\t\t\t}\n\t\t},\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\t// Utils\n\t\tgetPixelForValue: function(value) {\n\t\t\t// This must be called after fit has been run so that\n\t\t\t// this.left, this.top, this.right, and this.bottom have been defined\n\t\t\tvar me = this;\n\t\t\tvar start = me.start;\n\n\t\t\tvar rightValue = +me.getRightValue(value);\n\t\t\tvar pixel;\n\t\t\tvar range = me.end - start;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tpixel = me.left + (me.width / range * (rightValue - start));\n\t\t\t} else {\n\t\t\t\tpixel = me.bottom - (me.height / range * (rightValue - start));\n\t\t\t}\n\t\t\treturn pixel;\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tvar innerDimension = isHorizontal ? me.width : me.height;\n\t\t\tvar offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension;\n\t\t\treturn me.start + ((me.end - me.start) * offset);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.ticksAsNumbers[index]);\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('linear', LinearScale, defaultConfig);\n};\n\n},{\"26\":26,\"34\":34,\"35\":35,\"46\":46}],56:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\nvar Scale = require(33);\n\n/**\n * Generate a set of linear ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {Array<Number>} array of tick values\n */\nfunction generateTicks(generationOptions, dataRange) {\n\tvar ticks = [];\n\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\n\t// \"nice number\" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n\t// for details.\n\n\tvar factor;\n\tvar precision;\n\tvar spacing;\n\n\tif (generationOptions.stepSize && generationOptions.stepSize > 0) {\n\t\tspacing = generationOptions.stepSize;\n\t} else {\n\t\tvar niceRange = helpers.niceNum(dataRange.max - dataRange.min, false);\n\t\tspacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true);\n\n\t\tprecision = generationOptions.precision;\n\t\tif (precision !== undefined) {\n\t\t\t// If the user specified a precision, round to that number of decimal places\n\t\t\tfactor = Math.pow(10, precision);\n\t\t\tspacing = Math.ceil(spacing * factor) / factor;\n\t\t}\n\t}\n\tvar niceMin = Math.floor(dataRange.min / spacing) * spacing;\n\tvar niceMax = Math.ceil(dataRange.max / spacing) * spacing;\n\n\t// If min, max and stepSize is set and they make an evenly spaced scale use it.\n\tif (!helpers.isNullOrUndef(generationOptions.min) && !helpers.isNullOrUndef(generationOptions.max) && generationOptions.stepSize) {\n\t\t// If very close to our whole number, use it.\n\t\tif (helpers.almostWhole((generationOptions.max - generationOptions.min) / generationOptions.stepSize, spacing / 1000)) {\n\t\t\tniceMin = generationOptions.min;\n\t\t\tniceMax = generationOptions.max;\n\t\t}\n\t}\n\n\tvar numSpaces = (niceMax - niceMin) / spacing;\n\t// If very close to our rounded value, use it.\n\tif (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n\t\tnumSpaces = Math.round(numSpaces);\n\t} else {\n\t\tnumSpaces = Math.ceil(numSpaces);\n\t}\n\n\tprecision = 1;\n\tif (spacing < 1) {\n\t\tprecision = Math.pow(10, 1 - Math.floor(helpers.log10(spacing)));\n\t\tniceMin = Math.round(niceMin * precision) / precision;\n\t\tniceMax = Math.round(niceMax * precision) / precision;\n\t}\n\tticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin);\n\tfor (var j = 1; j < numSpaces; ++j) {\n\t\tticks.push(Math.round((niceMin + j * spacing) * precision) / precision);\n\t}\n\tticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax);\n\n\treturn ticks;\n}\n\nmodule.exports = function(Chart) {\n\n\tvar noop = helpers.noop;\n\n\tChart.LinearScaleBase = Scale.extend({\n\t\tgetRightValue: function(value) {\n\t\t\tif (typeof value === 'string') {\n\t\t\t\treturn +value;\n\t\t\t}\n\t\t\treturn Scale.prototype.getRightValue.call(this, value);\n\t\t},\n\n\t\thandleTickRangeOptions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\n\t\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\n\t\t\t// axis, they can manually override it\n\t\t\tif (tickOpts.beginAtZero) {\n\t\t\t\tvar minSign = helpers.sign(me.min);\n\t\t\t\tvar maxSign = helpers.sign(me.max);\n\n\t\t\t\tif (minSign < 0 && maxSign < 0) {\n\t\t\t\t\t// move the top up to 0\n\t\t\t\t\tme.max = 0;\n\t\t\t\t} else if (minSign > 0 && maxSign > 0) {\n\t\t\t\t\t// move the bottom down to 0\n\t\t\t\t\tme.min = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\n\t\t\tvar setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\n\n\t\t\tif (tickOpts.min !== undefined) {\n\t\t\t\tme.min = tickOpts.min;\n\t\t\t} else if (tickOpts.suggestedMin !== undefined) {\n\t\t\t\tif (me.min === null) {\n\t\t\t\t\tme.min = tickOpts.suggestedMin;\n\t\t\t\t} else {\n\t\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tickOpts.max !== undefined) {\n\t\t\t\tme.max = tickOpts.max;\n\t\t\t} else if (tickOpts.suggestedMax !== undefined) {\n\t\t\t\tif (me.max === null) {\n\t\t\t\t\tme.max = tickOpts.suggestedMax;\n\t\t\t\t} else {\n\t\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (setMin !== setMax) {\n\t\t\t\t// We set the min or the max but not both.\n\t\t\t\t// So ensure that our range is good\n\t\t\t\t// Inverted or 0 length range can happen when\n\t\t\t\t// ticks.min is set, and no datasets are visible\n\t\t\t\tif (me.min >= me.max) {\n\t\t\t\t\tif (setMin) {\n\t\t\t\t\t\tme.max = me.min + 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tme.min = me.max - 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.min === me.max) {\n\t\t\t\tme.max++;\n\n\t\t\t\tif (!tickOpts.beginAtZero) {\n\t\t\t\t\tme.min--;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetTickLimit: noop,\n\t\thandleDirectionalChanges: noop,\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\t// Figure out what the max number of ticks we can support it is based on the size of\n\t\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n\t\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t\t\t// the graph. Make sure we always have at least 2 ticks\n\t\t\tvar maxTicks = me.getTickLimit();\n\t\t\tmaxTicks = Math.max(2, maxTicks);\n\n\t\t\tvar numericGeneratorOptions = {\n\t\t\t\tmaxTicks: maxTicks,\n\t\t\t\tmin: tickOpts.min,\n\t\t\t\tmax: tickOpts.max,\n\t\t\t\tprecision: tickOpts.precision,\n\t\t\t\tstepSize: helpers.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\n\t\t\t};\n\t\t\tvar ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\n\n\t\t\tme.handleDirectionalChanges();\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(ticks);\n\t\t\tme.min = helpers.min(ticks);\n\n\t\t\tif (tickOpts.reverse) {\n\t\t\t\tticks.reverse();\n\n\t\t\t\tme.start = me.max;\n\t\t\t\tme.end = me.min;\n\t\t\t} else {\n\t\t\t\tme.start = me.min;\n\t\t\t\tme.end = me.max;\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\t\t\tme.ticksAsNumbers = me.ticks.slice();\n\t\t\tme.zeroLineIndex = me.ticks.indexOf(0);\n\n\t\t\tScale.prototype.convertTicksToLabels.call(me);\n\t\t}\n\t});\n};\n\n},{\"33\":33,\"46\":46}],57:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\nvar Scale = require(33);\nvar scaleService = require(34);\nvar Ticks = require(35);\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {Array<Number>} array of tick values\n */\nfunction generateTicks(generationOptions, dataRange) {\n\tvar ticks = [];\n\tvar valueOrDefault = helpers.valueOrDefault;\n\n\t// Figure out what the max number of ticks we can support it is based on the size of\n\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t// the graph\n\tvar tickVal = valueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min))));\n\n\tvar endExp = Math.floor(helpers.log10(dataRange.max));\n\tvar endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n\tvar exp, significand;\n\n\tif (tickVal === 0) {\n\t\texp = Math.floor(helpers.log10(dataRange.minNotZero));\n\t\tsignificand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\n\n\t\tticks.push(tickVal);\n\t\ttickVal = significand * Math.pow(10, exp);\n\t} else {\n\t\texp = Math.floor(helpers.log10(tickVal));\n\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp));\n\t}\n\tvar precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n\n\tdo {\n\t\tticks.push(tickVal);\n\n\t\t++significand;\n\t\tif (significand === 10) {\n\t\t\tsignificand = 1;\n\t\t\t++exp;\n\t\t\tprecision = exp >= 0 ? 1 : precision;\n\t\t}\n\n\t\ttickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n\t} while (exp < endExp || (exp === endExp && significand < endSignificand));\n\n\tvar lastTick = valueOrDefault(generationOptions.max, tickVal);\n\tticks.push(lastTick);\n\n\treturn ticks;\n}\n\n\nmodule.exports = function(Chart) {\n\n\tvar defaultConfig = {\n\t\tposition: 'left',\n\n\t\t// label settings\n\t\tticks: {\n\t\t\tcallback: Ticks.formatters.logarithmic\n\t\t}\n\t};\n\n\tvar LogarithmicScale = Scale.extend({\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar chart = me.chart;\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tfunction IDMatches(meta) {\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t\t}\n\n\t\t\t// Calculate Range\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\t\t\tme.minNotZero = null;\n\n\t\t\tvar hasStacks = opts.stacked;\n\t\t\tif (hasStacks === undefined) {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (hasStacks) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\t\thasStacks = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (opts.stacked || hasStacks) {\n\t\t\t\tvar valuesPerStack = {};\n\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tvar key = [\n\t\t\t\t\t\tmeta.type,\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\t\tmeta.stack\n\t\t\t\t\t].join('.');\n\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\t\tvaluesPerStack[key] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar values = valuesPerStack[key];\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvalues[index] = values[index] || 0;\n\t\t\t\t\t\t\tvalues[index] += value;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\n\t\t\t\t\tif (valuesForType.length > 0) {\n\t\t\t\t\t\tvar minVal = helpers.min(valuesForType);\n\t\t\t\t\t\tvar maxVal = helpers.max(valuesForType);\n\t\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) {\n\t\t\t\t\t\t\t\tme.minNotZero = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max\n\t\t\tthis.handleTickRangeOptions();\n\t\t},\n\t\thandleTickRangeOptions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\t\tvar DEFAULT_MIN = 1;\n\t\t\tvar DEFAULT_MAX = 10;\n\n\t\t\tme.min = valueOrDefault(tickOpts.min, me.min);\n\t\t\tme.max = valueOrDefault(tickOpts.max, me.max);\n\n\t\t\tif (me.min === me.max) {\n\t\t\t\tif (me.min !== 0 && me.min !== null) {\n\t\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1);\n\t\t\t\t\tme.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1);\n\t\t\t\t} else {\n\t\t\t\t\tme.min = DEFAULT_MIN;\n\t\t\t\t\tme.max = DEFAULT_MAX;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (me.min === null) {\n\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.max)) - 1);\n\t\t\t}\n\t\t\tif (me.max === null) {\n\t\t\t\tme.max = me.min !== 0\n\t\t\t\t\t? Math.pow(10, Math.floor(helpers.log10(me.min)) + 1)\n\t\t\t\t\t: DEFAULT_MAX;\n\t\t\t}\n\t\t\tif (me.minNotZero === null) {\n\t\t\t\tif (me.min > 0) {\n\t\t\t\t\tme.minNotZero = me.min;\n\t\t\t\t} else if (me.max < 1) {\n\t\t\t\t\tme.minNotZero = Math.pow(10, Math.floor(helpers.log10(me.max)));\n\t\t\t\t} else {\n\t\t\t\t\tme.minNotZero = DEFAULT_MIN;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar reverse = !me.isHorizontal();\n\n\t\t\tvar generationOptions = {\n\t\t\t\tmin: tickOpts.min,\n\t\t\t\tmax: tickOpts.max\n\t\t\t};\n\t\t\tvar ticks = me.ticks = generateTicks(generationOptions, me);\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(ticks);\n\t\t\tme.min = helpers.min(ticks);\n\n\t\t\tif (tickOpts.reverse) {\n\t\t\t\treverse = !reverse;\n\t\t\t\tme.start = me.max;\n\t\t\t\tme.end = me.min;\n\t\t\t} else {\n\t\t\t\tme.start = me.min;\n\t\t\t\tme.end = me.max;\n\t\t\t}\n\t\t\tif (reverse) {\n\t\t\t\tticks.reverse();\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tthis.tickValues = this.ticks.slice();\n\n\t\t\tScale.prototype.convertTicksToLabels.call(this);\n\t\t},\n\t\t// Get the correct tooltip label\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.tickValues[index]);\n\t\t},\n\t\t/**\n\t\t * Returns the value of the first tick.\n\t\t * @param {Number} value - The minimum not zero value.\n\t\t * @return {Number} The first tick value.\n\t\t * @private\n\t\t */\n\t\t_getFirstTickValue: function(value) {\n\t\t\tvar exp = Math.floor(helpers.log10(value));\n\t\t\tvar significand = Math.floor(value / Math.pow(10, exp));\n\n\t\t\treturn significand * Math.pow(10, exp);\n\t\t},\n\t\tgetPixelForValue: function(value) {\n\t\t\tvar me = this;\n\t\t\tvar reverse = me.options.ticks.reverse;\n\t\t\tvar log10 = helpers.log10;\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\n\t\t\tvar offset = 0;\n\t\t\tvar innerDimension, pixel, start, end, sign;\n\n\t\t\tvalue = +me.getRightValue(value);\n\t\t\tif (reverse) {\n\t\t\t\tstart = me.end;\n\t\t\t\tend = me.start;\n\t\t\t\tsign = -1;\n\t\t\t} else {\n\t\t\t\tstart = me.start;\n\t\t\t\tend = me.end;\n\t\t\t\tsign = 1;\n\t\t\t}\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tinnerDimension = me.width;\n\t\t\t\tpixel = reverse ? me.right : me.left;\n\t\t\t} else {\n\t\t\t\tinnerDimension = me.height;\n\t\t\t\tsign *= -1; // invert, since the upper-left corner of the canvas is at pixel (0, 0)\n\t\t\t\tpixel = reverse ? me.top : me.bottom;\n\t\t\t}\n\t\t\tif (value !== start) {\n\t\t\t\tif (start === 0) { // include zero tick\n\t\t\t\t\toffset = helpers.getValueOrDefault(\n\t\t\t\t\t\tme.options.ticks.fontSize,\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\n\t\t\t\t\t);\n\t\t\t\t\tinnerDimension -= offset;\n\t\t\t\t\tstart = firstTickValue;\n\t\t\t\t}\n\t\t\t\tif (value !== 0) {\n\t\t\t\t\toffset += innerDimension / (log10(end) - log10(start)) * (log10(value) - log10(start));\n\t\t\t\t}\n\t\t\t\tpixel += sign * offset;\n\t\t\t}\n\t\t\treturn pixel;\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar reverse = me.options.ticks.reverse;\n\t\t\tvar log10 = helpers.log10;\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\n\t\t\tvar innerDimension, start, end, value;\n\n\t\t\tif (reverse) {\n\t\t\t\tstart = me.end;\n\t\t\t\tend = me.start;\n\t\t\t} else {\n\t\t\t\tstart = me.start;\n\t\t\t\tend = me.end;\n\t\t\t}\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tinnerDimension = me.width;\n\t\t\t\tvalue = reverse ? me.right - pixel : pixel - me.left;\n\t\t\t} else {\n\t\t\t\tinnerDimension = me.height;\n\t\t\t\tvalue = reverse ? pixel - me.top : me.bottom - pixel;\n\t\t\t}\n\t\t\tif (value !== start) {\n\t\t\t\tif (start === 0) { // include zero tick\n\t\t\t\t\tvar offset = helpers.getValueOrDefault(\n\t\t\t\t\t\tme.options.ticks.fontSize,\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\n\t\t\t\t\t);\n\t\t\t\t\tvalue -= offset;\n\t\t\t\t\tinnerDimension -= offset;\n\t\t\t\t\tstart = firstTickValue;\n\t\t\t\t}\n\t\t\t\tvalue *= log10(end) - log10(start);\n\t\t\t\tvalue /= innerDimension;\n\t\t\t\tvalue = Math.pow(10, log10(start) + value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('logarithmic', LogarithmicScale, defaultConfig);\n};\n\n},{\"33\":33,\"34\":34,\"35\":35,\"46\":46}],58:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar helpers = require(46);\nvar scaleService = require(34);\nvar Ticks = require(35);\n\nmodule.exports = function(Chart) {\n\n\tvar globalDefaults = defaults.global;\n\n\tvar defaultConfig = {\n\t\tdisplay: true,\n\n\t\t// Boolean - Whether to animate scaling the chart from the centre\n\t\tanimate: true,\n\t\tposition: 'chartArea',\n\n\t\tangleLines: {\n\t\t\tdisplay: true,\n\t\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\t\tlineWidth: 1\n\t\t},\n\n\t\tgridLines: {\n\t\t\tcircular: false\n\t\t},\n\n\t\t// label settings\n\t\tticks: {\n\t\t\t// Boolean - Show a backdrop to the scale label\n\t\t\tshowLabelBackdrop: true,\n\n\t\t\t// String - The colour of the label backdrop\n\t\t\tbackdropColor: 'rgba(255,255,255,0.75)',\n\n\t\t\t// Number - The backdrop padding above & below the label in pixels\n\t\t\tbackdropPaddingY: 2,\n\n\t\t\t// Number - The backdrop padding to the side of the label in pixels\n\t\t\tbackdropPaddingX: 2,\n\n\t\t\tcallback: Ticks.formatters.linear\n\t\t},\n\n\t\tpointLabels: {\n\t\t\t// Boolean - if true, show point labels\n\t\t\tdisplay: true,\n\n\t\t\t// Number - Point label font size in pixels\n\t\t\tfontSize: 10,\n\n\t\t\t// Function - Used to convert point labels\n\t\t\tcallback: function(label) {\n\t\t\t\treturn label;\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction getValueCount(scale) {\n\t\tvar opts = scale.options;\n\t\treturn opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0;\n\t}\n\n\tfunction getPointLabelFontOptions(scale) {\n\t\tvar pointLabelOptions = scale.options.pointLabels;\n\t\tvar fontSize = helpers.valueOrDefault(pointLabelOptions.fontSize, globalDefaults.defaultFontSize);\n\t\tvar fontStyle = helpers.valueOrDefault(pointLabelOptions.fontStyle, globalDefaults.defaultFontStyle);\n\t\tvar fontFamily = helpers.valueOrDefault(pointLabelOptions.fontFamily, globalDefaults.defaultFontFamily);\n\t\tvar font = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\treturn {\n\t\t\tsize: fontSize,\n\t\t\tstyle: fontStyle,\n\t\t\tfamily: fontFamily,\n\t\t\tfont: font\n\t\t};\n\t}\n\n\tfunction measureLabelSize(ctx, fontSize, label) {\n\t\tif (helpers.isArray(label)) {\n\t\t\treturn {\n\t\t\t\tw: helpers.longestText(ctx, ctx.font, label),\n\t\t\t\th: (label.length * fontSize) + ((label.length - 1) * 1.5 * fontSize)\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tw: ctx.measureText(label).width,\n\t\t\th: fontSize\n\t\t};\n\t}\n\n\tfunction determineLimits(angle, pos, size, min, max) {\n\t\tif (angle === min || angle === max) {\n\t\t\treturn {\n\t\t\t\tstart: pos - (size / 2),\n\t\t\t\tend: pos + (size / 2)\n\t\t\t};\n\t\t} else if (angle < min || angle > max) {\n\t\t\treturn {\n\t\t\t\tstart: pos - size - 5,\n\t\t\t\tend: pos\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tstart: pos,\n\t\t\tend: pos + size + 5\n\t\t};\n\t}\n\n\t/**\n\t * Helper function to fit a radial linear scale with point labels\n\t */\n\tfunction fitWithPointLabels(scale) {\n\t\t/*\n\t\t * Right, this is really confusing and there is a lot of maths going on here\n\t\t * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n\t\t *\n\t\t * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n\t\t *\n\t\t * Solution:\n\t\t *\n\t\t * We assume the radius of the polygon is half the size of the canvas at first\n\t\t * at each index we check if the text overlaps.\n\t\t *\n\t\t * Where it does, we store that angle and that index.\n\t\t *\n\t\t * After finding the largest index and angle we calculate how much we need to remove\n\t\t * from the shape radius to move the point inwards by that x.\n\t\t *\n\t\t * We average the left and right distances to get the maximum shape radius that can fit in the box\n\t\t * along with labels.\n\t\t *\n\t\t * Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n\t\t * on each side, removing that from the size, halving it and adding the left x protrusion width.\n\t\t *\n\t\t * This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n\t\t * and position it in the most space efficient manner\n\t\t *\n\t\t * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\t\t */\n\n\t\tvar plFont = getPointLabelFontOptions(scale);\n\n\t\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n\t\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\n\t\tvar furthestLimits = {\n\t\t\tr: scale.width,\n\t\t\tl: 0,\n\t\t\tt: scale.height,\n\t\t\tb: 0\n\t\t};\n\t\tvar furthestAngles = {};\n\t\tvar i, textSize, pointPosition;\n\n\t\tscale.ctx.font = plFont.font;\n\t\tscale._pointLabelSizes = [];\n\n\t\tvar valueCount = getValueCount(scale);\n\t\tfor (i = 0; i < valueCount; i++) {\n\t\t\tpointPosition = scale.getPointPosition(i, largestPossibleRadius);\n\t\t\ttextSize = measureLabelSize(scale.ctx, plFont.size, scale.pointLabels[i] || '');\n\t\t\tscale._pointLabelSizes[i] = textSize;\n\n\t\t\t// Add quarter circle to make degree 0 mean top of circle\n\t\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\t\tvar angle = helpers.toDegrees(angleRadians) % 360;\n\t\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n\t\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n\n\t\t\tif (hLimits.start < furthestLimits.l) {\n\t\t\t\tfurthestLimits.l = hLimits.start;\n\t\t\t\tfurthestAngles.l = angleRadians;\n\t\t\t}\n\n\t\t\tif (hLimits.end > furthestLimits.r) {\n\t\t\t\tfurthestLimits.r = hLimits.end;\n\t\t\t\tfurthestAngles.r = angleRadians;\n\t\t\t}\n\n\t\t\tif (vLimits.start < furthestLimits.t) {\n\t\t\t\tfurthestLimits.t = vLimits.start;\n\t\t\t\tfurthestAngles.t = angleRadians;\n\t\t\t}\n\n\t\t\tif (vLimits.end > furthestLimits.b) {\n\t\t\t\tfurthestLimits.b = vLimits.end;\n\t\t\t\tfurthestAngles.b = angleRadians;\n\t\t\t}\n\t\t}\n\n\t\tscale.setReductions(largestPossibleRadius, furthestLimits, furthestAngles);\n\t}\n\n\t/**\n\t * Helper function to fit a radial linear scale with no point labels\n\t */\n\tfunction fit(scale) {\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\n\t\tscale.drawingArea = Math.round(largestPossibleRadius);\n\t\tscale.setCenterPoint(0, 0, 0, 0);\n\t}\n\n\tfunction getTextAlignForAngle(angle) {\n\t\tif (angle === 0 || angle === 180) {\n\t\t\treturn 'center';\n\t\t} else if (angle < 180) {\n\t\t\treturn 'left';\n\t\t}\n\n\t\treturn 'right';\n\t}\n\n\tfunction fillText(ctx, text, position, fontSize) {\n\t\tif (helpers.isArray(text)) {\n\t\t\tvar y = position.y;\n\t\t\tvar spacing = 1.5 * fontSize;\n\n\t\t\tfor (var i = 0; i < text.length; ++i) {\n\t\t\t\tctx.fillText(text[i], position.x, y);\n\t\t\t\ty += spacing;\n\t\t\t}\n\t\t} else {\n\t\t\tctx.fillText(text, position.x, position.y);\n\t\t}\n\t}\n\n\tfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\n\t\tif (angle === 90 || angle === 270) {\n\t\t\tposition.y -= (textSize.h / 2);\n\t\t} else if (angle > 270 || angle < 90) {\n\t\t\tposition.y -= textSize.h;\n\t\t}\n\t}\n\n\tfunction drawPointLabels(scale) {\n\t\tvar ctx = scale.ctx;\n\t\tvar opts = scale.options;\n\t\tvar angleLineOpts = opts.angleLines;\n\t\tvar pointLabelOpts = opts.pointLabels;\n\n\t\tctx.lineWidth = angleLineOpts.lineWidth;\n\t\tctx.strokeStyle = angleLineOpts.color;\n\n\t\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\n\n\t\t// Point Label Font\n\t\tvar plFont = getPointLabelFontOptions(scale);\n\n\t\tctx.textBaseline = 'top';\n\n\t\tfor (var i = getValueCount(scale) - 1; i >= 0; i--) {\n\t\t\tif (angleLineOpts.display) {\n\t\t\t\tvar outerPosition = scale.getPointPosition(i, outerDistance);\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(scale.xCenter, scale.yCenter);\n\t\t\t\tctx.lineTo(outerPosition.x, outerPosition.y);\n\t\t\t\tctx.stroke();\n\t\t\t\tctx.closePath();\n\t\t\t}\n\n\t\t\tif (pointLabelOpts.display) {\n\t\t\t\t// Extra 3px out for some label spacing\n\t\t\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + 5);\n\n\t\t\t\t// Keep this in loop since we may support array properties here\n\t\t\t\tvar pointLabelFontColor = helpers.valueAtIndexOrDefault(pointLabelOpts.fontColor, i, globalDefaults.defaultFontColor);\n\t\t\t\tctx.font = plFont.font;\n\t\t\t\tctx.fillStyle = pointLabelFontColor;\n\n\t\t\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\t\t\tvar angle = helpers.toDegrees(angleRadians);\n\t\t\t\tctx.textAlign = getTextAlignForAngle(angle);\n\t\t\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\n\t\t\t\tfillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\n\t\tvar ctx = scale.ctx;\n\t\tctx.strokeStyle = helpers.valueAtIndexOrDefault(gridLineOpts.color, index - 1);\n\t\tctx.lineWidth = helpers.valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1);\n\n\t\tif (scale.options.gridLines.circular) {\n\t\t\t// Draw circular arcs between the points\n\t\t\tctx.beginPath();\n\t\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\n\t\t\tctx.closePath();\n\t\t\tctx.stroke();\n\t\t} else {\n\t\t\t// Draw straight lines connecting each index\n\t\t\tvar valueCount = getValueCount(scale);\n\n\t\t\tif (valueCount === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tctx.beginPath();\n\t\t\tvar pointPosition = scale.getPointPosition(0, radius);\n\t\t\tctx.moveTo(pointPosition.x, pointPosition.y);\n\n\t\t\tfor (var i = 1; i < valueCount; i++) {\n\t\t\t\tpointPosition = scale.getPointPosition(i, radius);\n\t\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\n\t\t\t}\n\n\t\t\tctx.closePath();\n\t\t\tctx.stroke();\n\t\t}\n\t}\n\n\tfunction numberOrZero(param) {\n\t\treturn helpers.isNumber(param) ? param : 0;\n\t}\n\n\tvar LinearRadialScale = Chart.LinearScaleBase.extend({\n\t\tsetDimensions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\t// Set the unconstrained dimension before label rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.height = me.maxHeight;\n\t\t\tme.xCenter = Math.round(me.width / 2);\n\t\t\tme.yCenter = Math.round(me.height / 2);\n\n\t\t\tvar minSize = helpers.min([me.height, me.width]);\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\tme.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2);\n\t\t},\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar min = Number.POSITIVE_INFINITY;\n\t\t\tvar max = Number.NEGATIVE_INFINITY;\n\n\t\t\thelpers.each(chart.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\n\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmin = Math.min(value, min);\n\t\t\t\t\t\tmax = Math.max(value, max);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\n\t\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\t\tme.handleTickRangeOptions();\n\t\t},\n\t\tgetTickLimit: function() {\n\t\t\tvar tickOpts = this.options.ticks;\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\treturn Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize)));\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\n\t\t\tChart.LinearScaleBase.prototype.convertTicksToLabels.call(me);\n\n\t\t\t// Point labels\n\t\t\tme.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me);\n\t\t},\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\tfit: function() {\n\t\t\tif (this.options.pointLabels.display) {\n\t\t\t\tfitWithPointLabels(this);\n\t\t\t} else {\n\t\t\t\tfit(this);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Set radius reductions and determine new radius and center point\n\t\t * @private\n\t\t */\n\t\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\n\t\t\tvar me = this;\n\t\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\n\t\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\n\t\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\n\t\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - me.height, 0) / Math.cos(furthestAngles.b);\n\n\t\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\n\t\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\n\t\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\n\t\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\n\n\t\t\tme.drawingArea = Math.min(\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\n\t\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\n\t\t},\n\t\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\n\t\t\tvar me = this;\n\t\t\tvar maxRight = me.width - rightMovement - me.drawingArea;\n\t\t\tvar maxLeft = leftMovement + me.drawingArea;\n\t\t\tvar maxTop = topMovement + me.drawingArea;\n\t\t\tvar maxBottom = me.height - bottomMovement - me.drawingArea;\n\n\t\t\tme.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left);\n\t\t\tme.yCenter = Math.round(((maxTop + maxBottom) / 2) + me.top);\n\t\t},\n\n\t\tgetIndexAngle: function(index) {\n\t\t\tvar angleMultiplier = (Math.PI * 2) / getValueCount(this);\n\t\t\tvar startAngle = this.chart.options && this.chart.options.startAngle ?\n\t\t\t\tthis.chart.options.startAngle :\n\t\t\t\t0;\n\n\t\t\tvar startAngleRadians = startAngle * Math.PI * 2 / 360;\n\n\t\t\t// Start from the top instead of right, so remove a quarter of the circle\n\t\t\treturn index * angleMultiplier + startAngleRadians;\n\t\t},\n\t\tgetDistanceFromCenterForValue: function(value) {\n\t\t\tvar me = this;\n\n\t\t\tif (value === null) {\n\t\t\t\treturn 0; // null always in center\n\t\t\t}\n\n\t\t\t// Take into account half font size + the yPadding of the top value\n\t\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\n\t\t\tif (me.options.ticks.reverse) {\n\t\t\t\treturn (me.max - value) * scalingFactor;\n\t\t\t}\n\t\t\treturn (value - me.min) * scalingFactor;\n\t\t},\n\t\tgetPointPosition: function(index, distanceFromCenter) {\n\t\t\tvar me = this;\n\t\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\n\t\t\treturn {\n\t\t\t\tx: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter,\n\t\t\t\ty: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter\n\t\t\t};\n\t\t},\n\t\tgetPointPositionForValue: function(index, value) {\n\t\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n\t\t},\n\n\t\tgetBasePosition: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\n\t\t\treturn me.getPointPositionForValue(0,\n\t\t\t\tme.beginAtZero ? 0 :\n\t\t\t\tmin < 0 && max < 0 ? max :\n\t\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t\t0);\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar gridLineOpts = opts.gridLines;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\n\t\t\tif (opts.display) {\n\t\t\t\tvar ctx = me.ctx;\n\t\t\t\tvar startAngle = this.getIndexAngle(0);\n\n\t\t\t\t// Tick Font\n\t\t\t\tvar tickFontSize = valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\t\tvar tickFontStyle = valueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\t\tvar tickFontFamily = valueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\t\tvar tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);\n\n\t\t\t\thelpers.each(me.ticks, function(label, index) {\n\t\t\t\t\t// Don't draw a centre value (if it is minimum)\n\t\t\t\t\tif (index > 0 || tickOpts.reverse) {\n\t\t\t\t\t\tvar yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n\n\t\t\t\t\t\t// Draw circular lines around the scale\n\t\t\t\t\t\tif (gridLineOpts.display && index !== 0) {\n\t\t\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, yCenterOffset, index);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (tickOpts.display) {\n\t\t\t\t\t\t\tvar tickFontColor = valueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor);\n\t\t\t\t\t\t\tctx.font = tickLabelFont;\n\n\t\t\t\t\t\t\tctx.save();\n\t\t\t\t\t\t\tctx.translate(me.xCenter, me.yCenter);\n\t\t\t\t\t\t\tctx.rotate(startAngle);\n\n\t\t\t\t\t\t\tif (tickOpts.showLabelBackdrop) {\n\t\t\t\t\t\t\t\tvar labelWidth = ctx.measureText(label).width;\n\t\t\t\t\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\n\t\t\t\t\t\t\t\tctx.fillRect(\n\t\t\t\t\t\t\t\t\t-labelWidth / 2 - tickOpts.backdropPaddingX,\n\t\t\t\t\t\t\t\t\t-yCenterOffset - tickFontSize / 2 - tickOpts.backdropPaddingY,\n\t\t\t\t\t\t\t\t\tlabelWidth + tickOpts.backdropPaddingX * 2,\n\t\t\t\t\t\t\t\t\ttickFontSize + tickOpts.backdropPaddingY * 2\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tctx.textAlign = 'center';\n\t\t\t\t\t\t\tctx.textBaseline = 'middle';\n\t\t\t\t\t\t\tctx.fillStyle = tickFontColor;\n\t\t\t\t\t\t\tctx.fillText(label, 0, -yCenterOffset);\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (opts.angleLines.display || opts.pointLabels.display) {\n\t\t\t\t\tdrawPointLabels(me);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('radialLinear', LinearRadialScale, defaultConfig);\n};\n\n},{\"26\":26,\"34\":34,\"35\":35,\"46\":46}],59:[function(require,module,exports){\n/* global window: false */\n'use strict';\n\nvar moment = require(1);\nmoment = typeof moment === 'function' ? moment : window.moment;\n\nvar defaults = require(26);\nvar helpers = require(46);\nvar Scale = require(33);\nvar scaleService = require(34);\n\n// Integer constants are from the ES6 spec.\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\nvar INTERVALS = {\n\tmillisecond: {\n\t\tcommon: true,\n\t\tsize: 1,\n\t\tsteps: [1, 2, 5, 10, 20, 50, 100, 250, 500]\n\t},\n\tsecond: {\n\t\tcommon: true,\n\t\tsize: 1000,\n\t\tsteps: [1, 2, 5, 10, 15, 30]\n\t},\n\tminute: {\n\t\tcommon: true,\n\t\tsize: 60000,\n\t\tsteps: [1, 2, 5, 10, 15, 30]\n\t},\n\thour: {\n\t\tcommon: true,\n\t\tsize: 3600000,\n\t\tsteps: [1, 2, 3, 6, 12]\n\t},\n\tday: {\n\t\tcommon: true,\n\t\tsize: 86400000,\n\t\tsteps: [1, 2, 5]\n\t},\n\tweek: {\n\t\tcommon: false,\n\t\tsize: 604800000,\n\t\tsteps: [1, 2, 3, 4]\n\t},\n\tmonth: {\n\t\tcommon: true,\n\t\tsize: 2.628e9,\n\t\tsteps: [1, 2, 3]\n\t},\n\tquarter: {\n\t\tcommon: false,\n\t\tsize: 7.884e9,\n\t\tsteps: [1, 2, 3, 4]\n\t},\n\tyear: {\n\t\tcommon: true,\n\t\tsize: 3.154e10\n\t}\n};\n\nvar UNITS = Object.keys(INTERVALS);\n\nfunction sorter(a, b) {\n\treturn a - b;\n}\n\nfunction arrayUnique(items) {\n\tvar hash = {};\n\tvar out = [];\n\tvar i, ilen, item;\n\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\titem = items[i];\n\t\tif (!hash[item]) {\n\t\t\thash[item] = true;\n\t\t\tout.push(item);\n\t\t}\n\t}\n\n\treturn out;\n}\n\n/**\n * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n * extremity (left + width or top + height). Note that it would be more optimized to directly\n * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n *\n * @param {Number[]} timestamps - timestamps sorted from lowest to highest.\n * @param {String} distribution - If 'linear', timestamps will be spread linearly along the min\n * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\n * If 'series', timestamps will be positioned at the same distance from each other. In this\n * case, only timestamps that break the time linearity are registered, meaning that in the\n * best case, all timestamps are linear, the table contains only min and max.\n */\nfunction buildLookupTable(timestamps, min, max, distribution) {\n\tif (distribution === 'linear' || !timestamps.length) {\n\t\treturn [\n\t\t\t{time: min, pos: 0},\n\t\t\t{time: max, pos: 1}\n\t\t];\n\t}\n\n\tvar table = [];\n\tvar items = [min];\n\tvar i, ilen, prev, curr, next;\n\n\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\tcurr = timestamps[i];\n\t\tif (curr > min && curr < max) {\n\t\t\titems.push(curr);\n\t\t}\n\t}\n\n\titems.push(max);\n\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\tnext = items[i + 1];\n\t\tprev = items[i - 1];\n\t\tcurr = items[i];\n\n\t\t// only add points that breaks the scale linearity\n\t\tif (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\n\t\t\ttable.push({time: curr, pos: i / (ilen - 1)});\n\t\t}\n\t}\n\n\treturn table;\n}\n\n// @see adapted from http://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\nfunction lookup(table, key, value) {\n\tvar lo = 0;\n\tvar hi = table.length - 1;\n\tvar mid, i0, i1;\n\n\twhile (lo >= 0 && lo <= hi) {\n\t\tmid = (lo + hi) >> 1;\n\t\ti0 = table[mid - 1] || null;\n\t\ti1 = table[mid];\n\n\t\tif (!i0) {\n\t\t\t// given value is outside table (before first item)\n\t\t\treturn {lo: null, hi: i1};\n\t\t} else if (i1[key] < value) {\n\t\t\tlo = mid + 1;\n\t\t} else if (i0[key] > value) {\n\t\t\thi = mid - 1;\n\t\t} else {\n\t\t\treturn {lo: i0, hi: i1};\n\t\t}\n\t}\n\n\t// given value is outside table (after last item)\n\treturn {lo: i1, hi: null};\n}\n\n/**\n * Linearly interpolates the given source `value` using the table items `skey` values and\n * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\n * returns the position for a timestamp equal to 42. If value is out of bounds, values at\n * index [0, 1] or [n - 1, n] are used for the interpolation.\n */\nfunction interpolate(table, skey, sval, tkey) {\n\tvar range = lookup(table, skey, sval);\n\n\t// Note: the lookup table ALWAYS contains at least 2 items (min and max)\n\tvar prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\n\tvar next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\n\n\tvar span = next[skey] - prev[skey];\n\tvar ratio = span ? (sval - prev[skey]) / span : 0;\n\tvar offset = (next[tkey] - prev[tkey]) * ratio;\n\n\treturn prev[tkey] + offset;\n}\n\n/**\n * Convert the given value to a moment object using the given time options.\n * @see http://momentjs.com/docs/#/parsing/\n */\nfunction momentify(value, options) {\n\tvar parser = options.parser;\n\tvar format = options.parser || options.format;\n\n\tif (typeof parser === 'function') {\n\t\treturn parser(value);\n\t}\n\n\tif (typeof value === 'string' && typeof format === 'string') {\n\t\treturn moment(value, format);\n\t}\n\n\tif (!(value instanceof moment)) {\n\t\tvalue = moment(value);\n\t}\n\n\tif (value.isValid()) {\n\t\treturn value;\n\t}\n\n\t// Labels are in an incompatible moment format and no `parser` has been provided.\n\t// The user might still use the deprecated `format` option to convert his inputs.\n\tif (typeof format === 'function') {\n\t\treturn format(value);\n\t}\n\n\treturn value;\n}\n\nfunction parse(input, scale) {\n\tif (helpers.isNullOrUndef(input)) {\n\t\treturn null;\n\t}\n\n\tvar options = scale.options.time;\n\tvar value = momentify(scale.getRightValue(input), options);\n\tif (!value.isValid()) {\n\t\treturn null;\n\t}\n\n\tif (options.round) {\n\t\tvalue.startOf(options.round);\n\t}\n\n\treturn value.valueOf();\n}\n\n/**\n * Returns the number of unit to skip to be able to display up to `capacity` number of ticks\n * in `unit` for the given `min` / `max` range and respecting the interval steps constraints.\n */\nfunction determineStepSize(min, max, unit, capacity) {\n\tvar range = max - min;\n\tvar interval = INTERVALS[unit];\n\tvar milliseconds = interval.size;\n\tvar steps = interval.steps;\n\tvar i, ilen, factor;\n\n\tif (!steps) {\n\t\treturn Math.ceil(range / (capacity * milliseconds));\n\t}\n\n\tfor (i = 0, ilen = steps.length; i < ilen; ++i) {\n\t\tfactor = steps[i];\n\t\tif (Math.ceil(range / (milliseconds * factor)) <= capacity) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn factor;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n\tvar ilen = UNITS.length;\n\tvar i, interval, factor;\n\n\tfor (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n\t\tinterval = INTERVALS[UNITS[i]];\n\t\tfactor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER;\n\n\t\tif (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n\t\t\treturn UNITS[i];\n\t\t}\n\t}\n\n\treturn UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n */\nfunction determineUnitForFormatting(ticks, minUnit, min, max) {\n\tvar duration = moment.duration(moment(max).diff(moment(min)));\n\tvar ilen = UNITS.length;\n\tvar i, unit;\n\n\tfor (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) {\n\t\tunit = UNITS[i];\n\t\tif (INTERVALS[unit].common && duration.as(unit) >= ticks.length) {\n\t\t\treturn unit;\n\t\t}\n\t}\n\n\treturn UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\nfunction determineMajorUnit(unit) {\n\tfor (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n\t\tif (INTERVALS[UNITS[i]].common) {\n\t\t\treturn UNITS[i];\n\t\t}\n\t}\n}\n\n/**\n * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n * `minor` unit, aligned on the `major` unit and using the given scale time `options`.\n * Important: this method can return ticks outside the min and max range, it's the\n * responsibility of the calling code to clamp values if needed.\n */\nfunction generate(min, max, capacity, options) {\n\tvar timeOpts = options.time;\n\tvar minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\n\tvar major = determineMajorUnit(minor);\n\tvar stepSize = helpers.valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize);\n\tvar weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n\tvar majorTicksEnabled = options.ticks.major.enabled;\n\tvar interval = INTERVALS[minor];\n\tvar first = moment(min);\n\tvar last = moment(max);\n\tvar ticks = [];\n\tvar time;\n\n\tif (!stepSize) {\n\t\tstepSize = determineStepSize(min, max, minor, capacity);\n\t}\n\n\t// For 'week' unit, handle the first day of week option\n\tif (weekday) {\n\t\tfirst = first.isoWeekday(weekday);\n\t\tlast = last.isoWeekday(weekday);\n\t}\n\n\t// Align first/last ticks on unit\n\tfirst = first.startOf(weekday ? 'day' : minor);\n\tlast = last.startOf(weekday ? 'day' : minor);\n\n\t// Make sure that the last tick include max\n\tif (last < max) {\n\t\tlast.add(1, minor);\n\t}\n\n\ttime = moment(first);\n\n\tif (majorTicksEnabled && major && !weekday && !timeOpts.round) {\n\t\t// Align the first tick on the previous `minor` unit aligned on the `major` unit:\n\t\t// we first aligned time on the previous `major` unit then add the number of full\n\t\t// stepSize there is between first and the previous major time.\n\t\ttime.startOf(major);\n\t\ttime.add(~~((first - time) / (interval.size * stepSize)) * stepSize, minor);\n\t}\n\n\tfor (; time < last; time.add(stepSize, minor)) {\n\t\tticks.push(+time);\n\t}\n\n\tticks.push(+time);\n\n\treturn ticks;\n}\n\n/**\n * Returns the right and left offsets from edges in the form of {left, right}.\n * Offsets are added when the `offset` option is true.\n */\nfunction computeOffsets(table, ticks, min, max, options) {\n\tvar left = 0;\n\tvar right = 0;\n\tvar upper, lower;\n\n\tif (options.offset && ticks.length) {\n\t\tif (!options.time.min) {\n\t\t\tupper = ticks.length > 1 ? ticks[1] : max;\n\t\t\tlower = ticks[0];\n\t\t\tleft = (\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\n\t\t\t) / 2;\n\t\t}\n\t\tif (!options.time.max) {\n\t\t\tupper = ticks[ticks.length - 1];\n\t\t\tlower = ticks.length > 1 ? ticks[ticks.length - 2] : min;\n\t\t\tright = (\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\n\t\t\t) / 2;\n\t\t}\n\t}\n\n\treturn {left: left, right: right};\n}\n\nfunction ticksFromTimestamps(values, majorUnit) {\n\tvar ticks = [];\n\tvar i, ilen, value, major;\n\n\tfor (i = 0, ilen = values.length; i < ilen; ++i) {\n\t\tvalue = values[i];\n\t\tmajor = majorUnit ? value === +moment(value).startOf(majorUnit) : false;\n\n\t\tticks.push({\n\t\t\tvalue: value,\n\t\t\tmajor: major\n\t\t});\n\t}\n\n\treturn ticks;\n}\n\nfunction determineLabelFormat(data, timeOpts) {\n\tvar i, momentDate, hasTime;\n\tvar ilen = data.length;\n\n\t// find the label with the most parts (milliseconds, minutes, etc.)\n\t// format all labels with the same level of detail as the most specific label\n\tfor (i = 0; i < ilen; i++) {\n\t\tmomentDate = momentify(data[i], timeOpts);\n\t\tif (momentDate.millisecond() !== 0) {\n\t\t\treturn 'MMM D, YYYY h:mm:ss.SSS a';\n\t\t}\n\t\tif (momentDate.second() !== 0 || momentDate.minute() !== 0 || momentDate.hour() !== 0) {\n\t\t\thasTime = true;\n\t\t}\n\t}\n\tif (hasTime) {\n\t\treturn 'MMM D, YYYY h:mm:ss a';\n\t}\n\treturn 'MMM D, YYYY';\n}\n\nmodule.exports = function() {\n\n\tvar defaultConfig = {\n\t\tposition: 'bottom',\n\n\t\t/**\n\t\t * Data distribution along the scale:\n\t\t * - 'linear': data are spread according to their time (distances can vary),\n\t\t * - 'series': data are spread at the same distance from each other.\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t\t * @since 2.7.0\n\t\t */\n\t\tdistribution: 'linear',\n\n\t\t/**\n\t\t * Scale boundary strategy (bypassed by min/max time options)\n\t\t * - `data`: make sure data are fully visible, ticks outside are removed\n\t\t * - `ticks`: make sure ticks are fully visible, data outside are truncated\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4556\n\t\t * @since 2.7.0\n\t\t */\n\t\tbounds: 'data',\n\n\t\ttime: {\n\t\t\tparser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\n\t\t\tformat: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/\n\t\t\tunit: false, // false == automatic or override with week, month, year, etc.\n\t\t\tround: false, // none, or override with week, month, year, etc.\n\t\t\tdisplayFormat: false, // DEPRECATED\n\t\t\tisoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/\n\t\t\tminUnit: 'millisecond',\n\n\t\t\t// defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/\n\t\t\tdisplayFormats: {\n\t\t\t\tmillisecond: 'h:mm:ss.SSS a', // 11:20:01.123 AM,\n\t\t\t\tsecond: 'h:mm:ss a', // 11:20:01 AM\n\t\t\t\tminute: 'h:mm a', // 11:20 AM\n\t\t\t\thour: 'hA', // 5PM\n\t\t\t\tday: 'MMM D', // Sep 4\n\t\t\t\tweek: 'll', // Week 46, or maybe \"[W]WW - YYYY\" ?\n\t\t\t\tmonth: 'MMM YYYY', // Sept 2015\n\t\t\t\tquarter: '[Q]Q - YYYY', // Q3\n\t\t\t\tyear: 'YYYY' // 2015\n\t\t\t},\n\t\t},\n\t\tticks: {\n\t\t\tautoSkip: false,\n\n\t\t\t/**\n\t\t\t * Ticks generation input values:\n\t\t\t * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n\t\t\t * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n\t\t\t * - 'labels': generates ticks from user given `data.labels` values ONLY.\n\t\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t\t\t * @since 2.7.0\n\t\t\t */\n\t\t\tsource: 'auto',\n\n\t\t\tmajor: {\n\t\t\t\tenabled: false\n\t\t\t}\n\t\t}\n\t};\n\n\tvar TimeScale = Scale.extend({\n\t\tinitialize: function() {\n\t\t\tif (!moment) {\n\t\t\t\tthrow new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com');\n\t\t\t}\n\n\t\t\tthis.mergeTicksOptions();\n\n\t\t\tScale.prototype.initialize.call(this);\n\t\t},\n\n\t\tupdate: function() {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\n\t\t\t// DEPRECATIONS: output a message only one time per update\n\t\t\tif (options.time && options.time.format) {\n\t\t\t\tconsole.warn('options.time.format is deprecated and replaced by options.time.parser.');\n\t\t\t}\n\n\t\t\treturn Scale.prototype.update.apply(me, arguments);\n\t\t},\n\n\t\t/**\n\t\t * Allows data to be referenced via 't' attribute\n\t\t */\n\t\tgetRightValue: function(rawValue) {\n\t\t\tif (rawValue && rawValue.t !== undefined) {\n\t\t\t\trawValue = rawValue.t;\n\t\t\t}\n\t\t\treturn Scale.prototype.getRightValue.call(this, rawValue);\n\t\t},\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar timeOpts = me.options.time;\n\t\t\tvar unit = timeOpts.unit || 'day';\n\t\t\tvar min = MAX_INTEGER;\n\t\t\tvar max = MIN_INTEGER;\n\t\t\tvar timestamps = [];\n\t\t\tvar datasets = [];\n\t\t\tvar labels = [];\n\t\t\tvar i, j, ilen, jlen, data, timestamp;\n\n\t\t\t// Convert labels to timestamps\n\t\t\tfor (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) {\n\t\t\t\tlabels.push(parse(chart.data.labels[i], me));\n\t\t\t}\n\n\t\t\t// Convert data to timestamps\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tif (chart.isDatasetVisible(i)) {\n\t\t\t\t\tdata = chart.data.datasets[i].data;\n\n\t\t\t\t\t// Let's consider that all data have the same format.\n\t\t\t\t\tif (helpers.isObject(data[0])) {\n\t\t\t\t\t\tdatasets[i] = [];\n\n\t\t\t\t\t\tfor (j = 0, jlen = data.length; j < jlen; ++j) {\n\t\t\t\t\t\t\ttimestamp = parse(data[j], me);\n\t\t\t\t\t\t\ttimestamps.push(timestamp);\n\t\t\t\t\t\t\tdatasets[i][j] = timestamp;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimestamps.push.apply(timestamps, labels);\n\t\t\t\t\t\tdatasets[i] = labels.slice(0);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tdatasets[i] = [];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (labels.length) {\n\t\t\t\t// Sort labels **after** data have been converted\n\t\t\t\tlabels = arrayUnique(labels).sort(sorter);\n\t\t\t\tmin = Math.min(min, labels[0]);\n\t\t\t\tmax = Math.max(max, labels[labels.length - 1]);\n\t\t\t}\n\n\t\t\tif (timestamps.length) {\n\t\t\t\ttimestamps = arrayUnique(timestamps).sort(sorter);\n\t\t\t\tmin = Math.min(min, timestamps[0]);\n\t\t\t\tmax = Math.max(max, timestamps[timestamps.length - 1]);\n\t\t\t}\n\n\t\t\tmin = parse(timeOpts.min, me) || min;\n\t\t\tmax = parse(timeOpts.max, me) || max;\n\n\t\t\t// In case there is no valid min/max, set limits based on unit time option\n\t\t\tmin = min === MAX_INTEGER ? +moment().startOf(unit) : min;\n\t\t\tmax = max === MIN_INTEGER ? +moment().endOf(unit) + 1 : max;\n\n\t\t\t// Make sure that max is strictly higher than min (required by the lookup table)\n\t\t\tme.min = Math.min(min, max);\n\t\t\tme.max = Math.max(min + 1, max);\n\n\t\t\t// PRIVATE\n\t\t\tme._horizontal = me.isHorizontal();\n\t\t\tme._table = [];\n\t\t\tme._timestamps = {\n\t\t\t\tdata: timestamps,\n\t\t\t\tdatasets: datasets,\n\t\t\t\tlabels: labels\n\t\t\t};\n\t\t},\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\t\t\tvar options = me.options;\n\t\t\tvar timeOpts = options.time;\n\t\t\tvar timestamps = [];\n\t\t\tvar ticks = [];\n\t\t\tvar i, ilen, timestamp;\n\n\t\t\tswitch (options.ticks.source) {\n\t\t\tcase 'data':\n\t\t\t\ttimestamps = me._timestamps.data;\n\t\t\t\tbreak;\n\t\t\tcase 'labels':\n\t\t\t\ttimestamps = me._timestamps.labels;\n\t\t\t\tbreak;\n\t\t\tcase 'auto':\n\t\t\tdefault:\n\t\t\t\ttimestamps = generate(min, max, me.getLabelCapacity(min), options);\n\t\t\t}\n\n\t\t\tif (options.bounds === 'ticks' && timestamps.length) {\n\t\t\t\tmin = timestamps[0];\n\t\t\t\tmax = timestamps[timestamps.length - 1];\n\t\t\t}\n\n\t\t\t// Enforce limits with user min/max options\n\t\t\tmin = parse(timeOpts.min, me) || min;\n\t\t\tmax = parse(timeOpts.max, me) || max;\n\n\t\t\t// Remove ticks outside the min/max range\n\t\t\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\t\t\ttimestamp = timestamps[i];\n\t\t\t\tif (timestamp >= min && timestamp <= max) {\n\t\t\t\t\tticks.push(timestamp);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.min = min;\n\t\t\tme.max = max;\n\n\t\t\t// PRIVATE\n\t\t\tme._unit = timeOpts.unit || determineUnitForFormatting(ticks, timeOpts.minUnit, me.min, me.max);\n\t\t\tme._majorUnit = determineMajorUnit(me._unit);\n\t\t\tme._table = buildLookupTable(me._timestamps.data, min, max, options.distribution);\n\t\t\tme._offsets = computeOffsets(me._table, ticks, min, max, options);\n\t\t\tme._labelFormat = determineLabelFormat(me._timestamps.data, timeOpts);\n\n\t\t\treturn ticksFromTimestamps(ticks, me._majorUnit);\n\t\t},\n\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar data = me.chart.data;\n\t\t\tvar timeOpts = me.options.time;\n\t\t\tvar label = data.labels && index < data.labels.length ? data.labels[index] : '';\n\t\t\tvar value = data.datasets[datasetIndex].data[index];\n\n\t\t\tif (helpers.isObject(value)) {\n\t\t\t\tlabel = me.getRightValue(value);\n\t\t\t}\n\t\t\tif (timeOpts.tooltipFormat) {\n\t\t\t\treturn momentify(label, timeOpts).format(timeOpts.tooltipFormat);\n\t\t\t}\n\t\t\tif (typeof label === 'string') {\n\t\t\t\treturn label;\n\t\t\t}\n\n\t\t\treturn momentify(label, timeOpts).format(me._labelFormat);\n\t\t},\n\n\t\t/**\n\t\t * Function to format an individual tick mark\n\t\t * @private\n\t\t */\n\t\ttickFormatFunction: function(tick, index, ticks, formatOverride) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar time = tick.valueOf();\n\t\t\tvar formats = options.time.displayFormats;\n\t\t\tvar minorFormat = formats[me._unit];\n\t\t\tvar majorUnit = me._majorUnit;\n\t\t\tvar majorFormat = formats[majorUnit];\n\t\t\tvar majorTime = tick.clone().startOf(majorUnit).valueOf();\n\t\t\tvar majorTickOpts = options.ticks.major;\n\t\t\tvar major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime;\n\t\t\tvar label = tick.format(formatOverride ? formatOverride : major ? majorFormat : minorFormat);\n\t\t\tvar tickOpts = major ? majorTickOpts : options.ticks.minor;\n\t\t\tvar formatter = helpers.valueOrDefault(tickOpts.callback, tickOpts.userCallback);\n\n\t\t\treturn formatter ? formatter(label, index, ticks) : label;\n\t\t},\n\n\t\tconvertTicksToLabels: function(ticks) {\n\t\t\tvar labels = [];\n\t\t\tvar i, ilen;\n\n\t\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\t\t\tlabels.push(this.tickFormatFunction(moment(ticks[i].value), i, ticks));\n\t\t\t}\n\n\t\t\treturn labels;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetPixelForOffset: function(time) {\n\t\t\tvar me = this;\n\t\t\tvar size = me._horizontal ? me.width : me.height;\n\t\t\tvar start = me._horizontal ? me.left : me.top;\n\t\t\tvar pos = interpolate(me._table, 'time', time, 'pos');\n\n\t\t\treturn start + size * (me._offsets.left + pos) / (me._offsets.left + 1 + me._offsets.right);\n\t\t},\n\n\t\tgetPixelForValue: function(value, index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar time = null;\n\n\t\t\tif (index !== undefined && datasetIndex !== undefined) {\n\t\t\t\ttime = me._timestamps.datasets[datasetIndex][index];\n\t\t\t}\n\n\t\t\tif (time === null) {\n\t\t\t\ttime = parse(value, me);\n\t\t\t}\n\n\t\t\tif (time !== null) {\n\t\t\t\treturn me.getPixelForOffset(time);\n\t\t\t}\n\t\t},\n\n\t\tgetPixelForTick: function(index) {\n\t\t\tvar ticks = this.getTicks();\n\t\t\treturn index >= 0 && index < ticks.length ?\n\t\t\t\tthis.getPixelForOffset(ticks[index].value) :\n\t\t\t\tnull;\n\t\t},\n\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar size = me._horizontal ? me.width : me.height;\n\t\t\tvar start = me._horizontal ? me.left : me.top;\n\t\t\tvar pos = (size ? (pixel - start) / size : 0) * (me._offsets.left + 1 + me._offsets.left) - me._offsets.right;\n\t\t\tvar time = interpolate(me._table, 'pos', pos, 'time');\n\n\t\t\treturn moment(time);\n\t\t},\n\n\t\t/**\n\t\t * Crude approximation of what the label width might be\n\t\t * @private\n\t\t */\n\t\tgetLabelWidth: function(label) {\n\t\t\tvar me = this;\n\t\t\tvar ticksOpts = me.options.ticks;\n\t\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\n\t\t\tvar angle = helpers.toRadians(ticksOpts.maxRotation);\n\t\t\tvar cosRotation = Math.cos(angle);\n\t\t\tvar sinRotation = Math.sin(angle);\n\t\t\tvar tickFontSize = helpers.valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize);\n\n\t\t\treturn (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetLabelCapacity: function(exampleTime) {\n\t\t\tvar me = this;\n\n\t\t\tvar formatOverride = me.options.time.displayFormats.millisecond;\t// Pick the longest format for guestimation\n\n\t\t\tvar exampleLabel = me.tickFormatFunction(moment(exampleTime), 0, [], formatOverride);\n\t\t\tvar tickLabelWidth = me.getLabelWidth(exampleLabel);\n\t\t\tvar innerWidth = me.isHorizontal() ? me.width : me.height;\n\n\t\t\tvar capacity = Math.floor(innerWidth / tickLabelWidth);\n\t\t\treturn capacity > 0 ? capacity : 1;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('time', TimeScale, defaultConfig);\n};\n\n},{\"1\":1,\"26\":26,\"33\":33,\"34\":34,\"46\":46}]},{},[7])(7)\n});\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","/*!\n * chartjs-plugin-datalabels v0.7.0\n * https://chartjs-plugin-datalabels.netlify.com\n * (c) 2019 Chart.js Contributors\n * Released under the MIT license\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('chart.js')) :\ntypeof define === 'function' && define.amd ? define(['chart.js'], factory) :\n(global = global || self, global.ChartDataLabels = factory(global.Chart));\n}(this, function (Chart) { 'use strict';\n\nChart = Chart && Chart.hasOwnProperty('default') ? Chart['default'] : Chart;\n\nvar helpers = Chart.helpers;\n\nvar devicePixelRatio = (function() {\n\tif (typeof window !== 'undefined') {\n\t\tif (window.devicePixelRatio) {\n\t\t\treturn window.devicePixelRatio;\n\t\t}\n\n\t\t// devicePixelRatio is undefined on IE10\n\t\t// https://stackoverflow.com/a/20204180/8837887\n\t\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/85\n\t\tvar screen = window.screen;\n\t\tif (screen) {\n\t\t\treturn (screen.deviceXDPI || 1) / (screen.logicalXDPI || 1);\n\t\t}\n\t}\n\n\treturn 1;\n}());\n\nvar utils = {\n\t// @todo move this in Chart.helpers.toTextLines\n\ttoTextLines: function(inputs) {\n\t\tvar lines = [];\n\t\tvar input;\n\n\t\tinputs = [].concat(inputs);\n\t\twhile (inputs.length) {\n\t\t\tinput = inputs.pop();\n\t\t\tif (typeof input === 'string') {\n\t\t\t\tlines.unshift.apply(lines, input.split('\\n'));\n\t\t\t} else if (Array.isArray(input)) {\n\t\t\t\tinputs.push.apply(inputs, input);\n\t\t\t} else if (!helpers.isNullOrUndef(inputs)) {\n\t\t\t\tlines.unshift('' + input);\n\t\t\t}\n\t\t}\n\n\t\treturn lines;\n\t},\n\n\t// @todo move this method in Chart.helpers.canvas.toFont (deprecates helpers.fontString)\n\t// @see https://developer.mozilla.org/en-US/docs/Web/CSS/font\n\ttoFontString: function(font) {\n\t\tif (!font || helpers.isNullOrUndef(font.size) || helpers.isNullOrUndef(font.family)) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (font.style ? font.style + ' ' : '')\n\t\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t\t+ font.size + 'px '\n\t\t\t+ font.family;\n\t},\n\n\t// @todo move this in Chart.helpers.canvas.textSize\n\t// @todo cache calls of measureText if font doesn't change?!\n\ttextSize: function(ctx, lines, font) {\n\t\tvar items = [].concat(lines);\n\t\tvar ilen = items.length;\n\t\tvar prev = ctx.font;\n\t\tvar width = 0;\n\t\tvar i;\n\n\t\tctx.font = font.string;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\twidth = Math.max(ctx.measureText(items[i]).width, width);\n\t\t}\n\n\t\tctx.font = prev;\n\n\t\treturn {\n\t\t\theight: ilen * font.lineHeight,\n\t\t\twidth: width\n\t\t};\n\t},\n\n\t// @todo move this method in Chart.helpers.options.toFont\n\tparseFont: function(value) {\n\t\tvar global = Chart.defaults.global;\n\t\tvar size = helpers.valueOrDefault(value.size, global.defaultFontSize);\n\t\tvar font = {\n\t\t\tfamily: helpers.valueOrDefault(value.family, global.defaultFontFamily),\n\t\t\tlineHeight: helpers.options.toLineHeight(value.lineHeight, size),\n\t\t\tsize: size,\n\t\t\tstyle: helpers.valueOrDefault(value.style, global.defaultFontStyle),\n\t\t\tweight: helpers.valueOrDefault(value.weight, null),\n\t\t\tstring: ''\n\t\t};\n\n\t\tfont.string = utils.toFontString(font);\n\t\treturn font;\n\t},\n\n\t/**\n\t * Returns value bounded by min and max. This is equivalent to max(min, min(value, max)).\n\t * @todo move this method in Chart.helpers.bound\n\t * https://doc.qt.io/qt-5/qtglobal.html#qBound\n\t */\n\tbound: function(min, value, max) {\n\t\treturn Math.max(min, Math.min(value, max));\n\t},\n\n\t/**\n\t * Returns an array of pair [value, state] where state is:\n\t * * -1: value is only in a0 (removed)\n\t * *  1: value is only in a1 (added)\n\t */\n\tarrayDiff: function(a0, a1) {\n\t\tvar prev = a0.slice();\n\t\tvar updates = [];\n\t\tvar i, j, ilen, v;\n\n\t\tfor (i = 0, ilen = a1.length; i < ilen; ++i) {\n\t\t\tv = a1[i];\n\t\t\tj = prev.indexOf(v);\n\n\t\t\tif (j === -1) {\n\t\t\t\tupdates.push([v, 1]);\n\t\t\t} else {\n\t\t\t\tprev.splice(j, 1);\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, ilen = prev.length; i < ilen; ++i) {\n\t\t\tupdates.push([prev[i], -1]);\n\t\t}\n\n\t\treturn updates;\n\t},\n\n\t/**\n\t * https://github.com/chartjs/chartjs-plugin-datalabels/issues/70\n\t */\n\trasterize: function(v) {\n\t\treturn Math.round(v * devicePixelRatio) / devicePixelRatio;\n\t}\n};\n\nfunction orient(point, origin) {\n\tvar x0 = origin.x;\n\tvar y0 = origin.y;\n\n\tif (x0 === null) {\n\t\treturn {x: 0, y: -1};\n\t}\n\tif (y0 === null) {\n\t\treturn {x: 1, y: 0};\n\t}\n\n\tvar dx = point.x - x0;\n\tvar dy = point.y - y0;\n\tvar ln = Math.sqrt(dx * dx + dy * dy);\n\n\treturn {\n\t\tx: ln ? dx / ln : 0,\n\t\ty: ln ? dy / ln : -1\n\t};\n}\n\nfunction aligned(x, y, vx, vy, align) {\n\tswitch (align) {\n\tcase 'center':\n\t\tvx = vy = 0;\n\t\tbreak;\n\tcase 'bottom':\n\t\tvx = 0;\n\t\tvy = 1;\n\t\tbreak;\n\tcase 'right':\n\t\tvx = 1;\n\t\tvy = 0;\n\t\tbreak;\n\tcase 'left':\n\t\tvx = -1;\n\t\tvy = 0;\n\t\tbreak;\n\tcase 'top':\n\t\tvx = 0;\n\t\tvy = -1;\n\t\tbreak;\n\tcase 'start':\n\t\tvx = -vx;\n\t\tvy = -vy;\n\t\tbreak;\n\tcase 'end':\n\t\t// keep natural orientation\n\t\tbreak;\n\tdefault:\n\t\t// clockwise rotation (in degree)\n\t\talign *= (Math.PI / 180);\n\t\tvx = Math.cos(align);\n\t\tvy = Math.sin(align);\n\t\tbreak;\n\t}\n\n\treturn {\n\t\tx: x,\n\t\ty: y,\n\t\tvx: vx,\n\t\tvy: vy\n\t};\n}\n\n// Line clipping (Cohen–Sutherland algorithm)\n// https://en.wikipedia.org/wiki/Cohen–Sutherland_algorithm\n\nvar R_INSIDE = 0;\nvar R_LEFT = 1;\nvar R_RIGHT = 2;\nvar R_BOTTOM = 4;\nvar R_TOP = 8;\n\nfunction region(x, y, rect) {\n\tvar res = R_INSIDE;\n\n\tif (x < rect.left) {\n\t\tres |= R_LEFT;\n\t} else if (x > rect.right) {\n\t\tres |= R_RIGHT;\n\t}\n\tif (y < rect.top) {\n\t\tres |= R_TOP;\n\t} else if (y > rect.bottom) {\n\t\tres |= R_BOTTOM;\n\t}\n\n\treturn res;\n}\n\nfunction clipped(segment, area) {\n\tvar x0 = segment.x0;\n\tvar y0 = segment.y0;\n\tvar x1 = segment.x1;\n\tvar y1 = segment.y1;\n\tvar r0 = region(x0, y0, area);\n\tvar r1 = region(x1, y1, area);\n\tvar r, x, y;\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tif (!(r0 | r1) || (r0 & r1)) {\n\t\t\t// both points inside or on the same side: no clipping\n\t\t\tbreak;\n\t\t}\n\n\t\t// at least one point is outside\n\t\tr = r0 || r1;\n\n\t\tif (r & R_TOP) {\n\t\t\tx = x0 + (x1 - x0) * (area.top - y0) / (y1 - y0);\n\t\t\ty = area.top;\n\t\t} else if (r & R_BOTTOM) {\n\t\t\tx = x0 + (x1 - x0) * (area.bottom - y0) / (y1 - y0);\n\t\t\ty = area.bottom;\n\t\t} else if (r & R_RIGHT) {\n\t\t\ty = y0 + (y1 - y0) * (area.right - x0) / (x1 - x0);\n\t\t\tx = area.right;\n\t\t} else if (r & R_LEFT) {\n\t\t\ty = y0 + (y1 - y0) * (area.left - x0) / (x1 - x0);\n\t\t\tx = area.left;\n\t\t}\n\n\t\tif (r === r0) {\n\t\t\tx0 = x;\n\t\t\ty0 = y;\n\t\t\tr0 = region(x0, y0, area);\n\t\t} else {\n\t\t\tx1 = x;\n\t\t\ty1 = y;\n\t\t\tr1 = region(x1, y1, area);\n\t\t}\n\t}\n\n\treturn {\n\t\tx0: x0,\n\t\tx1: x1,\n\t\ty0: y0,\n\t\ty1: y1\n\t};\n}\n\nfunction compute(range, config) {\n\tvar anchor = config.anchor;\n\tvar segment = range;\n\tvar x, y;\n\n\tif (config.clamp) {\n\t\tsegment = clipped(segment, config.area);\n\t}\n\n\tif (anchor === 'start') {\n\t\tx = segment.x0;\n\t\ty = segment.y0;\n\t} else if (anchor === 'end') {\n\t\tx = segment.x1;\n\t\ty = segment.y1;\n\t} else {\n\t\tx = (segment.x0 + segment.x1) / 2;\n\t\ty = (segment.y0 + segment.y1) / 2;\n\t}\n\n\treturn aligned(x, y, range.vx, range.vy, config.align);\n}\n\nvar positioners = {\n\tarc: function(vm, config) {\n\t\tvar angle = (vm.startAngle + vm.endAngle) / 2;\n\t\tvar vx = Math.cos(angle);\n\t\tvar vy = Math.sin(angle);\n\t\tvar r0 = vm.innerRadius;\n\t\tvar r1 = vm.outerRadius;\n\n\t\treturn compute({\n\t\t\tx0: vm.x + vx * r0,\n\t\t\ty0: vm.y + vy * r0,\n\t\t\tx1: vm.x + vx * r1,\n\t\t\ty1: vm.y + vy * r1,\n\t\t\tvx: vx,\n\t\t\tvy: vy\n\t\t}, config);\n\t},\n\n\tpoint: function(vm, config) {\n\t\tvar v = orient(vm, config.origin);\n\t\tvar rx = v.x * vm.radius;\n\t\tvar ry = v.y * vm.radius;\n\n\t\treturn compute({\n\t\t\tx0: vm.x - rx,\n\t\t\ty0: vm.y - ry,\n\t\t\tx1: vm.x + rx,\n\t\t\ty1: vm.y + ry,\n\t\t\tvx: v.x,\n\t\t\tvy: v.y\n\t\t}, config);\n\t},\n\n\trect: function(vm, config) {\n\t\tvar v = orient(vm, config.origin);\n\t\tvar x = vm.x;\n\t\tvar y = vm.y;\n\t\tvar sx = 0;\n\t\tvar sy = 0;\n\n\t\tif (vm.horizontal) {\n\t\t\tx = Math.min(vm.x, vm.base);\n\t\t\tsx = Math.abs(vm.base - vm.x);\n\t\t} else {\n\t\t\ty = Math.min(vm.y, vm.base);\n\t\t\tsy = Math.abs(vm.base - vm.y);\n\t\t}\n\n\t\treturn compute({\n\t\t\tx0: x,\n\t\t\ty0: y + sy,\n\t\t\tx1: x + sx,\n\t\t\ty1: y,\n\t\t\tvx: v.x,\n\t\t\tvy: v.y\n\t\t}, config);\n\t},\n\n\tfallback: function(vm, config) {\n\t\tvar v = orient(vm, config.origin);\n\n\t\treturn compute({\n\t\t\tx0: vm.x,\n\t\t\ty0: vm.y,\n\t\t\tx1: vm.x,\n\t\t\ty1: vm.y,\n\t\t\tvx: v.x,\n\t\t\tvy: v.y\n\t\t}, config);\n\t}\n};\n\nvar helpers$1 = Chart.helpers;\nvar rasterize = utils.rasterize;\n\nfunction boundingRects(model) {\n\tvar borderWidth = model.borderWidth || 0;\n\tvar padding = model.padding;\n\tvar th = model.size.height;\n\tvar tw = model.size.width;\n\tvar tx = -tw / 2;\n\tvar ty = -th / 2;\n\n\treturn {\n\t\tframe: {\n\t\t\tx: tx - padding.left - borderWidth,\n\t\t\ty: ty - padding.top - borderWidth,\n\t\t\tw: tw + padding.width + borderWidth * 2,\n\t\t\th: th + padding.height + borderWidth * 2\n\t\t},\n\t\ttext: {\n\t\t\tx: tx,\n\t\t\ty: ty,\n\t\t\tw: tw,\n\t\t\th: th\n\t\t}\n\t};\n}\n\nfunction getScaleOrigin(el) {\n\tvar horizontal = el._model.horizontal;\n\tvar scale = el._scale || (horizontal && el._xScale) || el._yScale;\n\n\tif (!scale) {\n\t\treturn null;\n\t}\n\n\tif (scale.xCenter !== undefined && scale.yCenter !== undefined) {\n\t\treturn {x: scale.xCenter, y: scale.yCenter};\n\t}\n\n\tvar pixel = scale.getBasePixel();\n\treturn horizontal ?\n\t\t{x: pixel, y: null} :\n\t\t{x: null, y: pixel};\n}\n\nfunction getPositioner(el) {\n\tif (el instanceof Chart.elements.Arc) {\n\t\treturn positioners.arc;\n\t}\n\tif (el instanceof Chart.elements.Point) {\n\t\treturn positioners.point;\n\t}\n\tif (el instanceof Chart.elements.Rectangle) {\n\t\treturn positioners.rect;\n\t}\n\treturn positioners.fallback;\n}\n\nfunction drawFrame(ctx, rect, model) {\n\tvar bgColor = model.backgroundColor;\n\tvar borderColor = model.borderColor;\n\tvar borderWidth = model.borderWidth;\n\n\tif (!bgColor && (!borderColor || !borderWidth)) {\n\t\treturn;\n\t}\n\n\tctx.beginPath();\n\n\thelpers$1.canvas.roundedRect(\n\t\tctx,\n\t\trasterize(rect.x) + borderWidth / 2,\n\t\trasterize(rect.y) + borderWidth / 2,\n\t\trasterize(rect.w) - borderWidth,\n\t\trasterize(rect.h) - borderWidth,\n\t\tmodel.borderRadius);\n\n\tctx.closePath();\n\n\tif (bgColor) {\n\t\tctx.fillStyle = bgColor;\n\t\tctx.fill();\n\t}\n\n\tif (borderColor && borderWidth) {\n\t\tctx.strokeStyle = borderColor;\n\t\tctx.lineWidth = borderWidth;\n\t\tctx.lineJoin = 'miter';\n\t\tctx.stroke();\n\t}\n}\n\nfunction textGeometry(rect, align, font) {\n\tvar h = font.lineHeight;\n\tvar w = rect.w;\n\tvar x = rect.x;\n\tvar y = rect.y + h / 2;\n\n\tif (align === 'center') {\n\t\tx += w / 2;\n\t} else if (align === 'end' || align === 'right') {\n\t\tx += w;\n\t}\n\n\treturn {\n\t\th: h,\n\t\tw: w,\n\t\tx: x,\n\t\ty: y\n\t};\n}\n\nfunction drawTextLine(ctx, text, cfg) {\n\tvar shadow = ctx.shadowBlur;\n\tvar stroked = cfg.stroked;\n\tvar x = rasterize(cfg.x);\n\tvar y = rasterize(cfg.y);\n\tvar w = rasterize(cfg.w);\n\n\tif (stroked) {\n\t\tctx.strokeText(text, x, y, w);\n\t}\n\n\tif (cfg.filled) {\n\t\tif (shadow && stroked) {\n\t\t\t// Prevent drawing shadow on both the text stroke and fill, so\n\t\t\t// if the text is stroked, remove the shadow for the text fill.\n\t\t\tctx.shadowBlur = 0;\n\t\t}\n\n\t\tctx.fillText(text, x, y, w);\n\n\t\tif (shadow && stroked) {\n\t\t\tctx.shadowBlur = shadow;\n\t\t}\n\t}\n}\n\nfunction drawText(ctx, lines, rect, model) {\n\tvar align = model.textAlign;\n\tvar color = model.color;\n\tvar filled = !!color;\n\tvar font = model.font;\n\tvar ilen = lines.length;\n\tvar strokeColor = model.textStrokeColor;\n\tvar strokeWidth = model.textStrokeWidth;\n\tvar stroked = strokeColor && strokeWidth;\n\tvar i;\n\n\tif (!ilen || (!filled && !stroked)) {\n\t\treturn;\n\t}\n\n\t// Adjust coordinates based on text alignment and line height\n\trect = textGeometry(rect, align, font);\n\n\tctx.font = font.string;\n\tctx.textAlign = align;\n\tctx.textBaseline = 'middle';\n\tctx.shadowBlur = model.textShadowBlur;\n\tctx.shadowColor = model.textShadowColor;\n\n\tif (filled) {\n\t\tctx.fillStyle = color;\n\t}\n\tif (stroked) {\n\t\tctx.lineJoin = 'round';\n\t\tctx.lineWidth = strokeWidth;\n\t\tctx.strokeStyle = strokeColor;\n\t}\n\n\tfor (i = 0, ilen = lines.length; i < ilen; ++i) {\n\t\tdrawTextLine(ctx, lines[i], {\n\t\t\tstroked: stroked,\n\t\t\tfilled: filled,\n\t\t\tw: rect.w,\n\t\t\tx: rect.x,\n\t\t\ty: rect.y + rect.h * i\n\t\t});\n\t}\n}\n\nvar Label = function(config, ctx, el, index) {\n\tvar me = this;\n\n\tme._config = config;\n\tme._index = index;\n\tme._model = null;\n\tme._rects = null;\n\tme._ctx = ctx;\n\tme._el = el;\n};\n\nhelpers$1.extend(Label.prototype, {\n\t/**\n\t * @private\n\t */\n\t_modelize: function(display, lines, config, context) {\n\t\tvar me = this;\n\t\tvar index = me._index;\n\t\tvar resolve = helpers$1.options.resolve;\n\t\tvar font = utils.parseFont(resolve([config.font, {}], context, index));\n\t\tvar color = resolve([config.color, Chart.defaults.global.defaultFontColor], context, index);\n\n\t\treturn {\n\t\t\talign: resolve([config.align, 'center'], context, index),\n\t\t\tanchor: resolve([config.anchor, 'center'], context, index),\n\t\t\tarea: context.chart.chartArea,\n\t\t\tbackgroundColor: resolve([config.backgroundColor, null], context, index),\n\t\t\tborderColor: resolve([config.borderColor, null], context, index),\n\t\t\tborderRadius: resolve([config.borderRadius, 0], context, index),\n\t\t\tborderWidth: resolve([config.borderWidth, 0], context, index),\n\t\t\tclamp: resolve([config.clamp, false], context, index),\n\t\t\tclip: resolve([config.clip, false], context, index),\n\t\t\tcolor: color,\n\t\t\tdisplay: display,\n\t\t\tfont: font,\n\t\t\tlines: lines,\n\t\t\toffset: resolve([config.offset, 0], context, index),\n\t\t\topacity: resolve([config.opacity, 1], context, index),\n\t\t\torigin: getScaleOrigin(me._el),\n\t\t\tpadding: helpers$1.options.toPadding(resolve([config.padding, 0], context, index)),\n\t\t\tpositioner: getPositioner(me._el),\n\t\t\trotation: resolve([config.rotation, 0], context, index) * (Math.PI / 180),\n\t\t\tsize: utils.textSize(me._ctx, lines, font),\n\t\t\ttextAlign: resolve([config.textAlign, 'start'], context, index),\n\t\t\ttextShadowBlur: resolve([config.textShadowBlur, 0], context, index),\n\t\t\ttextShadowColor: resolve([config.textShadowColor, color], context, index),\n\t\t\ttextStrokeColor: resolve([config.textStrokeColor, color], context, index),\n\t\t\ttextStrokeWidth: resolve([config.textStrokeWidth, 0], context, index)\n\t\t};\n\t},\n\n\tupdate: function(context) {\n\t\tvar me = this;\n\t\tvar model = null;\n\t\tvar rects = null;\n\t\tvar index = me._index;\n\t\tvar config = me._config;\n\t\tvar value, label, lines;\n\n\t\t// We first resolve the display option (separately) to avoid computing\n\t\t// other options in case the label is hidden (i.e. display: false).\n\t\tvar display = helpers$1.options.resolve([config.display, true], context, index);\n\n\t\tif (display) {\n\t\t\tvalue = context.dataset.data[index];\n\t\t\tlabel = helpers$1.valueOrDefault(helpers$1.callback(config.formatter, [value, context]), value);\n\t\t\tlines = helpers$1.isNullOrUndef(label) ? [] : utils.toTextLines(label);\n\n\t\t\tif (lines.length) {\n\t\t\t\tmodel = me._modelize(display, lines, config, context);\n\t\t\t\trects = boundingRects(model);\n\t\t\t}\n\t\t}\n\n\t\tme._model = model;\n\t\tme._rects = rects;\n\t},\n\n\tgeometry: function() {\n\t\treturn this._rects ? this._rects.frame : {};\n\t},\n\n\trotation: function() {\n\t\treturn this._model ? this._model.rotation : 0;\n\t},\n\n\tvisible: function() {\n\t\treturn this._model && this._model.opacity;\n\t},\n\n\tmodel: function() {\n\t\treturn this._model;\n\t},\n\n\tdraw: function(chart, center) {\n\t\tvar me = this;\n\t\tvar ctx = chart.ctx;\n\t\tvar model = me._model;\n\t\tvar rects = me._rects;\n\t\tvar area;\n\n\t\tif (!this.visible()) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.save();\n\n\t\tif (model.clip) {\n\t\t\tarea = model.area;\n\t\t\tctx.beginPath();\n\t\t\tctx.rect(\n\t\t\t\tarea.left,\n\t\t\t\tarea.top,\n\t\t\t\tarea.right - area.left,\n\t\t\t\tarea.bottom - area.top);\n\t\t\tctx.clip();\n\t\t}\n\n\t\tctx.globalAlpha = utils.bound(0, model.opacity, 1);\n\t\tctx.translate(rasterize(center.x), rasterize(center.y));\n\t\tctx.rotate(model.rotation);\n\n\t\tdrawFrame(ctx, rects.frame, model);\n\t\tdrawText(ctx, model.lines, rects.text, model);\n\n\t\tctx.restore();\n\t}\n});\n\nvar helpers$2 = Chart.helpers;\n\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; // eslint-disable-line es/no-number-minsafeinteger\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;  // eslint-disable-line es/no-number-maxsafeinteger\n\nfunction rotated(point, center, angle) {\n\tvar cos = Math.cos(angle);\n\tvar sin = Math.sin(angle);\n\tvar cx = center.x;\n\tvar cy = center.y;\n\n\treturn {\n\t\tx: cx + cos * (point.x - cx) - sin * (point.y - cy),\n\t\ty: cy + sin * (point.x - cx) + cos * (point.y - cy)\n\t};\n}\n\nfunction projected(points, axis) {\n\tvar min = MAX_INTEGER;\n\tvar max = MIN_INTEGER;\n\tvar origin = axis.origin;\n\tvar i, pt, vx, vy, dp;\n\n\tfor (i = 0; i < points.length; ++i) {\n\t\tpt = points[i];\n\t\tvx = pt.x - origin.x;\n\t\tvy = pt.y - origin.y;\n\t\tdp = axis.vx * vx + axis.vy * vy;\n\t\tmin = Math.min(min, dp);\n\t\tmax = Math.max(max, dp);\n\t}\n\n\treturn {\n\t\tmin: min,\n\t\tmax: max\n\t};\n}\n\nfunction toAxis(p0, p1) {\n\tvar vx = p1.x - p0.x;\n\tvar vy = p1.y - p0.y;\n\tvar ln = Math.sqrt(vx * vx + vy * vy);\n\n\treturn {\n\t\tvx: (p1.x - p0.x) / ln,\n\t\tvy: (p1.y - p0.y) / ln,\n\t\torigin: p0,\n\t\tln: ln\n\t};\n}\n\nvar HitBox = function() {\n\tthis._rotation = 0;\n\tthis._rect = {\n\t\tx: 0,\n\t\ty: 0,\n\t\tw: 0,\n\t\th: 0\n\t};\n};\n\nhelpers$2.extend(HitBox.prototype, {\n\tcenter: function() {\n\t\tvar r = this._rect;\n\t\treturn {\n\t\t\tx: r.x + r.w / 2,\n\t\t\ty: r.y + r.h / 2\n\t\t};\n\t},\n\n\tupdate: function(center, rect, rotation) {\n\t\tthis._rotation = rotation;\n\t\tthis._rect = {\n\t\t\tx: rect.x + center.x,\n\t\t\ty: rect.y + center.y,\n\t\t\tw: rect.w,\n\t\t\th: rect.h\n\t\t};\n\t},\n\n\tcontains: function(point) {\n\t\tvar me = this;\n\t\tvar margin = 1;\n\t\tvar rect = me._rect;\n\n\t\tpoint = rotated(point, me.center(), -me._rotation);\n\n\t\treturn !(point.x < rect.x - margin\n\t\t\t|| point.y < rect.y - margin\n\t\t\t|| point.x > rect.x + rect.w + margin * 2\n\t\t\t|| point.y > rect.y + rect.h + margin * 2);\n\t},\n\n\t// Separating Axis Theorem\n\t// https://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169\n\tintersects: function(other) {\n\t\tvar r0 = this._points();\n\t\tvar r1 = other._points();\n\t\tvar axes = [\n\t\t\ttoAxis(r0[0], r0[1]),\n\t\t\ttoAxis(r0[0], r0[3])\n\t\t];\n\t\tvar i, pr0, pr1;\n\n\t\tif (this._rotation !== other._rotation) {\n\t\t\t// Only separate with r1 axis if the rotation is different,\n\t\t\t// else it's enough to separate r0 and r1 with r0 axis only!\n\t\t\taxes.push(\n\t\t\t\ttoAxis(r1[0], r1[1]),\n\t\t\t\ttoAxis(r1[0], r1[3])\n\t\t\t);\n\t\t}\n\n\t\tfor (i = 0; i < axes.length; ++i) {\n\t\t\tpr0 = projected(r0, axes[i]);\n\t\t\tpr1 = projected(r1, axes[i]);\n\n\t\t\tif (pr0.max < pr1.min || pr1.max < pr0.min) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_points: function() {\n\t\tvar me = this;\n\t\tvar rect = me._rect;\n\t\tvar angle = me._rotation;\n\t\tvar center = me.center();\n\n\t\treturn [\n\t\t\trotated({x: rect.x, y: rect.y}, center, angle),\n\t\t\trotated({x: rect.x + rect.w, y: rect.y}, center, angle),\n\t\t\trotated({x: rect.x + rect.w, y: rect.y + rect.h}, center, angle),\n\t\t\trotated({x: rect.x, y: rect.y + rect.h}, center, angle)\n\t\t];\n\t}\n});\n\nfunction coordinates(view, model, geometry) {\n\tvar point = model.positioner(view, model);\n\tvar vx = point.vx;\n\tvar vy = point.vy;\n\n\tif (!vx && !vy) {\n\t\t// if aligned center, we don't want to offset the center point\n\t\treturn {x: point.x, y: point.y};\n\t}\n\n\tvar w = geometry.w;\n\tvar h = geometry.h;\n\n\t// take in account the label rotation\n\tvar rotation = model.rotation;\n\tvar dx = Math.abs(w / 2 * Math.cos(rotation)) + Math.abs(h / 2 * Math.sin(rotation));\n\tvar dy = Math.abs(w / 2 * Math.sin(rotation)) + Math.abs(h / 2 * Math.cos(rotation));\n\n\t// scale the unit vector (vx, vy) to get at least dx or dy equal to\n\t// w or h respectively (else we would calculate the distance to the\n\t// ellipse inscribed in the bounding rect)\n\tvar vs = 1 / Math.max(Math.abs(vx), Math.abs(vy));\n\tdx *= vx * vs;\n\tdy *= vy * vs;\n\n\t// finally, include the explicit offset\n\tdx += model.offset * vx;\n\tdy += model.offset * vy;\n\n\treturn {\n\t\tx: point.x + dx,\n\t\ty: point.y + dy\n\t};\n}\n\nfunction collide(labels, collider) {\n\tvar i, j, s0, s1;\n\n\t// IMPORTANT Iterate in the reverse order since items at the end of the\n\t// list have an higher weight/priority and thus should be less impacted\n\t// by the overlapping strategy.\n\n\tfor (i = labels.length - 1; i >= 0; --i) {\n\t\ts0 = labels[i].$layout;\n\n\t\tfor (j = i - 1; j >= 0 && s0._visible; --j) {\n\t\t\ts1 = labels[j].$layout;\n\n\t\t\tif (s1._visible && s0._box.intersects(s1._box)) {\n\t\t\t\tcollider(s0, s1);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn labels;\n}\n\nfunction compute$1(labels) {\n\tvar i, ilen, label, state, geometry, center;\n\n\t// Initialize labels for overlap detection\n\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\tlabel = labels[i];\n\t\tstate = label.$layout;\n\n\t\tif (state._visible) {\n\t\t\tgeometry = label.geometry();\n\t\t\tcenter = coordinates(label._el._model, label.model(), geometry);\n\t\t\tstate._box.update(center, geometry, label.rotation());\n\t\t}\n\t}\n\n\t// Auto hide overlapping labels\n\treturn collide(labels, function(s0, s1) {\n\t\tvar h0 = s0._hidable;\n\t\tvar h1 = s1._hidable;\n\n\t\tif ((h0 && h1) || h1) {\n\t\t\ts1._visible = false;\n\t\t} else if (h0) {\n\t\t\ts0._visible = false;\n\t\t}\n\t});\n}\n\nvar layout = {\n\tprepare: function(datasets) {\n\t\tvar labels = [];\n\t\tvar i, j, ilen, jlen, label;\n\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\n\t\t\tfor (j = 0, jlen = datasets[i].length; j < jlen; ++j) {\n\t\t\t\tlabel = datasets[i][j];\n\t\t\t\tlabels.push(label);\n\t\t\t\tlabel.$layout = {\n\t\t\t\t\t_box: new HitBox(),\n\t\t\t\t\t_hidable: false,\n\t\t\t\t\t_visible: true,\n\t\t\t\t\t_set: i,\n\t\t\t\t\t_idx: j\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// TODO New `z` option: labels with a higher z-index are drawn\n\t\t// of top of the ones with a lower index. Lowest z-index labels\n\t\t// are also discarded first when hiding overlapping labels.\n\t\tlabels.sort(function(a, b) {\n\t\t\tvar sa = a.$layout;\n\t\t\tvar sb = b.$layout;\n\n\t\t\treturn sa._idx === sb._idx\n\t\t\t\t? sb._set - sa._set\n\t\t\t\t: sb._idx - sa._idx;\n\t\t});\n\n\t\tthis.update(labels);\n\n\t\treturn labels;\n\t},\n\n\tupdate: function(labels) {\n\t\tvar dirty = false;\n\t\tvar i, ilen, label, model, state;\n\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\t\tlabel = labels[i];\n\t\t\tmodel = label.model();\n\t\t\tstate = label.$layout;\n\t\t\tstate._hidable = model && model.display === 'auto';\n\t\t\tstate._visible = label.visible();\n\t\t\tdirty |= state._hidable;\n\t\t}\n\n\t\tif (dirty) {\n\t\t\tcompute$1(labels);\n\t\t}\n\t},\n\n\tlookup: function(labels, point) {\n\t\tvar i, state;\n\n\t\t// IMPORTANT Iterate in the reverse order since items at the end of\n\t\t// the list have an higher z-index, thus should be picked first.\n\n\t\tfor (i = labels.length - 1; i >= 0; --i) {\n\t\t\tstate = labels[i].$layout;\n\n\t\t\tif (state && state._visible && state._box.contains(point)) {\n\t\t\t\treturn labels[i];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t},\n\n\tdraw: function(chart, labels) {\n\t\tvar i, ilen, label, state, geometry, center;\n\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\t\tlabel = labels[i];\n\t\t\tstate = label.$layout;\n\n\t\t\tif (state._visible) {\n\t\t\t\tgeometry = label.geometry();\n\t\t\t\tcenter = coordinates(label._el._view, label.model(), geometry);\n\t\t\t\tstate._box.update(center, geometry, label.rotation());\n\t\t\t\tlabel.draw(chart, center);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar helpers$3 = Chart.helpers;\n\nvar formatter = function(value) {\n\tif (helpers$3.isNullOrUndef(value)) {\n\t\treturn null;\n\t}\n\n\tvar label = value;\n\tvar keys, klen, k;\n\tif (helpers$3.isObject(value)) {\n\t\tif (!helpers$3.isNullOrUndef(value.label)) {\n\t\t\tlabel = value.label;\n\t\t} else if (!helpers$3.isNullOrUndef(value.r)) {\n\t\t\tlabel = value.r;\n\t\t} else {\n\t\t\tlabel = '';\n\t\t\tkeys = Object.keys(value);\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\n\t\t\t\tlabel += (k !== 0 ? ', ' : '') + keys[k] + ': ' + value[keys[k]];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn '' + label;\n};\n\n/**\n * IMPORTANT: make sure to also update tests and TypeScript definition\n * files (`/test/specs/defaults.spec.js` and `/types/options.d.ts`)\n */\n\nvar defaults = {\n\talign: 'center',\n\tanchor: 'center',\n\tbackgroundColor: null,\n\tborderColor: null,\n\tborderRadius: 0,\n\tborderWidth: 0,\n\tclamp: false,\n\tclip: false,\n\tcolor: undefined,\n\tdisplay: true,\n\tfont: {\n\t\tfamily: undefined,\n\t\tlineHeight: 1.2,\n\t\tsize: undefined,\n\t\tstyle: undefined,\n\t\tweight: null\n\t},\n\tformatter: formatter,\n\tlabels: undefined,\n\tlisteners: {},\n\toffset: 4,\n\topacity: 1,\n\tpadding: {\n\t\ttop: 4,\n\t\tright: 4,\n\t\tbottom: 4,\n\t\tleft: 4\n\t},\n\trotation: 0,\n\ttextAlign: 'start',\n\ttextStrokeColor: undefined,\n\ttextStrokeWidth: 0,\n\ttextShadowBlur: 0,\n\ttextShadowColor: undefined\n};\n\n/**\n * @see https://github.com/chartjs/Chart.js/issues/4176\n */\n\nvar helpers$4 = Chart.helpers;\nvar EXPANDO_KEY = '$datalabels';\nvar DEFAULT_KEY = '$default';\n\nfunction configure(dataset, options) {\n\tvar override = dataset.datalabels;\n\tvar listeners = {};\n\tvar configs = [];\n\tvar labels, keys;\n\n\tif (override === false) {\n\t\treturn null;\n\t}\n\tif (override === true) {\n\t\toverride = {};\n\t}\n\n\toptions = helpers$4.merge({}, [options, override]);\n\tlabels = options.labels || {};\n\tkeys = Object.keys(labels);\n\tdelete options.labels;\n\n\tif (keys.length) {\n\t\tkeys.forEach(function(key) {\n\t\t\tif (labels[key]) {\n\t\t\t\tconfigs.push(helpers$4.merge({}, [\n\t\t\t\t\toptions,\n\t\t\t\t\tlabels[key],\n\t\t\t\t\t{_key: key}\n\t\t\t\t]));\n\t\t\t}\n\t\t});\n\t} else {\n\t\t// Default label if no \"named\" label defined.\n\t\tconfigs.push(options);\n\t}\n\n\t// listeners: {<event-type>: {<label-key>: <fn>}}\n\tlisteners = configs.reduce(function(target, config) {\n\t\thelpers$4.each(config.listeners || {}, function(fn, event) {\n\t\t\ttarget[event] = target[event] || {};\n\t\t\ttarget[event][config._key || DEFAULT_KEY] = fn;\n\t\t});\n\n\t\tdelete config.listeners;\n\t\treturn target;\n\t}, {});\n\n\treturn {\n\t\tlabels: configs,\n\t\tlisteners: listeners\n\t};\n}\n\nfunction dispatchEvent(chart, listeners, label) {\n\tif (!listeners) {\n\t\treturn;\n\t}\n\n\tvar context = label.$context;\n\tvar groups = label.$groups;\n\tvar callback;\n\n\tif (!listeners[groups._set]) {\n\t\treturn;\n\t}\n\n\tcallback = listeners[groups._set][groups._key];\n\tif (!callback) {\n\t\treturn;\n\t}\n\n\tif (helpers$4.callback(callback, [context]) === true) {\n\t\t// Users are allowed to tweak the given context by injecting values that can be\n\t\t// used in scriptable options to display labels differently based on the current\n\t\t// event (e.g. highlight an hovered label). That's why we update the label with\n\t\t// the output context and schedule a new chart render by setting it dirty.\n\t\tchart[EXPANDO_KEY]._dirty = true;\n\t\tlabel.update(context);\n\t}\n}\n\nfunction dispatchMoveEvents(chart, listeners, previous, label) {\n\tvar enter, leave;\n\n\tif (!previous && !label) {\n\t\treturn;\n\t}\n\n\tif (!previous) {\n\t\tenter = true;\n\t} else if (!label) {\n\t\tleave = true;\n\t} else if (previous !== label) {\n\t\tleave = enter = true;\n\t}\n\n\tif (leave) {\n\t\tdispatchEvent(chart, listeners.leave, previous);\n\t}\n\tif (enter) {\n\t\tdispatchEvent(chart, listeners.enter, label);\n\t}\n}\n\nfunction handleMoveEvents(chart, event) {\n\tvar expando = chart[EXPANDO_KEY];\n\tvar listeners = expando._listeners;\n\tvar previous, label;\n\n\tif (!listeners.enter && !listeners.leave) {\n\t\treturn;\n\t}\n\n\tif (event.type === 'mousemove') {\n\t\tlabel = layout.lookup(expando._labels, event);\n\t} else if (event.type !== 'mouseout') {\n\t\treturn;\n\t}\n\n\tprevious = expando._hovered;\n\texpando._hovered = label;\n\tdispatchMoveEvents(chart, listeners, previous, label);\n}\n\nfunction handleClickEvents(chart, event) {\n\tvar expando = chart[EXPANDO_KEY];\n\tvar handlers = expando._listeners.click;\n\tvar label = handlers && layout.lookup(expando._labels, event);\n\tif (label) {\n\t\tdispatchEvent(chart, handlers, label);\n\t}\n}\n\n// https://github.com/chartjs/chartjs-plugin-datalabels/issues/108\nfunction invalidate(chart) {\n\tif (chart.animating) {\n\t\treturn;\n\t}\n\n\t// `chart.animating` can be `false` even if there is animation in progress,\n\t// so let's iterate all animations to find if there is one for the `chart`.\n\tvar animations = Chart.animationService.animations;\n\tfor (var i = 0, ilen = animations.length; i < ilen; ++i) {\n\t\tif (animations[i].chart === chart) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// No render scheduled: trigger a \"lazy\" render that can be canceled in case\n\t// of hover interactions. The 1ms duration is a workaround to make sure an\n\t// animation is created so the controller can stop it before any transition.\n\tchart.render({duration: 1, lazy: true});\n}\n\nChart.defaults.global.plugins.datalabels = defaults;\n\nvar plugin = {\n\tid: 'datalabels',\n\n\tbeforeInit: function(chart) {\n\t\tchart[EXPANDO_KEY] = {\n\t\t\t_actives: []\n\t\t};\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar expando = chart[EXPANDO_KEY];\n\t\texpando._listened = false;\n\t\texpando._listeners = {};     // {<event-type>: {<dataset-index>: {<label-key>: <fn>}}}\n\t\texpando._datasets = [];      // per dataset labels: [Label[]]\n\t\texpando._labels = [];        // layouted labels: Label[]\n\t},\n\n\tafterDatasetUpdate: function(chart, args, options) {\n\t\tvar datasetIndex = args.index;\n\t\tvar expando = chart[EXPANDO_KEY];\n\t\tvar labels = expando._datasets[datasetIndex] = [];\n\t\tvar visible = chart.isDatasetVisible(datasetIndex);\n\t\tvar dataset = chart.data.datasets[datasetIndex];\n\t\tvar config = configure(dataset, options);\n\t\tvar elements = args.meta.data || [];\n\t\tvar ctx = chart.ctx;\n\t\tvar i, j, ilen, jlen, cfg, key, el, label;\n\n\t\tctx.save();\n\n\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\n\t\t\tel = elements[i];\n\t\t\tel[EXPANDO_KEY] = [];\n\n\t\t\tif (visible && el && !el.hidden && !el._model.skip) {\n\t\t\t\tfor (j = 0, jlen = config.labels.length; j < jlen; ++j) {\n\t\t\t\t\tcfg = config.labels[j];\n\t\t\t\t\tkey = cfg._key;\n\n\t\t\t\t\tlabel = new Label(cfg, ctx, el, i);\n\t\t\t\t\tlabel.$groups = {\n\t\t\t\t\t\t_set: datasetIndex,\n\t\t\t\t\t\t_key: key || DEFAULT_KEY\n\t\t\t\t\t};\n\t\t\t\t\tlabel.$context = {\n\t\t\t\t\t\tactive: false,\n\t\t\t\t\t\tchart: chart,\n\t\t\t\t\t\tdataIndex: i,\n\t\t\t\t\t\tdataset: dataset,\n\t\t\t\t\t\tdatasetIndex: datasetIndex\n\t\t\t\t\t};\n\n\t\t\t\t\tlabel.update(label.$context);\n\t\t\t\t\tel[EXPANDO_KEY].push(label);\n\t\t\t\t\tlabels.push(label);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tctx.restore();\n\n\t\t// Store listeners at the chart level and per event type to optimize\n\t\t// cases where no listeners are registered for a specific event.\n\t\thelpers$4.merge(expando._listeners, config.listeners, {\n\t\t\tmerger: function(event, target, source) {\n\t\t\t\ttarget[event] = target[event] || {};\n\t\t\t\ttarget[event][args.index] = source[event];\n\t\t\t\texpando._listened = true;\n\t\t\t}\n\t\t});\n\t},\n\n\tafterUpdate: function(chart, options) {\n\t\tchart[EXPANDO_KEY]._labels = layout.prepare(\n\t\t\tchart[EXPANDO_KEY]._datasets,\n\t\t\toptions);\n\t},\n\n\t// Draw labels on top of all dataset elements\n\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/29\n\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/32\n\tafterDatasetsDraw: function(chart) {\n\t\tlayout.draw(chart, chart[EXPANDO_KEY]._labels);\n\t},\n\n\tbeforeEvent: function(chart, event) {\n\t\t// If there is no listener registered for this chart, `listened` will be false,\n\t\t// meaning we can immediately ignore the incoming event and avoid useless extra\n\t\t// computation for users who don't implement label interactions.\n\t\tif (chart[EXPANDO_KEY]._listened) {\n\t\t\tswitch (event.type) {\n\t\t\tcase 'mousemove':\n\t\t\tcase 'mouseout':\n\t\t\t\thandleMoveEvents(chart, event);\n\t\t\t\tbreak;\n\t\t\tcase 'click':\n\t\t\t\thandleClickEvents(chart, event);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t}\n\t\t}\n\t},\n\n\tafterEvent: function(chart) {\n\t\tvar expando = chart[EXPANDO_KEY];\n\t\tvar previous = expando._actives;\n\t\tvar actives = expando._actives = chart.lastActive || [];  // public API?!\n\t\tvar updates = utils.arrayDiff(previous, actives);\n\t\tvar i, ilen, j, jlen, update, label, labels;\n\n\t\tfor (i = 0, ilen = updates.length; i < ilen; ++i) {\n\t\t\tupdate = updates[i];\n\t\t\tif (update[1]) {\n\t\t\t\tlabels = update[0][EXPANDO_KEY] || [];\n\t\t\t\tfor (j = 0, jlen = labels.length; j < jlen; ++j) {\n\t\t\t\t\tlabel = labels[j];\n\t\t\t\t\tlabel.$context.active = (update[1] === 1);\n\t\t\t\t\tlabel.update(label.$context);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (expando._dirty || updates.length) {\n\t\t\tlayout.update(expando._labels);\n\t\t\tinvalidate(chart);\n\t\t}\n\n\t\tdelete expando._dirty;\n\t}\n};\n\n// TODO Remove at version 1, we shouldn't automatically register plugins.\n// https://github.com/chartjs/chartjs-plugin-datalabels/issues/42\nChart.plugins.unregister(plugin);\nreturn plugin;\n\n}));\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, '&quot;') + '\"';\n  return p1 + '>' + S + '</' + tag + '>';\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;","/*! PhotoSwipe - v4.1.1 - 2015-12-24\n * http://photoswipe.com\n * Copyright (c) 2015 Dmitry Semenov; */\n! function (a, b) {\n    \"function\" == typeof define && define.amd ? define(b) : \"object\" == typeof exports ? module.exports = b() : window.PhotoSwipe = b()\n}(this, function () {\n    \"use strict\";\n    var a = function (a, b, c, d) {\n        var e = {\n            features: null,\n            bind: function (a, b, c, d) {\n                var e = (d ? \"remove\" : \"add\") + \"EventListener\";\n                b = b.split(\" \");\n                for (var f = 0; f < b.length; f++) b[f] && a[e](b[f], c, !1)\n            },\n            isArray: function (a) {\n                return a instanceof Array\n            },\n            createEl: function (a, b) {\n                var c = document.createElement(b || \"div\");\n                return a && (c.className = a), c\n            },\n            getScrollY: function () {\n                var a = window.pageYOffset;\n                return void 0 !== a ? a : document.documentElement.scrollTop\n            },\n            unbind: function (a, b, c) {\n                e.bind(a, b, c, !0)\n            },\n            removeClass: function (a, b) {\n                var c = new RegExp(\"(\\\\s|^)\" + b + \"(\\\\s|$)\");\n                a.className = a.className.replace(c, \" \").replace(/^\\s\\s*/, \"\").replace(/\\s\\s*$/, \"\")\n            },\n            addClass: function (a, b) {\n                e.hasClass(a, b) || (a.className += (a.className ? \" \" : \"\") + b)\n            },\n            hasClass: function (a, b) {\n                return a.className && new RegExp(\"(^|\\\\s)\" + b + \"(\\\\s|$)\").test(a.className)\n            },\n            getChildByClass: function (a, b) {\n                for (var c = a.firstChild; c;) {\n                    if (e.hasClass(c, b)) return c;\n                    c = c.nextSibling\n                }\n            },\n            arraySearch: function (a, b, c) {\n                for (var d = a.length; d--;)\n                    if (a[d][c] === b) return d;\n                return -1\n            },\n            extend: function (a, b, c) {\n                for (var d in b)\n                    if (b.hasOwnProperty(d)) {\n                        if (c && a.hasOwnProperty(d)) continue;\n                        a[d] = b[d]\n                    }\n            },\n            easing: {\n                sine: {\n                    out: function (a) {\n                        return Math.sin(a * (Math.PI / 2))\n                    },\n                    inOut: function (a) {\n                        return -(Math.cos(Math.PI * a) - 1) / 2\n                    }\n                },\n                cubic: {\n                    out: function (a) {\n                        return --a * a * a + 1\n                    }\n                }\n            },\n            detectFeatures: function () {\n                if (e.features) return e.features;\n                var a = e.createEl(),\n                    b = a.style,\n                    c = \"\",\n                    d = {};\n                if (d.oldIE = document.all && !document.addEventListener, d.touch = \"ontouchstart\" in window, window.requestAnimationFrame && (d.raf = window.requestAnimationFrame, d.caf = window.cancelAnimationFrame), d.pointerEvent = navigator.pointerEnabled || navigator.msPointerEnabled, !d.pointerEvent) {\n                    var f = navigator.userAgent;\n                    if (/iP(hone|od)/.test(navigator.platform)) {\n                        var g = navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n                        g && g.length > 0 && (g = parseInt(g[1], 10), g >= 1 && 8 > g && (d.isOldIOSPhone = !0))\n                    }\n                    var h = f.match(/Android\\s([0-9\\.]*)/),\n                        i = h ? h[1] : 0;\n                    i = parseFloat(i), i >= 1 && (4.4 > i && (d.isOldAndroid = !0), d.androidVersion = i), d.isMobileOpera = /opera mini|opera mobi/i.test(f)\n                }\n                for (var j, k, l = [\"transform\", \"perspective\", \"animationName\"], m = [\"\", \"webkit\", \"Moz\", \"ms\", \"O\"], n = 0; 4 > n; n++) {\n                    c = m[n];\n                    for (var o = 0; 3 > o; o++) j = l[o], k = c + (c ? j.charAt(0).toUpperCase() + j.slice(1) : j), !d[j] && k in b && (d[j] = k);\n                    c && !d.raf && (c = c.toLowerCase(), d.raf = window[c + \"RequestAnimationFrame\"], d.raf && (d.caf = window[c + \"CancelAnimationFrame\"] || window[c + \"CancelRequestAnimationFrame\"]))\n                }\n                if (!d.raf) {\n                    var p = 0;\n                    d.raf = function (a) {\n                        var b = (new Date).getTime(),\n                            c = Math.max(0, 16 - (b - p)),\n                            d = window.setTimeout(function () {\n                                a(b + c)\n                            }, c);\n                        return p = b + c, d\n                    }, d.caf = function (a) {\n                        clearTimeout(a)\n                    }\n                }\n                return d.svg = !!document.createElementNS && !!document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\").createSVGRect, e.features = d, d\n            }\n        };\n        e.detectFeatures(), e.features.oldIE && (e.bind = function (a, b, c, d) {\n            b = b.split(\" \");\n            for (var e, f = (d ? \"detach\" : \"attach\") + \"Event\", g = function () {\n                    c.handleEvent.call(c)\n                }, h = 0; h < b.length; h++)\n                if (e = b[h])\n                    if (\"object\" == typeof c && c.handleEvent) {\n                        if (d) {\n                            if (!c[\"oldIE\" + e]) return !1\n                        } else c[\"oldIE\" + e] = g;\n                        a[f](\"on\" + e, c[\"oldIE\" + e])\n                    } else a[f](\"on\" + e, c)\n        });\n        var f = this,\n            g = 25,\n            h = 3,\n            i = {\n                allowPanToNext: !0,\n                spacing: .12,\n                bgOpacity: 1,\n                mouseUsed: !1,\n                loop: !0,\n                pinchToClose: !0,\n                closeOnScroll: !0,\n                closeOnVerticalDrag: !0,\n                verticalDragRange: .75,\n                hideAnimationDuration: 333,\n                showAnimationDuration: 333,\n                showHideOpacity: !1,\n                focus: !0,\n                escKey: !0,\n                arrowKeys: !0,\n                mainScrollEndFriction: .35,\n                panEndFriction: .35,\n                isClickableElement: function (a) {\n                    return \"A\" === a.tagName\n                },\n                getDoubleTapZoom: function (a, b) {\n                    return a ? 1 : b.initialZoomLevel < .7 ? 1 : 1.33\n                },\n                maxSpreadZoom: 1.33,\n                modal: !0,\n                scaleMode: \"fit\"\n            };\n        e.extend(i, d);\n        var j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _, aa, ba, ca, da, ea, fa, ga, ha, ia, ja, ka, la = function () {\n                return {\n                    x: 0,\n                    y: 0\n                }\n            },\n            ma = la(),\n            na = la(),\n            oa = la(),\n            pa = {},\n            qa = 0,\n            ra = {},\n            sa = la(),\n            ta = 0,\n            ua = !0,\n            va = [],\n            wa = {},\n            xa = !1,\n            ya = function (a, b) {\n                e.extend(f, b.publicMethods), va.push(a)\n            },\n            za = function (a) {\n                var b = _b();\n                return a > b - 1 ? a - b : 0 > a ? b + a : a\n            },\n            Aa = {},\n            Ba = function (a, b) {\n                return Aa[a] || (Aa[a] = []), Aa[a].push(b)\n            },\n            Ca = function (a) {\n                var b = Aa[a];\n                if (b) {\n                    var c = Array.prototype.slice.call(arguments);\n                    c.shift();\n                    for (var d = 0; d < b.length; d++) b[d].apply(f, c)\n                }\n            },\n            Da = function () {\n                return (new Date).getTime()\n            },\n            Ea = function (a) {\n                ia = a, f.bg.style.opacity = a * i.bgOpacity\n            },\n            Fa = function (a, b, c, d, e) {\n                (!xa || e && e !== f.currItem) && (d /= e ? e.fitRatio : f.currItem.fitRatio), a[E] = u + b + \"px, \" + c + \"px\" + v + \" scale(\" + d + \")\"\n            },\n            Ga = function (a) {\n                da && (a && (s > f.currItem.fitRatio ? xa || (lc(f.currItem, !1, !0), xa = !0) : xa && (lc(f.currItem), xa = !1)), Fa(da, oa.x, oa.y, s))\n            },\n            Ha = function (a) {\n                a.container && Fa(a.container.style, a.initialPosition.x, a.initialPosition.y, a.initialZoomLevel, a)\n            },\n            Ia = function (a, b) {\n                b[E] = u + a + \"px, 0px\" + v\n            },\n            Ja = function (a, b) {\n                if (!i.loop && b) {\n                    var c = m + (sa.x * qa - a) / sa.x,\n                        d = Math.round(a - sb.x);\n                    (0 > c && d > 0 || c >= _b() - 1 && 0 > d) && (a = sb.x + d * i.mainScrollEndFriction)\n                }\n                sb.x = a, Ia(a, n)\n            },\n            Ka = function (a, b) {\n                var c = tb[a] - ra[a];\n                return na[a] + ma[a] + c - c * (b / t)\n            },\n            La = function (a, b) {\n                a.x = b.x, a.y = b.y, b.id && (a.id = b.id)\n            },\n            Ma = function (a) {\n                a.x = Math.round(a.x), a.y = Math.round(a.y)\n            },\n            Na = null,\n            Oa = function () {\n                Na && (e.unbind(document, \"mousemove\", Oa), e.addClass(a, \"pswp--has_mouse\"), i.mouseUsed = !0, Ca(\"mouseUsed\")), Na = setTimeout(function () {\n                    Na = null\n                }, 100)\n            },\n            Pa = function () {\n                e.bind(document, \"keydown\", f), N.transform && e.bind(f.scrollWrap, \"click\", f), i.mouseUsed || e.bind(document, \"mousemove\", Oa), e.bind(window, \"resize scroll\", f), Ca(\"bindEvents\")\n            },\n            Qa = function () {\n                e.unbind(window, \"resize\", f), e.unbind(window, \"scroll\", r.scroll), e.unbind(document, \"keydown\", f), e.unbind(document, \"mousemove\", Oa), N.transform && e.unbind(f.scrollWrap, \"click\", f), U && e.unbind(window, p, f), Ca(\"unbindEvents\")\n            },\n            Ra = function (a, b) {\n                var c = hc(f.currItem, pa, a);\n                return b && (ca = c), c\n            },\n            Sa = function (a) {\n                return a || (a = f.currItem), a.initialZoomLevel\n            },\n            Ta = function (a) {\n                return a || (a = f.currItem), a.w > 0 ? i.maxSpreadZoom : 1\n            },\n            Ua = function (a, b, c, d) {\n                return d === f.currItem.initialZoomLevel ? (c[a] = f.currItem.initialPosition[a], !0) : (c[a] = Ka(a, d), c[a] > b.min[a] ? (c[a] = b.min[a], !0) : c[a] < b.max[a] ? (c[a] = b.max[a], !0) : !1)\n            },\n            Va = function () {\n                if (E) {\n                    var b = N.perspective && !G;\n                    return u = \"translate\" + (b ? \"3d(\" : \"(\"), void(v = N.perspective ? \", 0px)\" : \")\")\n                }\n                E = \"left\", e.addClass(a, \"pswp--ie\"), Ia = function (a, b) {\n                    b.left = a + \"px\"\n                }, Ha = function (a) {\n                    var b = a.fitRatio > 1 ? 1 : a.fitRatio,\n                        c = a.container.style,\n                        d = b * a.w,\n                        e = b * a.h;\n                    c.width = d + \"px\", c.height = e + \"px\", c.left = a.initialPosition.x + \"px\", c.top = a.initialPosition.y + \"px\"\n                }, Ga = function () {\n                    if (da) {\n                        var a = da,\n                            b = f.currItem,\n                            c = b.fitRatio > 1 ? 1 : b.fitRatio,\n                            d = c * b.w,\n                            e = c * b.h;\n                        a.width = d + \"px\", a.height = e + \"px\", a.left = oa.x + \"px\", a.top = oa.y + \"px\"\n                    }\n                }\n            },\n            Wa = function (a) {\n                var b = \"\";\n                i.escKey && 27 === a.keyCode ? b = \"close\" : i.arrowKeys && (37 === a.keyCode ? b = \"prev\" : 39 === a.keyCode && (b = \"next\")), b && (a.ctrlKey || a.altKey || a.shiftKey || a.metaKey || (a.preventDefault ? a.preventDefault() : a.returnValue = !1, f[b]()))\n            },\n            Xa = function (a) {\n                a && (X || W || ea || S) && (a.preventDefault(), a.stopPropagation())\n            },\n            Ya = function () {\n                f.setScrollOffset(0, e.getScrollY())\n            },\n            Za = {},\n            $a = 0,\n            _a = function (a) {\n                Za[a] && (Za[a].raf && I(Za[a].raf), $a--, delete Za[a])\n            },\n            ab = function (a) {\n                Za[a] && _a(a), Za[a] || ($a++, Za[a] = {})\n            },\n            bb = function () {\n                for (var a in Za) Za.hasOwnProperty(a) && _a(a)\n            },\n            cb = function (a, b, c, d, e, f, g) {\n                var h, i = Da();\n                ab(a);\n                var j = function () {\n                    if (Za[a]) {\n                        if (h = Da() - i, h >= d) return _a(a), f(c), void(g && g());\n                        f((c - b) * e(h / d) + b), Za[a].raf = H(j)\n                    }\n                };\n                j()\n            },\n            db = {\n                shout: Ca,\n                listen: Ba,\n                viewportSize: pa,\n                options: i,\n                isMainScrollAnimating: function () {\n                    return ea\n                },\n                getZoomLevel: function () {\n                    return s\n                },\n                getCurrentIndex: function () {\n                    return m\n                },\n                isDragging: function () {\n                    return U\n                },\n                isZooming: function () {\n                    return _\n                },\n                setScrollOffset: function (a, b) {\n                    ra.x = a, M = ra.y = b, Ca(\"updateScrollOffset\", ra)\n                },\n                applyZoomPan: function (a, b, c, d) {\n                    oa.x = b, oa.y = c, s = a, Ga(d)\n                },\n                init: function () {\n                    if (!j && !k) {\n                        var c;\n                        f.framework = e, f.template = a, f.bg = e.getChildByClass(a, \"pswp__bg\"), J = a.className, j = !0, N = e.detectFeatures(), H = N.raf, I = N.caf, E = N.transform, L = N.oldIE, f.scrollWrap = e.getChildByClass(a, \"pswp__scroll-wrap\"), f.container = e.getChildByClass(f.scrollWrap, \"pswp__container\"), n = f.container.style, f.itemHolders = y = [{\n                            el: f.container.children[0],\n                            wrap: 0,\n                            index: -1\n                        }, {\n                            el: f.container.children[1],\n                            wrap: 0,\n                            index: -1\n                        }, {\n                            el: f.container.children[2],\n                            wrap: 0,\n                            index: -1\n                        }], y[0].el.style.display = y[2].el.style.display = \"none\", Va(), r = {\n                            resize: f.updateSize,\n                            scroll: Ya,\n                            keydown: Wa,\n                            click: Xa\n                        };\n                        var d = N.isOldIOSPhone || N.isOldAndroid || N.isMobileOpera;\n                        for (N.animationName && N.transform && !d || (i.showAnimationDuration = i.hideAnimationDuration = 0), c = 0; c < va.length; c++) f[\"init\" + va[c]]();\n                        if (b) {\n                            var g = f.ui = new b(f, e);\n                            g.init()\n                        }\n                        Ca(\"firstUpdate\"), m = m || i.index || 0, (isNaN(m) || 0 > m || m >= _b()) && (m = 0), f.currItem = $b(m), (N.isOldIOSPhone || N.isOldAndroid) && (ua = !1), a.setAttribute(\"aria-hidden\", \"false\"), i.modal && (ua ? a.style.position = \"fixed\" : (a.style.position = \"absolute\", a.style.top = e.getScrollY() + \"px\")), void 0 === M && (Ca(\"initialLayout\"), M = K = e.getScrollY());\n                        var l = \"pswp--open \";\n                        for (i.mainClass && (l += i.mainClass + \" \"), i.showHideOpacity && (l += \"pswp--animate_opacity \"), l += G ? \"pswp--touch\" : \"pswp--notouch\", l += N.animationName ? \" pswp--css_animation\" : \"\", l += N.svg ? \" pswp--svg\" : \"\", e.addClass(a, l), f.updateSize(), o = -1, ta = null, c = 0; h > c; c++) Ia((c + o) * sa.x, y[c].el.style);\n                        L || e.bind(f.scrollWrap, q, f), Ba(\"initialZoomInEnd\", function () {\n                            f.setContent(y[0], m - 1), f.setContent(y[2], m + 1), y[0].el.style.display = y[2].el.style.display = \"block\", i.focus && a.focus(), Pa()\n                        }), f.setContent(y[1], m), f.updateCurrItem(), Ca(\"afterInit\"), ua || (w = setInterval(function () {\n                            $a || U || _ || s !== f.currItem.initialZoomLevel || f.updateSize()\n                        }, 1e3)), e.addClass(a, \"pswp--visible\")\n                    }\n                },\n                close: function () {\n                    j && (j = !1, k = !0, Ca(\"close\"), Qa(), bc(f.currItem, null, !0, f.destroy))\n                },\n                destroy: function () {\n                    Ca(\"destroy\"), Wb && clearTimeout(Wb), a.setAttribute(\"aria-hidden\", \"true\"), a.className = J, w && clearInterval(w), e.unbind(f.scrollWrap, q, f), e.unbind(window, \"scroll\", f), yb(), bb(), Aa = null\n                },\n                panTo: function (a, b, c) {\n                    c || (a > ca.min.x ? a = ca.min.x : a < ca.max.x && (a = ca.max.x), b > ca.min.y ? b = ca.min.y : b < ca.max.y && (b = ca.max.y)), oa.x = a, oa.y = b, Ga()\n                },\n                handleEvent: function (a) {\n                    a = a || window.event, r[a.type] && r[a.type](a)\n                },\n                goTo: function (a) {\n                    a = za(a);\n                    var b = a - m;\n                    ta = b, m = a, f.currItem = $b(m), qa -= b, Ja(sa.x * qa), bb(), ea = !1, f.updateCurrItem()\n                },\n                next: function () {\n                    f.goTo(m + 1)\n                },\n                prev: function () {\n                    f.goTo(m - 1)\n                },\n                updateCurrZoomItem: function (a) {\n                    if (a && Ca(\"beforeChange\", 0), y[1].el.children.length) {\n                        var b = y[1].el.children[0];\n                        da = e.hasClass(b, \"pswp__zoom-wrap\") ? b.style : null\n                    } else da = null;\n                    ca = f.currItem.bounds, t = s = f.currItem.initialZoomLevel, oa.x = ca.center.x, oa.y = ca.center.y, a && Ca(\"afterChange\")\n                },\n                invalidateCurrItems: function () {\n                    x = !0;\n                    for (var a = 0; h > a; a++) y[a].item && (y[a].item.needsUpdate = !0)\n                },\n                updateCurrItem: function (a) {\n                    if (0 !== ta) {\n                        var b, c = Math.abs(ta);\n                        if (!(a && 2 > c)) {\n                            f.currItem = $b(m), xa = !1, Ca(\"beforeChange\", ta), c >= h && (o += ta + (ta > 0 ? -h : h), c = h);\n                            for (var d = 0; c > d; d++) ta > 0 ? (b = y.shift(), y[h - 1] = b, o++, Ia((o + 2) * sa.x, b.el.style), f.setContent(b, m - c + d + 1 + 1)) : (b = y.pop(), y.unshift(b), o--, Ia(o * sa.x, b.el.style), f.setContent(b, m + c - d - 1 - 1));\n                            if (da && 1 === Math.abs(ta)) {\n                                var e = $b(z);\n                                e.initialZoomLevel !== s && (hc(e, pa), lc(e), Ha(e))\n                            }\n                            ta = 0, f.updateCurrZoomItem(), z = m, Ca(\"afterChange\")\n                        }\n                    }\n                },\n                updateSize: function (b) {\n                    if (!ua && i.modal) {\n                        var c = e.getScrollY();\n                        if (M !== c && (a.style.top = c + \"px\", M = c), !b && wa.x === window.innerWidth && wa.y === window.innerHeight) return;\n                        wa.x = window.innerWidth, wa.y = window.innerHeight, a.style.height = wa.y + \"px\"\n                    }\n                    if (pa.x = f.scrollWrap.clientWidth, pa.y = f.scrollWrap.clientHeight, Ya(), sa.x = pa.x + Math.round(pa.x * i.spacing), sa.y = pa.y, Ja(sa.x * qa), Ca(\"beforeResize\"), void 0 !== o) {\n                        for (var d, g, j, k = 0; h > k; k++) d = y[k], Ia((k + o) * sa.x, d.el.style), j = m + k - 1, i.loop && _b() > 2 && (j = za(j)), g = $b(j), g && (x || g.needsUpdate || !g.bounds) ? (f.cleanSlide(g), f.setContent(d, j), 1 === k && (f.currItem = g, f.updateCurrZoomItem(!0)), g.needsUpdate = !1) : -1 === d.index && j >= 0 && f.setContent(d, j), g && g.container && (hc(g, pa), lc(g), Ha(g));\n                        x = !1\n                    }\n                    t = s = f.currItem.initialZoomLevel, ca = f.currItem.bounds, ca && (oa.x = ca.center.x, oa.y = ca.center.y, Ga(!0)), Ca(\"resize\")\n                },\n                zoomTo: function (a, b, c, d, f) {\n                    b && (t = s, tb.x = Math.abs(b.x) - oa.x, tb.y = Math.abs(b.y) - oa.y, La(na, oa));\n                    var g = Ra(a, !1),\n                        h = {};\n                    Ua(\"x\", g, h, a), Ua(\"y\", g, h, a);\n                    var i = s,\n                        j = {\n                            x: oa.x,\n                            y: oa.y\n                        };\n                    Ma(h);\n                    var k = function (b) {\n                        1 === b ? (s = a, oa.x = h.x, oa.y = h.y) : (s = (a - i) * b + i, oa.x = (h.x - j.x) * b + j.x, oa.y = (h.y - j.y) * b + j.y), f && f(b), Ga(1 === b)\n                    };\n                    c ? cb(\"customZoomTo\", 0, 1, c, d || e.easing.sine.inOut, k) : k(1)\n                }\n            },\n            eb = 30,\n            fb = 10,\n            gb = {},\n            hb = {},\n            ib = {},\n            jb = {},\n            kb = {},\n            lb = [],\n            mb = {},\n            nb = [],\n            ob = {},\n            pb = 0,\n            qb = la(),\n            rb = 0,\n            sb = la(),\n            tb = la(),\n            ub = la(),\n            vb = function (a, b) {\n                return a.x === b.x && a.y === b.y\n            },\n            wb = function (a, b) {\n                return Math.abs(a.x - b.x) < g && Math.abs(a.y - b.y) < g\n            },\n            xb = function (a, b) {\n                return ob.x = Math.abs(a.x - b.x), ob.y = Math.abs(a.y - b.y), Math.sqrt(ob.x * ob.x + ob.y * ob.y)\n            },\n            yb = function () {\n                Y && (I(Y), Y = null)\n            },\n            zb = function () {\n                U && (Y = H(zb), Pb())\n            },\n            Ab = function () {\n                return !(\"fit\" === i.scaleMode && s === f.currItem.initialZoomLevel)\n            },\n            Bb = function (a, b) {\n                return a && a !== document ? a.getAttribute(\"class\") && a.getAttribute(\"class\").indexOf(\"pswp__scroll-wrap\") > -1 ? !1 : b(a) ? a : Bb(a.parentNode, b) : !1\n            },\n            Cb = {},\n            Db = function (a, b) {\n                return Cb.prevent = !Bb(a.target, i.isClickableElement), Ca(\"preventDragEvent\", a, b, Cb), Cb.prevent\n            },\n            Eb = function (a, b) {\n                return b.x = a.pageX, b.y = a.pageY, b.id = a.identifier, b\n            },\n            Fb = function (a, b, c) {\n                c.x = .5 * (a.x + b.x), c.y = .5 * (a.y + b.y)\n            },\n            Gb = function (a, b, c) {\n                if (a - P > 50) {\n                    var d = nb.length > 2 ? nb.shift() : {};\n                    d.x = b, d.y = c, nb.push(d), P = a\n                }\n            },\n            Hb = function () {\n                var a = oa.y - f.currItem.initialPosition.y;\n                return 1 - Math.abs(a / (pa.y / 2))\n            },\n            Ib = {},\n            Jb = {},\n            Kb = [],\n            Lb = function (a) {\n                for (; Kb.length > 0;) Kb.pop();\n                return F ? (ka = 0, lb.forEach(function (a) {\n                    0 === ka ? Kb[0] = a : 1 === ka && (Kb[1] = a), ka++\n                })) : a.type.indexOf(\"touch\") > -1 ? a.touches && a.touches.length > 0 && (Kb[0] = Eb(a.touches[0], Ib), a.touches.length > 1 && (Kb[1] = Eb(a.touches[1], Jb))) : (Ib.x = a.pageX, Ib.y = a.pageY, Ib.id = \"\", Kb[0] = Ib), Kb\n            },\n            Mb = function (a, b) {\n                var c, d, e, g, h = 0,\n                    j = oa[a] + b[a],\n                    k = b[a] > 0,\n                    l = sb.x + b.x,\n                    m = sb.x - mb.x;\n                return c = j > ca.min[a] || j < ca.max[a] ? i.panEndFriction : 1, j = oa[a] + b[a] * c, !i.allowPanToNext && s !== f.currItem.initialZoomLevel || (da ? \"h\" !== fa || \"x\" !== a || W || (k ? (j > ca.min[a] && (c = i.panEndFriction, h = ca.min[a] - j, d = ca.min[a] - na[a]), (0 >= d || 0 > m) && _b() > 1 ? (g = l, 0 > m && l > mb.x && (g = mb.x)) : ca.min.x !== ca.max.x && (e = j)) : (j < ca.max[a] && (c = i.panEndFriction, h = j - ca.max[a], d = na[a] - ca.max[a]), (0 >= d || m > 0) && _b() > 1 ? (g = l, m > 0 && l < mb.x && (g = mb.x)) : ca.min.x !== ca.max.x && (e = j))) : g = l, \"x\" !== a) ? void(ea || Z || s > f.currItem.fitRatio && (oa[a] += b[a] * c)) : (void 0 !== g && (Ja(g, !0), Z = g === mb.x ? !1 : !0), ca.min.x !== ca.max.x && (void 0 !== e ? oa.x = e : Z || (oa.x += b.x * c)), void 0 !== g)\n            },\n            Nb = function (a) {\n                if (!(\"mousedown\" === a.type && a.button > 0)) {\n                    if (Zb) return void a.preventDefault();\n                    if (!T || \"mousedown\" !== a.type) {\n                        if (Db(a, !0) && a.preventDefault(), Ca(\"pointerDown\"), F) {\n                            var b = e.arraySearch(lb, a.pointerId, \"id\");\n                            0 > b && (b = lb.length), lb[b] = {\n                                x: a.pageX,\n                                y: a.pageY,\n                                id: a.pointerId\n                            }\n                        }\n                        var c = Lb(a),\n                            d = c.length;\n                        $ = null, bb(), U && 1 !== d || (U = ga = !0, e.bind(window, p, f), R = ja = ha = S = Z = X = V = W = !1, fa = null, Ca(\"firstTouchStart\", c), La(na, oa), ma.x = ma.y = 0, La(jb, c[0]), La(kb, jb), mb.x = sa.x * qa, nb = [{\n                            x: jb.x,\n                            y: jb.y\n                        }], P = O = Da(), Ra(s, !0), yb(), zb()), !_ && d > 1 && !ea && !Z && (t = s, W = !1, _ = V = !0, ma.y = ma.x = 0, La(na, oa), La(gb, c[0]), La(hb, c[1]), Fb(gb, hb, ub), tb.x = Math.abs(ub.x) - oa.x, tb.y = Math.abs(ub.y) - oa.y, aa = ba = xb(gb, hb))\n                    }\n                }\n            },\n            Ob = function (a) {\n                if (a.preventDefault(), F) {\n                    var b = e.arraySearch(lb, a.pointerId, \"id\");\n                    if (b > -1) {\n                        var c = lb[b];\n                        c.x = a.pageX, c.y = a.pageY\n                    }\n                }\n                if (U) {\n                    var d = Lb(a);\n                    if (fa || X || _) $ = d;\n                    else if (sb.x !== sa.x * qa) fa = \"h\";\n                    else {\n                        var f = Math.abs(d[0].x - jb.x) - Math.abs(d[0].y - jb.y);\n                        Math.abs(f) >= fb && (fa = f > 0 ? \"h\" : \"v\", $ = d)\n                    }\n                }\n            },\n            Pb = function () {\n                if ($) {\n                    var a = $.length;\n                    if (0 !== a)\n                        if (La(gb, $[0]), ib.x = gb.x - jb.x, ib.y = gb.y - jb.y, _ && a > 1) {\n                            if (jb.x = gb.x, jb.y = gb.y, !ib.x && !ib.y && vb($[1], hb)) return;\n                            La(hb, $[1]), W || (W = !0, Ca(\"zoomGestureStarted\"));\n                            var b = xb(gb, hb),\n                                c = Ub(b);\n                            c > f.currItem.initialZoomLevel + f.currItem.initialZoomLevel / 15 && (ja = !0);\n                            var d = 1,\n                                e = Sa(),\n                                g = Ta();\n                            if (e > c)\n                                if (i.pinchToClose && !ja && t <= f.currItem.initialZoomLevel) {\n                                    var h = e - c,\n                                        j = 1 - h / (e / 1.2);\n                                    Ea(j), Ca(\"onPinchClose\", j), ha = !0\n                                } else d = (e - c) / e, d > 1 && (d = 1), c = e - d * (e / 3);\n                            else c > g && (d = (c - g) / (6 * e), d > 1 && (d = 1), c = g + d * e);\n                            0 > d && (d = 0), aa = b, Fb(gb, hb, qb), ma.x += qb.x - ub.x, ma.y += qb.y - ub.y, La(ub, qb), oa.x = Ka(\"x\", c), oa.y = Ka(\"y\", c), R = c > s, s = c, Ga()\n                        } else {\n                            if (!fa) return;\n                            if (ga && (ga = !1, Math.abs(ib.x) >= fb && (ib.x -= $[0].x - kb.x), Math.abs(ib.y) >= fb && (ib.y -= $[0].y - kb.y)), jb.x = gb.x, jb.y = gb.y, 0 === ib.x && 0 === ib.y) return;\n                            if (\"v\" === fa && i.closeOnVerticalDrag && !Ab()) {\n                                ma.y += ib.y, oa.y += ib.y;\n                                var k = Hb();\n                                return S = !0, Ca(\"onVerticalDrag\", k), Ea(k), void Ga()\n                            }\n                            Gb(Da(), gb.x, gb.y), X = !0, ca = f.currItem.bounds;\n                            var l = Mb(\"x\", ib);\n                            l || (Mb(\"y\", ib), Ma(oa), Ga())\n                        }\n                }\n            },\n            Qb = function (a) {\n                if (N.isOldAndroid) {\n                    if (T && \"mouseup\" === a.type) return;\n                    a.type.indexOf(\"touch\") > -1 && (clearTimeout(T), T = setTimeout(function () {\n                        T = 0\n                    }, 600))\n                }\n                Ca(\"pointerUp\"), Db(a, !1) && a.preventDefault();\n                var b;\n                if (F) {\n                    var c = e.arraySearch(lb, a.pointerId, \"id\");\n                    if (c > -1)\n                        if (b = lb.splice(c, 1)[0], navigator.pointerEnabled) b.type = a.pointerType || \"mouse\";\n                        else {\n                            var d = {\n                                4: \"mouse\",\n                                2: \"touch\",\n                                3: \"pen\"\n                            };\n                            b.type = d[a.pointerType], b.type || (b.type = a.pointerType || \"mouse\")\n                        }\n                }\n                var g, h = Lb(a),\n                    j = h.length;\n                if (\"mouseup\" === a.type && (j = 0), 2 === j) return $ = null, !0;\n                1 === j && La(kb, h[0]), 0 !== j || fa || ea || (b || (\"mouseup\" === a.type ? b = {\n                    x: a.pageX,\n                    y: a.pageY,\n                    type: \"mouse\"\n                } : a.changedTouches && a.changedTouches[0] && (b = {\n                    x: a.changedTouches[0].pageX,\n                    y: a.changedTouches[0].pageY,\n                    type: \"touch\"\n                })), Ca(\"touchRelease\", a, b));\n                var k = -1;\n                if (0 === j && (U = !1, e.unbind(window, p, f), yb(), _ ? k = 0 : -1 !== rb && (k = Da() - rb)), rb = 1 === j ? Da() : -1, g = -1 !== k && 150 > k ? \"zoom\" : \"swipe\", _ && 2 > j && (_ = !1, 1 === j && (g = \"zoomPointerUp\"), Ca(\"zoomGestureEnded\")), $ = null, X || W || ea || S)\n                    if (bb(), Q || (Q = Rb()), Q.calculateSwipeSpeed(\"x\"), S) {\n                        var l = Hb();\n                        if (l < i.verticalDragRange) f.close();\n                        else {\n                            var m = oa.y,\n                                n = ia;\n                            cb(\"verticalDrag\", 0, 1, 300, e.easing.cubic.out, function (a) {\n                                oa.y = (f.currItem.initialPosition.y - m) * a + m, Ea((1 - n) * a + n), Ga()\n                            }), Ca(\"onVerticalDrag\", 1)\n                        }\n                    } else {\n                        if ((Z || ea) && 0 === j) {\n                            var o = Tb(g, Q);\n                            if (o) return;\n                            g = \"zoomPointerUp\"\n                        }\n                        if (!ea) return \"swipe\" !== g ? void Vb() : void(!Z && s > f.currItem.fitRatio && Sb(Q))\n                    }\n            },\n            Rb = function () {\n                var a, b, c = {\n                    lastFlickOffset: {},\n                    lastFlickDist: {},\n                    lastFlickSpeed: {},\n                    slowDownRatio: {},\n                    slowDownRatioReverse: {},\n                    speedDecelerationRatio: {},\n                    speedDecelerationRatioAbs: {},\n                    distanceOffset: {},\n                    backAnimDestination: {},\n                    backAnimStarted: {},\n                    calculateSwipeSpeed: function (d) {\n                        nb.length > 1 ? (a = Da() - P + 50, b = nb[nb.length - 2][d]) : (a = Da() - O, b = kb[d]), c.lastFlickOffset[d] = jb[d] - b, c.lastFlickDist[d] = Math.abs(c.lastFlickOffset[d]), c.lastFlickDist[d] > 20 ? c.lastFlickSpeed[d] = c.lastFlickOffset[d] / a : c.lastFlickSpeed[d] = 0, Math.abs(c.lastFlickSpeed[d]) < .1 && (c.lastFlickSpeed[d] = 0), c.slowDownRatio[d] = .95, c.slowDownRatioReverse[d] = 1 - c.slowDownRatio[d], c.speedDecelerationRatio[d] = 1\n                    },\n                    calculateOverBoundsAnimOffset: function (a, b) {\n                        c.backAnimStarted[a] || (oa[a] > ca.min[a] ? c.backAnimDestination[a] = ca.min[a] : oa[a] < ca.max[a] && (c.backAnimDestination[a] = ca.max[a]), void 0 !== c.backAnimDestination[a] && (c.slowDownRatio[a] = .7, c.slowDownRatioReverse[a] = 1 - c.slowDownRatio[a], c.speedDecelerationRatioAbs[a] < .05 && (c.lastFlickSpeed[a] = 0, c.backAnimStarted[a] = !0, cb(\"bounceZoomPan\" + a, oa[a], c.backAnimDestination[a], b || 300, e.easing.sine.out, function (b) {\n                            oa[a] = b, Ga()\n                        }))))\n                    },\n                    calculateAnimOffset: function (a) {\n                        c.backAnimStarted[a] || (c.speedDecelerationRatio[a] = c.speedDecelerationRatio[a] * (c.slowDownRatio[a] + c.slowDownRatioReverse[a] - c.slowDownRatioReverse[a] * c.timeDiff / 10), c.speedDecelerationRatioAbs[a] = Math.abs(c.lastFlickSpeed[a] * c.speedDecelerationRatio[a]), c.distanceOffset[a] = c.lastFlickSpeed[a] * c.speedDecelerationRatio[a] * c.timeDiff, oa[a] += c.distanceOffset[a])\n                    },\n                    panAnimLoop: function () {\n                        return Za.zoomPan && (Za.zoomPan.raf = H(c.panAnimLoop), c.now = Da(), c.timeDiff = c.now - c.lastNow, c.lastNow = c.now, c.calculateAnimOffset(\"x\"), c.calculateAnimOffset(\"y\"), Ga(), c.calculateOverBoundsAnimOffset(\"x\"), c.calculateOverBoundsAnimOffset(\"y\"), c.speedDecelerationRatioAbs.x < .05 && c.speedDecelerationRatioAbs.y < .05) ? (oa.x = Math.round(oa.x), oa.y = Math.round(oa.y), Ga(), void _a(\"zoomPan\")) : void 0\n                    }\n                };\n                return c\n            },\n            Sb = function (a) {\n                return a.calculateSwipeSpeed(\"y\"), ca = f.currItem.bounds, a.backAnimDestination = {}, a.backAnimStarted = {}, Math.abs(a.lastFlickSpeed.x) <= .05 && Math.abs(a.lastFlickSpeed.y) <= .05 ? (a.speedDecelerationRatioAbs.x = a.speedDecelerationRatioAbs.y = 0, a.calculateOverBoundsAnimOffset(\"x\"), a.calculateOverBoundsAnimOffset(\"y\"), !0) : (ab(\"zoomPan\"), a.lastNow = Da(), void a.panAnimLoop())\n            },\n            Tb = function (a, b) {\n                var c;\n                ea || (pb = m);\n                var d;\n                if (\"swipe\" === a) {\n                    var g = jb.x - kb.x,\n                        h = b.lastFlickDist.x < 10;\n                    g > eb && (h || b.lastFlickOffset.x > 20) ? d = -1 : -eb > g && (h || b.lastFlickOffset.x < -20) && (d = 1)\n                }\n                var j;\n                d && (m += d, 0 > m ? (m = i.loop ? _b() - 1 : 0, j = !0) : m >= _b() && (m = i.loop ? 0 : _b() - 1, j = !0), (!j || i.loop) && (ta += d, qa -= d, c = !0));\n                var k, l = sa.x * qa,\n                    n = Math.abs(l - sb.x);\n                return c || l > sb.x == b.lastFlickSpeed.x > 0 ? (k = Math.abs(b.lastFlickSpeed.x) > 0 ? n / Math.abs(b.lastFlickSpeed.x) : 333, k = Math.min(k, 400), k = Math.max(k, 250)) : k = 333, pb === m && (c = !1), ea = !0, Ca(\"mainScrollAnimStart\"), cb(\"mainScroll\", sb.x, l, k, e.easing.cubic.out, Ja, function () {\n                    bb(), ea = !1, pb = -1, (c || pb !== m) && f.updateCurrItem(), Ca(\"mainScrollAnimComplete\")\n                }), c && f.updateCurrItem(!0), c\n            },\n            Ub = function (a) {\n                return 1 / ba * a * t\n            },\n            Vb = function () {\n                var a = s,\n                    b = Sa(),\n                    c = Ta();\n                b > s ? a = b : s > c && (a = c);\n                var d, g = 1,\n                    h = ia;\n                return ha && !R && !ja && b > s ? (f.close(), !0) : (ha && (d = function (a) {\n                    Ea((g - h) * a + h)\n                }), f.zoomTo(a, 0, 200, e.easing.cubic.out, d), !0)\n            };\n        ya(\"Gestures\", {\n            publicMethods: {\n                initGestures: function () {\n                    var a = function (a, b, c, d, e) {\n                        A = a + b, B = a + c, C = a + d, D = e ? a + e : \"\"\n                    };\n                    F = N.pointerEvent, F && N.touch && (N.touch = !1), F ? navigator.pointerEnabled ? a(\"pointer\", \"down\", \"move\", \"up\", \"cancel\") : a(\"MSPointer\", \"Down\", \"Move\", \"Up\", \"Cancel\") : N.touch ? (a(\"touch\", \"start\", \"move\", \"end\", \"cancel\"), G = !0) : a(\"mouse\", \"down\", \"move\", \"up\"), p = B + \" \" + C + \" \" + D, q = A, F && !G && (G = navigator.maxTouchPoints > 1 || navigator.msMaxTouchPoints > 1), f.likelyTouchDevice = G, r[A] = Nb, r[B] = Ob, r[C] = Qb, D && (r[D] = r[C]), N.touch && (q += \" mousedown\", p += \" mousemove mouseup\", r.mousedown = r[A], r.mousemove = r[B], r.mouseup = r[C]), G || (i.allowPanToNext = !1)\n                }\n            }\n        });\n        var Wb, Xb, Yb, Zb, $b, _b, ac, bc = function (b, c, d, g) {\n                Wb && clearTimeout(Wb), Zb = !0, Yb = !0;\n                var h;\n                b.initialLayout ? (h = b.initialLayout, b.initialLayout = null) : h = i.getThumbBoundsFn && i.getThumbBoundsFn(m);\n                var j = d ? i.hideAnimationDuration : i.showAnimationDuration,\n                    k = function () {\n                        _a(\"initialZoom\"), d ? (f.template.removeAttribute(\"style\"), f.bg.removeAttribute(\"style\")) : (Ea(1), c && (c.style.display = \"block\"), e.addClass(a, \"pswp--animated-in\"), Ca(\"initialZoom\" + (d ? \"OutEnd\" : \"InEnd\"))), g && g(), Zb = !1\n                    };\n                if (!j || !h || void 0 === h.x) return Ca(\"initialZoom\" + (d ? \"Out\" : \"In\")), s = b.initialZoomLevel, La(oa, b.initialPosition), Ga(), a.style.opacity = d ? 0 : 1, Ea(1), void(j ? setTimeout(function () {\n                    k()\n                }, j) : k());\n                var n = function () {\n                    var c = l,\n                        g = !f.currItem.src || f.currItem.loadError || i.showHideOpacity;\n                    b.miniImg && (b.miniImg.style.webkitBackfaceVisibility = \"hidden\"), d || (s = h.w / b.w, oa.x = h.x, oa.y = h.y - K, f[g ? \"template\" : \"bg\"].style.opacity = .001, Ga()), ab(\"initialZoom\"), d && !c && e.removeClass(a, \"pswp--animated-in\"), g && (d ? e[(c ? \"remove\" : \"add\") + \"Class\"](a, \"pswp--animate_opacity\") : setTimeout(function () {\n                        e.addClass(a, \"pswp--animate_opacity\")\n                    }, 30)), Wb = setTimeout(function () {\n                        if (Ca(\"initialZoom\" + (d ? \"Out\" : \"In\")), d) {\n                            var f = h.w / b.w,\n                                i = {\n                                    x: oa.x,\n                                    y: oa.y\n                                },\n                                l = s,\n                                m = ia,\n                                n = function (b) {\n                                    1 === b ? (s = f, oa.x = h.x, oa.y = h.y - M) : (s = (f - l) * b + l, oa.x = (h.x - i.x) * b + i.x, oa.y = (h.y - M - i.y) * b + i.y), Ga(), g ? a.style.opacity = 1 - b : Ea(m - b * m)\n                                };\n                            c ? cb(\"initialZoom\", 0, 1, j, e.easing.cubic.out, n, k) : (n(1), Wb = setTimeout(k, j + 20))\n                        } else s = b.initialZoomLevel, La(oa, b.initialPosition), Ga(), Ea(1), g ? a.style.opacity = 1 : Ea(1), Wb = setTimeout(k, j + 20)\n                    }, d ? 25 : 90)\n                };\n                n()\n            },\n            cc = {},\n            dc = [],\n            ec = {\n                index: 0,\n                errorMsg: '<div class=\"pswp__error-msg\"><a href=\"%url%\" target=\"_blank\">The image</a> could not be loaded.</div>',\n                forceProgressiveLoading: !1,\n                preload: [1, 1],\n                getNumItemsFn: function () {\n                    return Xb.length\n                }\n            },\n            fc = function () {\n                return {\n                    center: {\n                        x: 0,\n                        y: 0\n                    },\n                    max: {\n                        x: 0,\n                        y: 0\n                    },\n                    min: {\n                        x: 0,\n                        y: 0\n                    }\n                }\n            },\n            gc = function (a, b, c) {\n                var d = a.bounds;\n                d.center.x = Math.round((cc.x - b) / 2), d.center.y = Math.round((cc.y - c) / 2) + a.vGap.top, d.max.x = b > cc.x ? Math.round(cc.x - b) : d.center.x, d.max.y = c > cc.y ? Math.round(cc.y - c) + a.vGap.top : d.center.y, d.min.x = b > cc.x ? 0 : d.center.x, d.min.y = c > cc.y ? a.vGap.top : d.center.y\n            },\n            hc = function (a, b, c) {\n                if (a.src && !a.loadError) {\n                    var d = !c;\n                    if (d && (a.vGap || (a.vGap = {\n                            top: 0,\n                            bottom: 0\n                        }), Ca(\"parseVerticalMargin\", a)), cc.x = b.x, cc.y = b.y - a.vGap.top - a.vGap.bottom, d) {\n                        var e = cc.x / a.w,\n                            f = cc.y / a.h;\n                        a.fitRatio = f > e ? e : f;\n                        var g = i.scaleMode;\n                        \"orig\" === g ? c = 1 : \"fit\" === g && (c = a.fitRatio), c > 1 && (c = 1), a.initialZoomLevel = c, a.bounds || (a.bounds = fc())\n                    }\n                    if (!c) return;\n                    return gc(a, a.w * c, a.h * c), d && c === a.initialZoomLevel && (a.initialPosition = a.bounds.center), a.bounds\n                }\n                return a.w = a.h = 0, a.initialZoomLevel = a.fitRatio = 1, a.bounds = fc(), a.initialPosition = a.bounds.center, a.bounds\n            },\n            ic = function (a, b, c, d, e, g) {\n                b.loadError || d && (b.imageAppended = !0, lc(b, d, b === f.currItem && xa), c.appendChild(d), g && setTimeout(function () {\n                    b && b.loaded && b.placeholder && (b.placeholder.style.display = \"none\", b.placeholder = null)\n                }, 500))\n            },\n            jc = function (a) {\n                a.loading = !0, a.loaded = !1;\n                var b = a.img = e.createEl(\"pswp__img\", \"img\"),\n                    c = function () {\n                        a.loading = !1, a.loaded = !0, a.loadComplete ? a.loadComplete(a) : a.img = null, b.onload = b.onerror = null, b = null\n                    };\n                return b.onload = c, b.onerror = function () {\n                    a.loadError = !0, c()\n                }, b.src = a.src, b\n            },\n            kc = function (a, b) {\n                return a.src && a.loadError && a.container ? (b && (a.container.innerHTML = \"\"), a.container.innerHTML = i.errorMsg.replace(\"%url%\", a.src), !0) : void 0\n            },\n            lc = function (a, b, c) {\n                if (a.src) {\n                    b || (b = a.container.lastChild);\n                    var d = c ? a.w : Math.round(a.w * a.fitRatio),\n                        e = c ? a.h : Math.round(a.h * a.fitRatio);\n                    a.placeholder && !a.loaded && (a.placeholder.style.width = d + \"px\", a.placeholder.style.height = e + \"px\"), b.style.width = d + \"px\", b.style.height = e + \"px\"\n                }\n            },\n            mc = function () {\n                if (dc.length) {\n                    for (var a, b = 0; b < dc.length; b++) a = dc[b], a.holder.index === a.index && ic(a.index, a.item, a.baseDiv, a.img, !1, a.clearPlaceholder);\n                    dc = []\n                }\n            };\n        ya(\"Controller\", {\n            publicMethods: {\n                lazyLoadItem: function (a) {\n                    a = za(a);\n                    var b = $b(a);\n                    b && (!b.loaded && !b.loading || x) && (Ca(\"gettingData\", a, b), b.src && jc(b))\n                },\n                initController: function () {\n                    e.extend(i, ec, !0), f.items = Xb = c, $b = f.getItemAt, _b = i.getNumItemsFn, ac = i.loop, _b() < 3 && (i.loop = !1), Ba(\"beforeChange\", function (a) {\n                        var b, c = i.preload,\n                            d = null === a ? !0 : a >= 0,\n                            e = Math.min(c[0], _b()),\n                            g = Math.min(c[1], _b());\n                        for (b = 1;\n                            (d ? g : e) >= b; b++) f.lazyLoadItem(m + b);\n                        for (b = 1;\n                            (d ? e : g) >= b; b++) f.lazyLoadItem(m - b)\n                    }), Ba(\"initialLayout\", function () {\n                        f.currItem.initialLayout = i.getThumbBoundsFn && i.getThumbBoundsFn(m)\n                    }), Ba(\"mainScrollAnimComplete\", mc), Ba(\"initialZoomInEnd\", mc), Ba(\"destroy\", function () {\n                        for (var a, b = 0; b < Xb.length; b++) a = Xb[b], a.container && (a.container = null), a.placeholder && (a.placeholder = null), a.img && (a.img = null), a.preloader && (a.preloader = null), a.loadError && (a.loaded = a.loadError = !1);\n                        dc = null\n                    })\n                },\n                getItemAt: function (a) {\n                    return a >= 0 && void 0 !== Xb[a] ? Xb[a] : !1\n                },\n                allowProgressiveImg: function () {\n                    return i.forceProgressiveLoading || !G || i.mouseUsed || screen.width > 1200\n                },\n                setContent: function (a, b) {\n                    i.loop && (b = za(b));\n                    var c = f.getItemAt(a.index);\n                    c && (c.container = null);\n                    var d, g = f.getItemAt(b);\n                    if (!g) return void(a.el.innerHTML = \"\");\n                    Ca(\"gettingData\", b, g), a.index = b, a.item = g;\n                    var h = g.container = e.createEl(\"pswp__zoom-wrap\");\n                    if (!g.src && g.html && (g.html.tagName ? h.appendChild(g.html) : h.innerHTML = g.html), kc(g), hc(g, pa), !g.src || g.loadError || g.loaded) g.src && !g.loadError && (d = e.createEl(\"pswp__img\", \"img\"), d.style.opacity = 1, d.src = g.src, lc(g, d), ic(b, g, h, d, !0));\n                    else {\n                        if (g.loadComplete = function (c) {\n                                if (j) {\n                                    if (a && a.index === b) {\n                                        if (kc(c, !0)) return c.loadComplete = c.img = null, hc(c, pa), Ha(c), void(a.index === m && f.updateCurrZoomItem());\n                                        c.imageAppended ? !Zb && c.placeholder && (c.placeholder.style.display = \"none\", c.placeholder = null) : N.transform && (ea || Zb) ? dc.push({\n                                            item: c,\n                                            baseDiv: h,\n                                            img: c.img,\n                                            index: b,\n                                            holder: a,\n                                            clearPlaceholder: !0\n                                        }) : ic(b, c, h, c.img, ea || Zb, !0)\n                                    }\n                                    c.loadComplete = null, c.img = null, Ca(\"imageLoadComplete\", b, c)\n                                }\n                            }, e.features.transform) {\n                            var k = \"pswp__img pswp__img--placeholder\";\n                            k += g.msrc ? \"\" : \" pswp__img--placeholder--blank\";\n                            var l = e.createEl(k, g.msrc ? \"img\" : \"\");\n                            g.msrc && (l.src = g.msrc), lc(g, l), h.appendChild(l), g.placeholder = l\n                        }\n                        g.loading || jc(g), f.allowProgressiveImg() && (!Yb && N.transform ? dc.push({\n                            item: g,\n                            baseDiv: h,\n                            img: g.img,\n                            index: b,\n                            holder: a\n                        }) : ic(b, g, h, g.img, !0, !0))\n                    }\n                    Yb || b !== m ? Ha(g) : (da = h.style, bc(g, d || g.img)), a.el.innerHTML = \"\", a.el.appendChild(h)\n                },\n                cleanSlide: function (a) {\n                    a.img && (a.img.onload = a.img.onerror = null), a.loaded = a.loading = a.img = a.imageAppended = !1\n                }\n            }\n        });\n        var nc, oc = {},\n            pc = function (a, b, c) {\n                var d = document.createEvent(\"CustomEvent\"),\n                    e = {\n                        origEvent: a,\n                        target: a.target,\n                        releasePoint: b,\n                        pointerType: c || \"touch\"\n                    };\n                d.initCustomEvent(\"pswpTap\", !0, !0, e), a.target.dispatchEvent(d)\n            };\n        ya(\"Tap\", {\n            publicMethods: {\n                initTap: function () {\n                    Ba(\"firstTouchStart\", f.onTapStart), Ba(\"touchRelease\", f.onTapRelease), Ba(\"destroy\", function () {\n                        oc = {}, nc = null\n                    })\n                },\n                onTapStart: function (a) {\n                    a.length > 1 && (clearTimeout(nc), nc = null)\n                },\n                onTapRelease: function (a, b) {\n                    if (b && !X && !V && !$a) {\n                        var c = b;\n                        if (nc && (clearTimeout(nc), nc = null, wb(c, oc))) return void Ca(\"doubleTap\", c);\n                        if (\"mouse\" === b.type) return void pc(a, b, \"mouse\");\n                        var d = a.target.tagName.toUpperCase();\n                        if (\"BUTTON\" === d || e.hasClass(a.target, \"pswp__single-tap\")) return void pc(a, b);\n                        La(oc, c), nc = setTimeout(function () {\n                            pc(a, b), nc = null\n                        }, 300)\n                    }\n                }\n            }\n        });\n        var qc;\n        ya(\"DesktopZoom\", {\n            publicMethods: {\n                initDesktopZoom: function () {\n                    L || (G ? Ba(\"mouseUsed\", function () {\n                        f.setupDesktopZoom()\n                    }) : f.setupDesktopZoom(!0))\n                },\n                setupDesktopZoom: function (b) {\n                    qc = {};\n                    var c = \"wheel mousewheel DOMMouseScroll\";\n                    Ba(\"bindEvents\", function () {\n                        e.bind(a, c, f.handleMouseWheel)\n                    }), Ba(\"unbindEvents\", function () {\n                        qc && e.unbind(a, c, f.handleMouseWheel)\n                    }), f.mouseZoomedIn = !1;\n                    var d, g = function () {\n                            f.mouseZoomedIn && (e.removeClass(a, \"pswp--zoomed-in\"), f.mouseZoomedIn = !1), 1 > s ? e.addClass(a, \"pswp--zoom-allowed\") : e.removeClass(a, \"pswp--zoom-allowed\"), h()\n                        },\n                        h = function () {\n                            d && (e.removeClass(a, \"pswp--dragging\"), d = !1)\n                        };\n                    Ba(\"resize\", g), Ba(\"afterChange\", g), Ba(\"pointerDown\", function () {\n                        f.mouseZoomedIn && (d = !0, e.addClass(a, \"pswp--dragging\"))\n                    }), Ba(\"pointerUp\", h), b || g()\n                },\n                handleMouseWheel: function (a) {\n                    if (s <= f.currItem.fitRatio) return i.modal && (!i.closeOnScroll || $a || U ? a.preventDefault() : E && Math.abs(a.deltaY) > 2 && (l = !0, f.close())), !0;\n                    if (a.stopPropagation(), qc.x = 0, \"deltaX\" in a) 1 === a.deltaMode ? (qc.x = 18 * a.deltaX, qc.y = 18 * a.deltaY) : (qc.x = a.deltaX, qc.y = a.deltaY);\n                    else if (\"wheelDelta\" in a) a.wheelDeltaX && (qc.x = -.16 * a.wheelDeltaX), a.wheelDeltaY ? qc.y = -.16 * a.wheelDeltaY : qc.y = -.16 * a.wheelDelta;\n                    else {\n                        if (!(\"detail\" in a)) return;\n                        qc.y = a.detail\n                    }\n                    Ra(s, !0);\n                    var b = oa.x - qc.x,\n                        c = oa.y - qc.y;\n                    (i.modal || b <= ca.min.x && b >= ca.max.x && c <= ca.min.y && c >= ca.max.y) && a.preventDefault(), f.panTo(b, c)\n                },\n                toggleDesktopZoom: function (b) {\n                    b = b || {\n                        x: pa.x / 2 + ra.x,\n                        y: pa.y / 2 + ra.y\n                    };\n                    var c = i.getDoubleTapZoom(!0, f.currItem),\n                        d = s === c;\n                    f.mouseZoomedIn = !d, f.zoomTo(d ? f.currItem.initialZoomLevel : c, b, 333), e[(d ? \"remove\" : \"add\") + \"Class\"](a, \"pswp--zoomed-in\")\n                }\n            }\n        });\n        var rc, sc, tc, uc, vc, wc, xc, yc, zc, Ac, Bc, Cc, Dc = {\n                history: !0,\n                galleryUID: 1\n            },\n            Ec = function () {\n                return Bc.hash.substring(1)\n            },\n            Fc = function () {\n                rc && clearTimeout(rc), tc && clearTimeout(tc)\n            },\n            Gc = function () {\n                var a = Ec(),\n                    b = {};\n                if (a.length < 5) return b;\n                var c, d = a.split(\"&\");\n                for (c = 0; c < d.length; c++)\n                    if (d[c]) {\n                        var e = d[c].split(\"=\");\n                        e.length < 2 || (b[e[0]] = e[1])\n                    }\n                if (i.galleryPIDs) {\n                    var f = b.pid;\n                    for (b.pid = 0, c = 0; c < Xb.length; c++)\n                        if (Xb[c].pid === f) {\n                            b.pid = c;\n                            break\n                        }\n                } else b.pid = parseInt(b.pid, 10) - 1;\n                return b.pid < 0 && (b.pid = 0), b\n            },\n            Hc = function () {\n                if (tc && clearTimeout(tc), $a || U) return void(tc = setTimeout(Hc, 500));\n                uc ? clearTimeout(sc) : uc = !0;\n                var a = m + 1,\n                    b = $b(m);\n                b.hasOwnProperty(\"pid\") && (a = b.pid);\n                var c = xc + \"&gid=\" + i.galleryUID + \"&pid=\" + a;\n                yc || -1 === Bc.hash.indexOf(c) && (Ac = !0);\n                var d = Bc.href.split(\"#\")[0] + \"#\" + c;\n                Cc ? \"#\" + c !== window.location.hash && history[yc ? \"replaceState\" : \"pushState\"](\"\", document.title, d) : yc ? Bc.replace(d) : Bc.hash = c, yc = !0, sc = setTimeout(function () {\n                    uc = !1\n                }, 60)\n            };\n        ya(\"History\", {\n            publicMethods: {\n                initHistory: function () {\n                    if (e.extend(i, Dc, !0), i.history) {\n                        Bc = window.location, Ac = !1, zc = !1, yc = !1, xc = Ec(), Cc = \"pushState\" in history, xc.indexOf(\"gid=\") > -1 && (xc = xc.split(\"&gid=\")[0], xc = xc.split(\"?gid=\")[0]), Ba(\"afterChange\", f.updateURL), Ba(\"unbindEvents\", function () {\n                            e.unbind(window, \"hashchange\", f.onHashChange)\n                        });\n                        var a = function () {\n                            wc = !0, zc || (Ac ? history.back() : xc ? Bc.hash = xc : Cc ? history.pushState(\"\", document.title, Bc.pathname + Bc.search) : Bc.hash = \"\"), Fc()\n                        };\n                        Ba(\"unbindEvents\", function () {\n                            l && a()\n                        }), Ba(\"destroy\", function () {\n                            wc || a()\n                        }), Ba(\"firstUpdate\", function () {\n                            m = Gc().pid\n                        });\n                        var b = xc.indexOf(\"pid=\");\n                        b > -1 && (xc = xc.substring(0, b), \"&\" === xc.slice(-1) && (xc = xc.slice(0, -1))), setTimeout(function () {\n                            j && e.bind(window, \"hashchange\", f.onHashChange)\n                        }, 40)\n                    }\n                },\n                onHashChange: function () {\n                    return Ec() === xc ? (zc = !0, void f.close()) : void(uc || (vc = !0, f.goTo(Gc().pid), vc = !1))\n                },\n                updateURL: function () {\n                    Fc(), vc || (yc ? rc = setTimeout(Hc, 800) : Hc())\n                }\n            }\n        }), e.extend(f, db)\n    };\n    return a\n});\n\n/*! PhotoSwipe Default UI - 4.1.1 - 2015-12-24\n * http://photoswipe.com\n * Copyright (c) 2015 Dmitry Semenov; */\n! function (a, b) {\n    \"function\" == typeof define && define.amd ? define(b) : \"object\" == typeof exports ? module.exports = b() : window.PhotoSwipeUI_Default = b()\n}(this, function () {\n    \"use strict\";\n    var a = function (a, b) {\n        var c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v = this,\n            w = !1,\n            x = !0,\n            y = !0,\n            z = {\n                barsSize: {\n                    top: 44,\n                    bottom: \"auto\"\n                },\n                closeElClasses: [\"item\", \"caption\", \"zoom-wrap\", \"ui\", \"top-bar\"],\n                timeToIdle: 4e3,\n                timeToIdleOutside: 1e3,\n                loadingIndicatorDelay: 1e3,\n                addCaptionHTMLFn: function (a, b) {\n                    return a.title ? (b.children[0].innerHTML = a.title, !0) : (b.children[0].innerHTML = \"\", !1)\n                },\n                closeEl: !0,\n                captionEl: !0,\n                fullscreenEl: !0,\n                zoomEl: !0,\n                shareEl: !0,\n                counterEl: !0,\n                arrowEl: !0,\n                preloaderEl: !0,\n                tapToClose: !1,\n                tapToToggleControls: !0,\n                clickToCloseNonZoomable: !0,\n                shareButtons: [{\n                    id: \"facebook\",\n                    label: \"Share on Facebook\",\n                    url: \"https://www.facebook.com/sharer/sharer.php?u={{url}}\"\n                }, {\n                    id: \"twitter\",\n                    label: \"Tweet\",\n                    url: \"https://twitter.com/intent/tweet?text={{text}}&url={{url}}\"\n                }, {\n                    id: \"pinterest\",\n                    label: \"Pin it\",\n                    url: \"http://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}\"\n                }, {\n                    id: \"download\",\n                    label: \"Download image\",\n                    url: \"{{raw_image_url}}\",\n                    download: !0\n                }],\n                getImageURLForShare: function () {\n                    return a.currItem.src || \"\"\n                },\n                getPageURLForShare: function () {\n                    return window.location.href\n                },\n                getTextForShare: function () {\n                    return a.currItem.title || \"\"\n                },\n                indexIndicatorSep: \" / \",\n                fitControlsWidth: 1200\n            },\n            A = function (a) {\n                if (r) return !0;\n                a = a || window.event, q.timeToIdle && q.mouseUsed && !k && K();\n                for (var c, d, e = a.target || a.srcElement, f = e.getAttribute(\"class\") || \"\", g = 0; g < S.length; g++) c = S[g], c.onTap && f.indexOf(\"pswp__\" + c.name) > -1 && (c.onTap(), d = !0);\n                if (d) {\n                    a.stopPropagation && a.stopPropagation(), r = !0;\n                    var h = b.features.isOldAndroid ? 600 : 30;\n                    s = setTimeout(function () {\n                        r = !1\n                    }, h)\n                }\n            },\n            B = function () {\n                return !a.likelyTouchDevice || q.mouseUsed || screen.width > q.fitControlsWidth\n            },\n            C = function (a, c, d) {\n                b[(d ? \"add\" : \"remove\") + \"Class\"](a, \"pswp__\" + c)\n            },\n            D = function () {\n                var a = 1 === q.getNumItemsFn();\n                a !== p && (C(d, \"ui--one-slide\", a), p = a)\n            },\n            E = function () {\n                C(i, \"share-modal--hidden\", y)\n            },\n            F = function () {\n                return y = !y, y ? (b.removeClass(i, \"pswp__share-modal--fade-in\"), setTimeout(function () {\n                    y && E()\n                }, 300)) : (E(), setTimeout(function () {\n                    y || b.addClass(i, \"pswp__share-modal--fade-in\")\n                }, 30)), y || H(), !1\n            },\n            G = function (b) {\n                b = b || window.event;\n                var c = b.target || b.srcElement;\n                return a.shout(\"shareLinkClick\", b, c), c.href ? c.hasAttribute(\"download\") ? !0 : (window.open(c.href, \"pswp_share\", \"scrollbars=yes,resizable=yes,toolbar=no,location=yes,width=550,height=420,top=100,left=\" + (window.screen ? Math.round(screen.width / 2 - 275) : 100)), y || F(), !1) : !1\n            },\n            H = function () {\n                for (var a, b, c, d, e, f = \"\", g = 0; g < q.shareButtons.length; g++) a = q.shareButtons[g], c = q.getImageURLForShare(a), d = q.getPageURLForShare(a), e = q.getTextForShare(a), b = a.url.replace(\"{{url}}\", encodeURIComponent(d)).replace(\"{{image_url}}\", encodeURIComponent(c)).replace(\"{{raw_image_url}}\", c).replace(\"{{text}}\", encodeURIComponent(e)), f += '<a href=\"' + b + '\" target=\"_blank\" class=\"pswp__share--' + a.id + '\"' + (a.download ? \"download\" : \"\") + \">\" + a.label + \"</a>\", q.parseShareButtonOut && (f = q.parseShareButtonOut(a, f));\n                i.children[0].innerHTML = f, i.children[0].onclick = G\n            },\n            I = function (a) {\n                for (var c = 0; c < q.closeElClasses.length; c++)\n                    if (b.hasClass(a, \"pswp__\" + q.closeElClasses[c])) return !0\n            },\n            J = 0,\n            K = function () {\n                clearTimeout(u), J = 0, k && v.setIdle(!1)\n            },\n            L = function (a) {\n                a = a ? a : window.event;\n                var b = a.relatedTarget || a.toElement;\n                b && \"HTML\" !== b.nodeName || (clearTimeout(u), u = setTimeout(function () {\n                    v.setIdle(!0)\n                }, q.timeToIdleOutside))\n            },\n            M = function () {\n                q.fullscreenEl && !b.features.isOldAndroid && (c || (c = v.getFullscreenAPI()), c ? (b.bind(document, c.eventK, v.updateFullscreen), v.updateFullscreen(), b.addClass(a.template, \"pswp--supports-fs\")) : b.removeClass(a.template, \"pswp--supports-fs\"))\n            },\n            N = function () {\n                q.preloaderEl && (O(!0), l(\"beforeChange\", function () {\n                    clearTimeout(o), o = setTimeout(function () {\n                        a.currItem && a.currItem.loading ? (!a.allowProgressiveImg() || a.currItem.img && !a.currItem.img.naturalWidth) && O(!1) : O(!0)\n                    }, q.loadingIndicatorDelay)\n                }), l(\"imageLoadComplete\", function (b, c) {\n                    a.currItem === c && O(!0)\n                }))\n            },\n            O = function (a) {\n                n !== a && (C(m, \"preloader--active\", !a), n = a)\n            },\n            P = function (a) {\n                var c = a.vGap;\n                if (B()) {\n                    var g = q.barsSize;\n                    if (q.captionEl && \"auto\" === g.bottom)\n                        if (f || (f = b.createEl(\"pswp__caption pswp__caption--fake\"), f.appendChild(b.createEl(\"pswp__caption__center\")), d.insertBefore(f, e), b.addClass(d, \"pswp__ui--fit\")), q.addCaptionHTMLFn(a, f, !0)) {\n                            var h = f.clientHeight;\n                            c.bottom = parseInt(h, 10) || 44\n                        } else c.bottom = g.top;\n                    else c.bottom = \"auto\" === g.bottom ? 0 : g.bottom;\n                    c.top = g.top\n                } else c.top = c.bottom = 0\n            },\n            Q = function () {\n                q.timeToIdle && l(\"mouseUsed\", function () {\n                    b.bind(document, \"mousemove\", K), b.bind(document, \"mouseout\", L), t = setInterval(function () {\n                        J++, 2 === J && v.setIdle(!0)\n                    }, q.timeToIdle / 2)\n                })\n            },\n            R = function () {\n                l(\"onVerticalDrag\", function (a) {\n                    x && .95 > a ? v.hideControls() : !x && a >= .95 && v.showControls()\n                });\n                var a;\n                l(\"onPinchClose\", function (b) {\n                    x && .9 > b ? (v.hideControls(), a = !0) : a && !x && b > .9 && v.showControls()\n                }), l(\"zoomGestureEnded\", function () {\n                    a = !1, a && !x && v.showControls()\n                })\n            },\n            S = [{\n                name: \"caption\",\n                option: \"captionEl\",\n                onInit: function (a) {\n                    e = a\n                }\n            }, {\n                name: \"share-modal\",\n                option: \"shareEl\",\n                onInit: function (a) {\n                    i = a\n                },\n                onTap: function () {\n                    F()\n                }\n            }, {\n                name: \"button--share\",\n                option: \"shareEl\",\n                onInit: function (a) {\n                    h = a\n                },\n                onTap: function () {\n                    F()\n                }\n            }, {\n                name: \"button--zoom\",\n                option: \"zoomEl\",\n                onTap: a.toggleDesktopZoom\n            }, {\n                name: \"counter\",\n                option: \"counterEl\",\n                onInit: function (a) {\n                    g = a\n                }\n            }, {\n                name: \"button--close\",\n                option: \"closeEl\",\n                onTap: a.close\n            }, {\n                name: \"button--arrow--left\",\n                option: \"arrowEl\",\n                onTap: a.prev\n            }, {\n                name: \"button--arrow--right\",\n                option: \"arrowEl\",\n                onTap: a.next\n            }, {\n                name: \"button--fs\",\n                option: \"fullscreenEl\",\n                onTap: function () {\n                    c.isFullscreen() ? c.exit() : c.enter()\n                }\n            }, {\n                name: \"preloader\",\n                option: \"preloaderEl\",\n                onInit: function (a) {\n                    m = a\n                }\n            }],\n            T = function () {\n                var a, c, e, f = function (d) {\n                    if (d)\n                        for (var f = d.length, g = 0; f > g; g++) {\n                            a = d[g], c = a.className;\n                            for (var h = 0; h < S.length; h++) e = S[h], c.indexOf(\"pswp__\" + e.name) > -1 && (q[e.option] ? (b.removeClass(a, \"pswp__element--disabled\"), e.onInit && e.onInit(a)) : b.addClass(a, \"pswp__element--disabled\"))\n                        }\n                };\n                f(d.children);\n                var g = b.getChildByClass(d, \"pswp__top-bar\");\n                g && f(g.children)\n            };\n        v.init = function () {\n            b.extend(a.options, z, !0), q = a.options, d = b.getChildByClass(a.scrollWrap, \"pswp__ui\"), l = a.listen, R(), l(\"beforeChange\", v.update), l(\"doubleTap\", function (b) {\n                var c = a.currItem.initialZoomLevel;\n                a.getZoomLevel() !== c ? a.zoomTo(c, b, 333) : a.zoomTo(q.getDoubleTapZoom(!1, a.currItem), b, 333)\n            }), l(\"preventDragEvent\", function (a, b, c) {\n                var d = a.target || a.srcElement;\n                d && d.getAttribute(\"class\") && a.type.indexOf(\"mouse\") > -1 && (d.getAttribute(\"class\").indexOf(\"__caption\") > 0 || /(SMALL|STRONG|EM)/i.test(d.tagName)) && (c.prevent = !1)\n            }), l(\"bindEvents\", function () {\n                b.bind(d, \"pswpTap click\", A), b.bind(a.scrollWrap, \"pswpTap\", v.onGlobalTap), a.likelyTouchDevice || b.bind(a.scrollWrap, \"mouseover\", v.onMouseOver)\n            }), l(\"unbindEvents\", function () {\n                y || F(), t && clearInterval(t), b.unbind(document, \"mouseout\", L), b.unbind(document, \"mousemove\", K), b.unbind(d, \"pswpTap click\", A), b.unbind(a.scrollWrap, \"pswpTap\", v.onGlobalTap), b.unbind(a.scrollWrap, \"mouseover\", v.onMouseOver), c && (b.unbind(document, c.eventK, v.updateFullscreen), c.isFullscreen() && (q.hideAnimationDuration = 0, c.exit()), c = null)\n            }), l(\"destroy\", function () {\n                q.captionEl && (f && d.removeChild(f), b.removeClass(e, \"pswp__caption--empty\")), i && (i.children[0].onclick = null), b.removeClass(d, \"pswp__ui--over-close\"), b.addClass(d, \"pswp__ui--hidden\"), v.setIdle(!1)\n            }), q.showAnimationDuration || b.removeClass(d, \"pswp__ui--hidden\"), l(\"initialZoomIn\", function () {\n                q.showAnimationDuration && b.removeClass(d, \"pswp__ui--hidden\")\n            }), l(\"initialZoomOut\", function () {\n                b.addClass(d, \"pswp__ui--hidden\")\n            }), l(\"parseVerticalMargin\", P), T(), q.shareEl && h && i && (y = !0), D(), Q(), M(), N()\n        }, v.setIdle = function (a) {\n            k = a, C(d, \"ui--idle\", a)\n        }, v.update = function () {\n            x && a.currItem ? (v.updateIndexIndicator(), q.captionEl && (q.addCaptionHTMLFn(a.currItem, e), C(e, \"caption--empty\", !a.currItem.title)), w = !0) : w = !1, y || F(), D()\n        }, v.updateFullscreen = function (d) {\n            d && setTimeout(function () {\n                a.setScrollOffset(0, b.getScrollY())\n            }, 50), b[(c.isFullscreen() ? \"add\" : \"remove\") + \"Class\"](a.template, \"pswp--fs\")\n        }, v.updateIndexIndicator = function () {\n            q.counterEl && (g.innerHTML = a.getCurrentIndex() + 1 + q.indexIndicatorSep + q.getNumItemsFn())\n        }, v.onGlobalTap = function (c) {\n            c = c || window.event;\n            var d = c.target || c.srcElement;\n            if (!r)\n                if (c.detail && \"mouse\" === c.detail.pointerType) {\n                    if (I(d)) return void a.close();\n                    b.hasClass(d, \"pswp__img\") && (1 === a.getZoomLevel() && a.getZoomLevel() <= a.currItem.fitRatio ? q.clickToCloseNonZoomable && a.close() : a.toggleDesktopZoom(c.detail.releasePoint))\n                } else if (q.tapToToggleControls && (x ? v.hideControls() : v.showControls()), q.tapToClose && (b.hasClass(d, \"pswp__img\") || I(d))) return void a.close()\n        }, v.onMouseOver = function (a) {\n            a = a || window.event;\n            var b = a.target || a.srcElement;\n            C(d, \"ui--over-close\", I(b))\n        }, v.hideControls = function () {\n            b.addClass(d, \"pswp__ui--hidden\"), x = !1\n        }, v.showControls = function () {\n            x = !0, w || v.update(), b.removeClass(d, \"pswp__ui--hidden\")\n        }, v.supportsFullscreen = function () {\n            var a = document;\n            return !!(a.exitFullscreen || a.mozCancelFullScreen || a.webkitExitFullscreen || a.msExitFullscreen)\n        }, v.getFullscreenAPI = function () {\n            var b, c = document.documentElement,\n                d = \"fullscreenchange\";\n            return c.requestFullscreen ? b = {\n                enterK: \"requestFullscreen\",\n                exitK: \"exitFullscreen\",\n                elementK: \"fullscreenElement\",\n                eventK: d\n            } : c.mozRequestFullScreen ? b = {\n                enterK: \"mozRequestFullScreen\",\n                exitK: \"mozCancelFullScreen\",\n                elementK: \"mozFullScreenElement\",\n                eventK: \"moz\" + d\n            } : c.webkitRequestFullscreen ? b = {\n                enterK: \"webkitRequestFullscreen\",\n                exitK: \"webkitExitFullscreen\",\n                elementK: \"webkitFullscreenElement\",\n                eventK: \"webkit\" + d\n            } : c.msRequestFullscreen && (b = {\n                enterK: \"msRequestFullscreen\",\n                exitK: \"msExitFullscreen\",\n                elementK: \"msFullscreenElement\",\n                eventK: \"MSFullscreenChange\"\n            }), b && (b.enter = function () {\n                return j = q.closeOnScroll, q.closeOnScroll = !1, \"webkitRequestFullscreen\" !== this.enterK ? a.template[this.enterK]() : void a.template[this.enterK](Element.ALLOW_KEYBOARD_INPUT)\n            }, b.exit = function () {\n                return q.closeOnScroll = j, document[this.exitK]()\n            }, b.isFullscreen = function () {\n                return document[this.elementK]\n            }), b\n        }\n    };\n    return a\n});\n\nvar initPhotoSwipeFromDOM = function (gallerySelector) {\n\n    // parse slide data (url, title, size ...) from DOM elements \n    // (children of gallerySelector)\n    var parseThumbnailElements = function (el) {\n        var thumbElements = el.childNodes,\n            numNodes = thumbElements.length,\n            items = [],\n            figureEl,\n            linkEl,\n            size,\n            item;\n\n        for (var i = 0; i < numNodes; i++) {\n\n            figureEl = thumbElements[i]; // <figure> element\n\n            // include only element nodes \n            if (figureEl.nodeType !== 1) {\n                continue;\n            }\n\n            linkEl = figureEl.children[0]; // <a> element\n\n            size = linkEl.getAttribute('data-size').split('x');\n\n            // create slide object\n            item = {\n                src: linkEl.getAttribute('href'),\n                w: parseInt(size[0], 10),\n                h: parseInt(size[1], 10)\n            };\n\n\n\n            if (figureEl.children.length > 1) {\n                // <figcaption> content\n                item.title = figureEl.children[1].innerHTML;\n            }\n\n            if (linkEl.children.length > 0) {\n                // <img> thumbnail element, retrieving thumbnail url\n                item.msrc = linkEl.children[0].getAttribute('src');\n            }\n\n            item.el = figureEl; // save link to element for getThumbBoundsFn\n            items.push(item);\n        }\n\n        return items;\n    };\n\n    // find nearest parent element\n    var closest = function closest(el, fn) {\n        return el && (fn(el) ? el : closest(el.parentNode, fn));\n    };\n\n    // triggers when user clicks on thumbnail\n    var onThumbnailsClick = function (e) {\n        e = e || window.event;\n        e.preventDefault ? e.preventDefault() : e.returnValue = false;\n\n        var eTarget = e.target || e.srcElement;\n\n        // find root element of slide\n        var clickedListItem = closest(eTarget, function (el) {\n            return (el.tagName && el.tagName.toUpperCase() === 'FIGURE');\n        });\n\n        if (!clickedListItem) {\n            return;\n        }\n\n        // find index of clicked item by looping through all child nodes\n        // alternatively, you may define index via data- attribute\n        var clickedGallery = clickedListItem.parentNode,\n            childNodes = clickedListItem.parentNode.childNodes,\n            numChildNodes = childNodes.length,\n            nodeIndex = 0,\n            index;\n\n        for (var i = 0; i < numChildNodes; i++) {\n            if (childNodes[i].nodeType !== 1) {\n                continue;\n            }\n\n            if (childNodes[i] === clickedListItem) {\n                index = nodeIndex;\n                break;\n            }\n            nodeIndex++;\n        }\n\n\n\n        if (index >= 0) {\n            // open PhotoSwipe if valid index found\n            openPhotoSwipe(index, clickedGallery);\n        }\n        return false;\n    };\n\n    // parse picture index and gallery index from URL (#&pid=1&gid=2)\n    var photoswipeParseHash = function () {\n        var hash = window.location.hash.substring(1),\n            params = {};\n\n        if (hash.length < 5) {\n            return params;\n        }\n\n        var vars = hash.split('&');\n        for (var i = 0; i < vars.length; i++) {\n            if (!vars[i]) {\n                continue;\n            }\n            var pair = vars[i].split('=');\n            if (pair.length < 2) {\n                continue;\n            }\n            params[pair[0]] = pair[1];\n        }\n\n        if (params.gid) {\n            params.gid = parseInt(params.gid, 10);\n        }\n\n        return params;\n    };\n\n    var openPhotoSwipe = function (index, galleryElement, disableAnimation, fromURL) {\n        var pswpElement = document.querySelectorAll('.pswp')[0],\n            gallery,\n            options,\n            items;\n\n        items = parseThumbnailElements(galleryElement);\n\n        // define options (if needed)\n        options = {\n\n            // define gallery index (for URL)\n            galleryUID: galleryElement.getAttribute('data-pswp-uid'),\n\n            getThumbBoundsFn: function (index) {\n                // See Options -> getThumbBoundsFn section of documentation for more info\n                var thumbnail = items[index].el.getElementsByTagName('img')[0], // find thumbnail\n                    pageYScroll = window.pageYOffset || document.documentElement.scrollTop,\n                    rect = thumbnail.getBoundingClientRect();\n\n                return {\n                    x: rect.left,\n                    y: rect.top + pageYScroll,\n                    w: rect.width\n                };\n            }\n\n        };\n\n        // PhotoSwipe opened from URL\n        if (fromURL) {\n            if (options.galleryPIDs) {\n                // parse real index when custom PIDs are used \n                // http://photoswipe.com/documentation/faq.html#custom-pid-in-url\n                for (var j = 0; j < items.length; j++) {\n                    if (items[j].pid == index) {\n                        options.index = j;\n                        break;\n                    }\n                }\n            } else {\n                // in URL indexes start from 1\n                options.index = parseInt(index, 10) - 1;\n            }\n        } else {\n            options.index = parseInt(index, 10);\n        }\n\n        // exit if index not found\n        if (isNaN(options.index)) {\n            return;\n        }\n\n        if (disableAnimation) {\n            options.showAnimationDuration = 0;\n        }\n\n        // Pass data to PhotoSwipe and initialize it\n        gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options);\n        gallery.init();\n    };\n\n    // loop through all gallery elements and bind events\n    var galleryElements = document.querySelectorAll(gallerySelector);\n\n    for (var i = 0, l = galleryElements.length; i < l; i++) {\n        galleryElements[i].setAttribute('data-pswp-uid', i + 1);\n        galleryElements[i].onclick = onThumbnailsClick;\n    }\n\n    // Parse URL and open gallery if it contains #&pid=3&gid=1\n    var hashData = photoswipeParseHash();\n    if (hashData.pid && hashData.gid) {\n        openPhotoSwipe(hashData.pid, galleryElements[hashData.gid - 1], true, true);\n    }\n};\n\n// execute above function\ninitPhotoSwipeFromDOM('.mdb-lightbox');","/*!\n * Date picker for pickadate.js v3.6.3\n * http://amsul.github.io/pickadate.js/date.htm\n */\n\n(function (factory) {\n\n  // AMD.\n  if (typeof define == 'function' && define.amd)\n    define(['picker', 'jquery'], factory)\n\n  // Node.js/browserify.\n  else if (typeof exports == 'object')\n    module.exports = factory(require('./picker.js'), require('jquery'))\n\n  // Browser globals.\n  else factory(Picker, jQuery)\n\n}(function (Picker, $) {\n\n\n  /**\n   * Globals and constants\n   */\n  var DAYS_IN_WEEK = 7,\n    WEEKS_IN_CALENDAR = 6,\n    _ = Picker._\n\n\n\n  /**\n   * The date picker constructor\n   */\n  function DatePicker(picker, settings) {\n\n    var calendar = this,\n      element = picker.$node[0],\n      elementValue = element.value,\n      elementDataValue = picker.$node.data('value'),\n      valueString = elementDataValue || elementValue,\n      formatString = elementDataValue ? settings.formatSubmit : settings.format,\n      isRTL = function () {\n\n        return element.currentStyle ?\n\n          // For IE.\n          element.currentStyle.direction == 'rtl' :\n\n          // For normal browsers.\n          getComputedStyle(picker.$root[0]).direction == 'rtl'\n      }\n\n    calendar.settings = settings\n    calendar.$node = picker.$node\n\n    // The queue of methods that will be used to build item objects.\n    calendar.queue = {\n      min: 'measure create',\n      max: 'measure create',\n      now: 'now create',\n      select: 'parse create validate',\n      highlight: 'parse navigate create validate',\n      view: 'parse create validate viewset',\n      disable: 'deactivate',\n      enable: 'activate'\n    }\n\n    // The component's item object.\n    calendar.item = {}\n\n    calendar.item.clear = null\n    calendar.item.disable = (settings.disable || []).slice(0)\n    calendar.item.enable = -(function (collectionDisabled) {\n      return collectionDisabled[0] === true ? collectionDisabled.shift() : -1\n    })(calendar.item.disable)\n\n    calendar.\n    set('min', settings.min).\n    set('max', settings.max).\n    set('now')\n\n    // When there’s a value, set the `select`, which in turn\n    // also sets the `highlight` and `view`.\n    if (valueString) {\n      calendar.set('select', valueString, {\n        format: formatString,\n        defaultValue: true\n      })\n    }\n\n    // If there’s no value, default to highlighting “today”.\n    else {\n      calendar.\n      set('select', null).\n      set('highlight', calendar.item.now)\n    }\n\n\n    // The keycode to movement mapping.\n    calendar.key = {\n      40: 7, // Down\n      38: -7, // Up\n      39: function () {\n        return isRTL() ? -1 : 1\n      }, // Right\n      37: function () {\n        return isRTL() ? 1 : -1\n      }, // Left\n      go: function (timeChange) {\n        var highlightedObject = calendar.item.highlight,\n          targetDate = new Date(highlightedObject.year, highlightedObject.month, highlightedObject.date + timeChange)\n        calendar.set(\n          'highlight',\n          targetDate, {\n            interval: timeChange\n          }\n        )\n        this.render()\n      }\n    }\n\n\n    // Bind some picker events.\n    picker.\n    on('render', function () {\n      picker.$root.find('.' + settings.klass.selectMonth).on('change', function () {\n        var value = this.value\n        if (value) {\n          picker.set('highlight', [picker.get('view').year, value, picker.get('highlight').date])\n          picker.$root.find('.' + settings.klass.selectMonth).trigger('focus')\n        }\n      })\n      picker.$root.find('.' + settings.klass.selectYear).on('change', function () {\n        var value = this.value\n        if (value) {\n          picker.set('highlight', [value, picker.get('view').month, picker.get('highlight').date])\n          picker.$root.find('.' + settings.klass.selectYear).trigger('focus')\n        }\n      })\n    }, 1).\n    on('open', function () {\n      var includeToday = ''\n      if (calendar.disabled(calendar.get('now'))) {\n        includeToday = ':not(.' + settings.klass.buttonToday + ')'\n      }\n      picker.$root.find('button' + includeToday + ', select').attr('disabled', false)\n    }, 1).\n    on('close', function () {\n      picker.$root.find('button, select').attr('disabled', true)\n    }, 1)\n\n  } //DatePicker\n\n\n  /**\n   * Set a datepicker item object.\n   */\n  DatePicker.prototype.set = function (type, value, options) {\n\n    var calendar = this,\n      calendarItem = calendar.item\n\n    // If the value is `null` just set it immediately.\n    if (value === null) {\n      if (type == 'clear') type = 'select'\n      calendarItem[type] = value\n      return calendar\n    }\n\n    // Otherwise go through the queue of methods, and invoke the functions.\n    // Update this as the time unit, and set the final value as this item.\n    // * In the case of `enable`, keep the queue but set `disable` instead.\n    //   And in the case of `flip`, keep the queue but set `enable` instead.\n    calendarItem[(type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type)] = calendar.queue[type].split(' ').map(function (method) {\n      value = calendar[method](type, value, options)\n      return value\n    }).pop()\n\n    // Check if we need to cascade through more updates.\n    if (type == 'select') {\n      calendar.set('highlight', calendarItem.select, options)\n    } else if (type == 'highlight') {\n      calendar.set('view', calendarItem.highlight, options)\n    } else if (type.match(/^(flip|min|max|disable|enable)$/)) {\n      if (calendarItem.select && calendar.disabled(calendarItem.select)) {\n        calendar.set('select', calendarItem.select, options)\n      }\n      if (calendarItem.highlight && calendar.disabled(calendarItem.highlight)) {\n        calendar.set('highlight', calendarItem.highlight, options)\n      }\n    }\n\n    return calendar\n  } //DatePicker.prototype.set\n\n\n  /**\n   * Get a datepicker item object.\n   */\n  DatePicker.prototype.get = function (type) {\n    return this.item[type]\n  } //DatePicker.prototype.get\n\n\n  /**\n   * Create a picker date object.\n   */\n  DatePicker.prototype.create = function (type, value, options) {\n\n    var isInfiniteValue,\n      calendar = this\n\n    // If there’s no value, use the type as the value.\n    value = value === undefined ? type : value\n\n\n    // If it’s infinity, update the value.\n    if (value == -Infinity || value == Infinity) {\n      isInfiniteValue = value\n    }\n\n    // If it’s an object, use the native date object.\n    else if ($.isPlainObject(value) && _.isInteger(value.pick)) {\n      value = value.obj\n    }\n\n    // If it’s an array, convert it into a date and make sure\n    // that it’s a valid date – otherwise default to today.\n    else if ($.isArray(value)) {\n      value = new Date(value[0], value[1], value[2])\n      value = _.isDate(value) ? value : calendar.create().obj\n    }\n\n    // If it’s a number or date object, make a normalized date.\n    else if (_.isInteger(value) || _.isDate(value)) {\n      value = calendar.normalize(new Date(value), options)\n    }\n\n    // If it’s a literal true or any other case, set it to now.\n    else /*if ( value === true )*/ {\n      value = calendar.now(type, value, options)\n    }\n\n    // Return the compiled object.\n    return {\n      year: isInfiniteValue || value.getFullYear(),\n      month: isInfiniteValue || value.getMonth(),\n      date: isInfiniteValue || value.getDate(),\n      day: isInfiniteValue || value.getDay(),\n      obj: isInfiniteValue || value,\n      pick: isInfiniteValue || value.getTime()\n    }\n  } //DatePicker.prototype.create\n\n\n  /**\n   * Create a range limit object using an array, date object,\n   * literal “true”, or integer relative to another time.\n   */\n  DatePicker.prototype.createRange = function (from, to) {\n\n    var calendar = this,\n      createDate = function (date) {\n        if (date === true || $.isArray(date) || _.isDate(date)) {\n          return calendar.create(date)\n        }\n        return date\n      }\n\n    // Create objects if possible.\n    if (!_.isInteger(from)) {\n      from = createDate(from)\n    }\n    if (!_.isInteger(to)) {\n      to = createDate(to)\n    }\n\n    // Create relative dates.\n    if (_.isInteger(from) && $.isPlainObject(to)) {\n      from = [to.year, to.month, to.date + from];\n    } else if (_.isInteger(to) && $.isPlainObject(from)) {\n      to = [from.year, from.month, from.date + to];\n    }\n\n    return {\n      from: createDate(from),\n      to: createDate(to)\n    }\n  } //DatePicker.prototype.createRange\n\n\n  /**\n   * Check if a date unit falls within a date range object.\n   */\n  DatePicker.prototype.withinRange = function (range, dateUnit) {\n    range = this.createRange(range.from, range.to)\n    return dateUnit.pick >= range.from.pick && dateUnit.pick <= range.to.pick\n  }\n\n\n  /**\n   * Check if two date range objects overlap.\n   */\n  DatePicker.prototype.overlapRanges = function (one, two) {\n\n    var calendar = this\n\n    // Convert the ranges into comparable dates.\n    one = calendar.createRange(one.from, one.to)\n    two = calendar.createRange(two.from, two.to)\n\n    return calendar.withinRange(one, two.from) || calendar.withinRange(one, two.to) ||\n      calendar.withinRange(two, one.from) || calendar.withinRange(two, one.to)\n  }\n\n\n  /**\n   * Get the date today.\n   */\n  DatePicker.prototype.now = function (type, value, options) {\n    value = new Date()\n    if (options && options.rel) {\n      value.setDate(value.getDate() + options.rel)\n    }\n    return this.normalize(value, options)\n  }\n\n\n  /**\n   * Navigate to next/prev month.\n   */\n  DatePicker.prototype.navigate = function (type, value, options) {\n\n    var targetDateObject,\n      targetYear,\n      targetMonth,\n      targetDate,\n      isTargetArray = $.isArray(value),\n      isTargetObject = $.isPlainObject(value),\n      viewsetObject = this.item.view\n    /*,\n          safety = 100*/\n\n\n    if (isTargetArray || isTargetObject) {\n\n      if (isTargetObject) {\n        targetYear = value.year\n        targetMonth = value.month\n        targetDate = value.date\n      } else {\n        targetYear = +value[0]\n        targetMonth = +value[1]\n        targetDate = +value[2]\n      }\n\n      // If we’re navigating months but the view is in a different\n      // month, navigate to the view’s year and month.\n      if (options && options.nav && viewsetObject && viewsetObject.month !== targetMonth) {\n        targetYear = viewsetObject.year\n        targetMonth = viewsetObject.month\n      }\n\n      // Figure out the expected target year and month.\n      targetDateObject = new Date(targetYear, targetMonth + (options && options.nav ? options.nav : 0), 1)\n      targetYear = targetDateObject.getFullYear()\n      targetMonth = targetDateObject.getMonth()\n\n      // If the month we’re going to doesn’t have enough days,\n      // keep decreasing the date until we reach the month’s last date.\n      while ( /*safety &&*/ new Date(targetYear, targetMonth, targetDate).getMonth() !== targetMonth) {\n        targetDate -= 1\n        /*safety -= 1\n        if ( !safety ) {\n            throw 'Fell into an infinite loop while navigating to ' + new Date( targetYear, targetMonth, targetDate ) + '.'\n        }*/\n      }\n\n      value = [targetYear, targetMonth, targetDate]\n    }\n\n    return value\n  } //DatePicker.prototype.navigate\n\n\n  /**\n   * Normalize a date by setting the hours to midnight.\n   */\n  DatePicker.prototype.normalize = function (value /*, options*/ ) {\n    value.setHours(0, 0, 0, 0)\n    return value\n  }\n\n\n  /**\n   * Measure the range of dates.\n   */\n  DatePicker.prototype.measure = function (type, value /*, options*/ ) {\n\n    var calendar = this\n\n    // If it's an integer, get a date relative to today.\n    if (_.isInteger(value)) {\n      value = calendar.now(type, value, {\n        rel: value\n      })\n    }\n\n    // If it’s anything false-y, remove the limits.\n    else if (!value) {\n      value = type == 'min' ? -Infinity : Infinity\n    }\n\n    // If it’s a string, parse it.\n    else if (typeof value == 'string') {\n      value = calendar.parse(type, value)\n    }\n\n    return value\n  } ///DatePicker.prototype.measure\n\n\n  /**\n   * Create a viewset object based on navigation.\n   */\n  DatePicker.prototype.viewset = function (type, dateObject /*, options*/ ) {\n    return this.create([dateObject.year, dateObject.month, 1])\n  }\n\n\n  /**\n   * Validate a date as enabled and shift if needed.\n   */\n  DatePicker.prototype.validate = function (type, dateObject, options) {\n\n    var calendar = this,\n\n      // Keep a reference to the original date.\n      originalDateObject = dateObject,\n\n      // Make sure we have an interval.\n      interval = options && options.interval ? options.interval : 1,\n\n      // Check if the calendar enabled dates are inverted.\n      isFlippedBase = calendar.item.enable === -1,\n\n      // Check if we have any enabled dates after/before now.\n      hasEnabledBeforeTarget, hasEnabledAfterTarget,\n\n      // The min & max limits.\n      minLimitObject = calendar.item.min,\n      maxLimitObject = calendar.item.max,\n\n      // Check if we’ve reached the limit during shifting.\n      reachedMin, reachedMax,\n\n      // Check if the calendar is inverted and at least one weekday is enabled.\n      hasEnabledWeekdays = isFlippedBase && calendar.item.disable.filter(function (value) {\n\n        // If there’s a date, check where it is relative to the target.\n        if ($.isArray(value)) {\n          var dateTime = calendar.create(value).pick\n          if (dateTime < dateObject.pick) hasEnabledBeforeTarget = true\n          else if (dateTime > dateObject.pick) hasEnabledAfterTarget = true\n        }\n\n        // Return only integers for enabled weekdays.\n        return _.isInteger(value)\n      }).length\n    /*,\n\n          safety = 100*/\n\n\n\n    // Cases to validate for:\n    // [1] Not inverted and date disabled.\n    // [2] Inverted and some dates enabled.\n    // [3] Not inverted and out of range.\n    //\n    // Cases to **not** validate for:\n    // • Navigating months.\n    // • Not inverted and date enabled.\n    // • Inverted and all dates disabled.\n    // • ..and anything else.\n    if (!options || (!options.nav && !options.defaultValue))\n      if (\n        /* 1 */\n        (!isFlippedBase && calendar.disabled(dateObject)) ||\n        /* 2 */\n        (isFlippedBase && calendar.disabled(dateObject) && (hasEnabledWeekdays || hasEnabledBeforeTarget || hasEnabledAfterTarget)) ||\n        /* 3 */\n        (!isFlippedBase && (dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick))\n      ) {\n\n\n        // When inverted, flip the direction if there aren’t any enabled weekdays\n        // and there are no enabled dates in the direction of the interval.\n        if (isFlippedBase && !hasEnabledWeekdays && ((!hasEnabledAfterTarget && interval > 0) || (!hasEnabledBeforeTarget && interval < 0))) {\n          interval *= -1\n        }\n\n\n        // Keep looping until we reach an enabled date.\n        while ( /*safety &&*/ calendar.disabled(dateObject)) {\n\n          /*safety -= 1\n          if ( !safety ) {\n              throw 'Fell into an infinite loop while validating ' + dateObject.obj + '.'\n          }*/\n\n\n          // If we’ve looped into the next/prev month with a large interval, return to the original date and flatten the interval.\n          if (Math.abs(interval) > 1 && (dateObject.month < originalDateObject.month || dateObject.month > originalDateObject.month)) {\n            dateObject = originalDateObject\n            interval = interval > 0 ? 1 : -1\n          }\n\n\n          // If we’ve reached the min/max limit, reverse the direction, flatten the interval and set it to the limit.\n          if (dateObject.pick <= minLimitObject.pick) {\n            reachedMin = true\n            interval = 1\n            dateObject = calendar.create([\n              minLimitObject.year,\n              minLimitObject.month,\n              minLimitObject.date + (dateObject.pick === minLimitObject.pick ? 0 : -1)\n            ])\n          } else if (dateObject.pick >= maxLimitObject.pick) {\n            reachedMax = true\n            interval = -1\n            dateObject = calendar.create([\n              maxLimitObject.year,\n              maxLimitObject.month,\n              maxLimitObject.date + (dateObject.pick === maxLimitObject.pick ? 0 : 1)\n            ])\n          }\n\n\n          // If we’ve reached both limits, just break out of the loop.\n          if (reachedMin && reachedMax) {\n            break\n          }\n\n\n          // Finally, create the shifted date using the interval and keep looping.\n          dateObject = calendar.create([dateObject.year, dateObject.month, dateObject.date + interval])\n        }\n\n      } //endif\n\n\n    // Return the date object settled on.\n    return dateObject\n  } //DatePicker.prototype.validate\n\n\n  /**\n   * Check if a date is disabled.\n   */\n  DatePicker.prototype.disabled = function (dateToVerify) {\n\n    var\n      calendar = this,\n\n      // Filter through the disabled dates to check if this is one.\n      isDisabledMatch = calendar.item.disable.filter(function (dateToDisable) {\n\n        // If the date is a number, match the weekday with 0index and `firstDay` check.\n        if (_.isInteger(dateToDisable)) {\n          return dateToVerify.day === (calendar.settings.firstDay ? dateToDisable : dateToDisable - 1) % 7\n        }\n\n        // If it’s an array or a native JS date, create and match the exact date.\n        if ($.isArray(dateToDisable) || _.isDate(dateToDisable)) {\n          return dateToVerify.pick === calendar.create(dateToDisable).pick\n        }\n\n        // If it’s an object, match a date within the “from” and “to” range.\n        if ($.isPlainObject(dateToDisable)) {\n          return calendar.withinRange(dateToDisable, dateToVerify)\n        }\n      })\n\n    // If this date matches a disabled date, confirm it’s not inverted.\n    isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function (dateToDisable) {\n      return $.isArray(dateToDisable) && dateToDisable[3] == 'inverted' ||\n        $.isPlainObject(dateToDisable) && dateToDisable.inverted\n    }).length\n\n    // Check the calendar “enabled” flag and respectively flip the\n    // disabled state. Then also check if it’s beyond the min/max limits.\n    return calendar.item.enable === -1 ? !isDisabledMatch : isDisabledMatch ||\n      dateToVerify.pick < calendar.item.min.pick ||\n      dateToVerify.pick > calendar.item.max.pick\n\n  } //DatePicker.prototype.disabled\n\n\n  /**\n   * Parse a string into a usable type.\n   */\n  DatePicker.prototype.parse = function (type, value, options) {\n\n    var calendar = this,\n      parsingObject = {}\n\n    // If it’s already parsed, we’re good.\n    if (!value || typeof value != 'string') {\n      return value\n    }\n\n    // We need a `.format` to parse the value with.\n    if (!(options && options.format)) {\n      options = options || {}\n      options.format = calendar.settings.format\n    }\n\n    // Convert the format into an array and then map through it.\n    calendar.formats.toArray(options.format).map(function (label) {\n\n      var\n        // Grab the formatting label.\n        formattingLabel = calendar.formats[label],\n\n        // The format length is from the formatting label function or the\n        // label length without the escaping exclamation (!) mark.\n        formatLength = formattingLabel ? _.trigger(formattingLabel, calendar, [value, parsingObject]) : label.replace(/^!/, '').length\n\n      // If there's a format label, split the value up to the format length.\n      // Then add it to the parsing object with appropriate label.\n      if (formattingLabel) {\n        parsingObject[label] = value.substr(0, formatLength)\n      }\n\n      // Update the value as the substring from format length to end.\n      value = value.substr(formatLength)\n    })\n\n    // Compensate for month 0index.\n    return [\n      parsingObject.yyyy || parsingObject.yy,\n      +(parsingObject.mm || parsingObject.m) - 1,\n      parsingObject.dd || parsingObject.d\n    ]\n  } //DatePicker.prototype.parse\n\n\n  /**\n   * Various formats to display the object in.\n   */\n  DatePicker.prototype.formats = (function () {\n\n    // Return the length of the first word in a collection.\n    function getWordLengthFromCollection(string, collection, dateObject) {\n\n      // Grab the first word from the string.\n      // Regex pattern from http://stackoverflow.com/q/150033\n      var word = string.match(/[^\\x00-\\x7F]+|\\w+/)[0]\n\n      // If there's no month index, add it to the date object\n      if (!dateObject.mm && !dateObject.m) {\n        dateObject.m = collection.indexOf(word) + 1\n      }\n\n      // Return the length of the word.\n      return word.length\n    }\n\n    // Get the length of the first word in a string.\n    function getFirstWordLength(string) {\n      return string.match(/\\w+/)[0].length\n    }\n\n    return {\n\n      d: function (string, dateObject) {\n\n        // If there's string, then get the digits length.\n        // Otherwise return the selected date.\n        return string ? _.digits(string) : dateObject.date\n      },\n      dd: function (string, dateObject) {\n\n        // If there's a string, then the length is always 2.\n        // Otherwise return the selected date with a leading zero.\n        return string ? 2 : _.lead(dateObject.date)\n      },\n      ddd: function (string, dateObject) {\n\n        // If there's a string, then get the length of the first word.\n        // Otherwise return the short selected weekday.\n        return string ? getFirstWordLength(string) : this.settings.weekdaysShort[dateObject.day]\n      },\n      dddd: function (string, dateObject) {\n\n        // If there's a string, then get the length of the first word.\n        // Otherwise return the full selected weekday.\n        return string ? getFirstWordLength(string) : this.settings.weekdaysFull[dateObject.day]\n      },\n      m: function (string, dateObject) {\n\n        // If there's a string, then get the length of the digits\n        // Otherwise return the selected month with 0index compensation.\n        return string ? _.digits(string) : dateObject.month + 1\n      },\n      mm: function (string, dateObject) {\n\n        // If there's a string, then the length is always 2.\n        // Otherwise return the selected month with 0index and leading zero.\n        return string ? 2 : _.lead(dateObject.month + 1)\n      },\n      mmm: function (string, dateObject) {\n\n        var collection = this.settings.monthsShort\n\n        // If there's a string, get length of the relevant month from the short\n        // months collection. Otherwise return the selected month from that collection.\n        return string ? getWordLengthFromCollection(string, collection, dateObject) : collection[dateObject.month]\n      },\n      mmmm: function (string, dateObject) {\n\n        var collection = this.settings.monthsFull\n\n        // If there's a string, get length of the relevant month from the full\n        // months collection. Otherwise return the selected month from that collection.\n        return string ? getWordLengthFromCollection(string, collection, dateObject) : collection[dateObject.month]\n      },\n      yy: function (string, dateObject) {\n\n        // If there's a string, then the length is always 2.\n        // Otherwise return the selected year by slicing out the first 2 digits.\n        return string ? 2 : ('' + dateObject.year).slice(2)\n      },\n      yyyy: function (string, dateObject) {\n\n        // If there's a string, then the length is always 4.\n        // Otherwise return the selected year.\n        return string ? 4 : dateObject.year\n      },\n\n      // Create an array by splitting the formatting string passed.\n      toArray: function (formatString) {\n        return formatString.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g)\n      },\n\n      // Format an object into a string using the formatting options.\n      toString: function (formatString, itemObject) {\n        var calendar = this\n        return calendar.formats.toArray(formatString).map(function (label) {\n          return _.trigger(calendar.formats[label], calendar, [0, itemObject]) || label.replace(/^!/, '')\n        }).join('')\n      }\n    }\n  })() //DatePicker.prototype.formats\n\n\n\n\n  /**\n   * Check if two date units are the exact.\n   */\n  DatePicker.prototype.isDateExact = function (one, two) {\n\n    var calendar = this\n\n    // When we’re working with weekdays, do a direct comparison.\n    if (\n      (_.isInteger(one) && _.isInteger(two)) ||\n      (typeof one == 'boolean' && typeof two == 'boolean')\n    ) {\n      return one === two\n    }\n\n    // When we’re working with date representations, compare the “pick” value.\n    if (\n      (_.isDate(one) || $.isArray(one)) &&\n      (_.isDate(two) || $.isArray(two))\n    ) {\n      return calendar.create(one).pick === calendar.create(two).pick\n    }\n\n    // When we’re working with range objects, compare the “from” and “to”.\n    if ($.isPlainObject(one) && $.isPlainObject(two)) {\n      return calendar.isDateExact(one.from, two.from) && calendar.isDateExact(one.to, two.to)\n    }\n\n    return false\n  }\n\n\n  /**\n   * Check if two date units overlap.\n   */\n  DatePicker.prototype.isDateOverlap = function (one, two) {\n\n    var calendar = this,\n      firstDay = calendar.settings.firstDay ? 1 : 0\n\n    // When we’re working with a weekday index, compare the days.\n    if (_.isInteger(one) && (_.isDate(two) || $.isArray(two))) {\n      one = one % 7 + firstDay\n      return one === calendar.create(two).day + 1\n    }\n    if (_.isInteger(two) && (_.isDate(one) || $.isArray(one))) {\n      two = two % 7 + firstDay\n      return two === calendar.create(one).day + 1\n    }\n\n    // When we’re working with range objects, check if the ranges overlap.\n    if ($.isPlainObject(one) && $.isPlainObject(two)) {\n      return calendar.overlapRanges(one, two)\n    }\n\n    return false\n  }\n\n\n  /**\n   * Flip the “enabled” state.\n   */\n  DatePicker.prototype.flipEnable = function (val) {\n    var itemObject = this.item\n    itemObject.enable = val || (itemObject.enable == -1 ? 1 : -1)\n  }\n\n\n  /**\n   * Mark a collection of dates as “disabled”.\n   */\n  DatePicker.prototype.deactivate = function (type, datesToDisable) {\n\n    var calendar = this,\n      disabledItems = calendar.item.disable.slice(0)\n\n\n    // If we’re flipping, that’s all we need to do.\n    if (datesToDisable == 'flip') {\n      calendar.flipEnable()\n    } else if (datesToDisable === false) {\n      calendar.flipEnable(1)\n      disabledItems = []\n    } else if (datesToDisable === true) {\n      calendar.flipEnable(-1)\n      disabledItems = []\n    }\n\n    // Otherwise go through the dates to disable.\n    else {\n\n      datesToDisable.map(function (unitToDisable) {\n\n        var matchFound\n\n        // When we have disabled items, check for matches.\n        // If something is matched, immediately break out.\n        for (var index = 0; index < disabledItems.length; index += 1) {\n          if (calendar.isDateExact(unitToDisable, disabledItems[index])) {\n            matchFound = true\n            break\n          }\n        }\n\n        // If nothing was found, add the validated unit to the collection.\n        if (!matchFound) {\n          if (\n            _.isInteger(unitToDisable) ||\n            _.isDate(unitToDisable) ||\n            $.isArray(unitToDisable) ||\n            ($.isPlainObject(unitToDisable) && unitToDisable.from && unitToDisable.to)\n          ) {\n            disabledItems.push(unitToDisable)\n          }\n        }\n      })\n    }\n\n    // Return the updated collection.\n    return disabledItems\n  } //DatePicker.prototype.deactivate\n\n\n  /**\n   * Mark a collection of dates as “enabled”.\n   */\n  DatePicker.prototype.activate = function (type, datesToEnable) {\n\n    var calendar = this,\n      disabledItems = calendar.item.disable,\n      disabledItemsCount = disabledItems.length\n\n    // If we’re flipping, that’s all we need to do.\n    if (datesToEnable == 'flip') {\n      calendar.flipEnable()\n    } else if (datesToEnable === true) {\n      calendar.flipEnable(1)\n      disabledItems = []\n    } else if (datesToEnable === false) {\n      calendar.flipEnable(-1)\n      disabledItems = []\n    }\n\n    // Otherwise go through the disabled dates.\n    else {\n\n      datesToEnable.map(function (unitToEnable) {\n\n        var matchFound,\n          disabledUnit,\n          index,\n          isExactRange\n\n        // Go through the disabled items and try to find a match.\n        for (index = 0; index < disabledItemsCount; index += 1) {\n\n          disabledUnit = disabledItems[index]\n\n          // When an exact match is found, remove it from the collection.\n          if (calendar.isDateExact(disabledUnit, unitToEnable)) {\n            matchFound = disabledItems[index] = null\n            isExactRange = true\n            break\n          }\n\n          // When an overlapped match is found, add the “inverted” state to it.\n          else if (calendar.isDateOverlap(disabledUnit, unitToEnable)) {\n            if ($.isPlainObject(unitToEnable)) {\n              unitToEnable.inverted = true\n              matchFound = unitToEnable\n            } else if ($.isArray(unitToEnable)) {\n              matchFound = unitToEnable\n              if (!matchFound[3]) matchFound.push('inverted')\n            } else if (_.isDate(unitToEnable)) {\n              matchFound = [unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted']\n            }\n            break\n          }\n        }\n\n        // If a match was found, remove a previous duplicate entry.\n        if (matchFound)\n          for (index = 0; index < disabledItemsCount; index += 1) {\n            if (calendar.isDateExact(disabledItems[index], unitToEnable)) {\n              disabledItems[index] = null\n              break\n            }\n          }\n\n        // In the event that we’re dealing with an exact range of dates,\n        // make sure there are no “inverted” dates because of it.\n        if (isExactRange)\n          for (index = 0; index < disabledItemsCount; index += 1) {\n            if (calendar.isDateOverlap(disabledItems[index], unitToEnable)) {\n              disabledItems[index] = null\n              break\n            }\n          }\n\n        // If something is still matched, add it into the collection.\n        if (matchFound) {\n          disabledItems.push(matchFound)\n        }\n      })\n    }\n\n    // Return the updated collection.\n    return disabledItems.filter(function (val) {\n      return val != null\n    })\n  } //DatePicker.prototype.activate\n\n\n  /**\n   * Create a string for the nodes in the picker.\n   */\n  DatePicker.prototype.nodes = function (isOpen) {\n\n    var\n      calendar = this,\n      settings = calendar.settings,\n      calendarItem = calendar.item,\n      nowObject = calendarItem.now,\n      selectedObject = calendarItem.select,\n      highlightedObject = calendarItem.highlight,\n      viewsetObject = calendarItem.view,\n      disabledCollection = calendarItem.disable,\n      minLimitObject = calendarItem.min,\n      maxLimitObject = calendarItem.max,\n\n\n      // Create the calendar table head using a copy of weekday labels collection.\n      // * We do a copy so we don't mutate the original array.\n      tableHead = (function (collection, fullCollection) {\n\n        // If the first day should be Monday, move Sunday to the end.\n        if (settings.firstDay) {\n          collection.push(collection.shift())\n          fullCollection.push(fullCollection.shift())\n        }\n\n        // Create and return the table head group.\n        return _.node(\n          'thead',\n          _.node(\n            'tr',\n            _.group({\n              min: 0,\n              max: DAYS_IN_WEEK - 1,\n              i: 1,\n              node: 'th',\n              item: function (counter) {\n                return [\n                  collection[counter],\n                  settings.klass.weekdays,\n                  'scope=col title=\"' + fullCollection[counter] + '\"'\n                ]\n              }\n            })\n          )\n        ) //endreturn\n      })((settings.showWeekdaysFull ? settings.weekdaysFull : settings.weekdaysShort).slice(0), settings.weekdaysFull.slice(0)), //tableHead\n\n\n      // Create the nav for next/prev month.\n      createMonthNav = function (next) {\n\n        // Otherwise, return the created month tag.\n        return _.node(\n          'button',\n          ' ',\n          settings.klass['nav' + (next ? 'Next' : 'Prev')] + (\n\n            // If the focused month is outside the range, disabled the button.\n            (next && viewsetObject.year >= maxLimitObject.year && viewsetObject.month >= maxLimitObject.month) ||\n            (!next && viewsetObject.year <= minLimitObject.year && viewsetObject.month <= minLimitObject.month) ?\n            ' ' + settings.klass.navDisabled : ''\n          ),\n          'data-nav=' + (next || -1) + ' ' +\n          _.ariaAttr({\n            role: 'button',\n\n            controls: calendar.$node[0].id + '_table'\n          }) + ' ' +\n          'title=\"' + (next ? settings.labelMonthNext : settings.labelMonthPrev) + '\"'\n        ) //endreturn\n      }, //createMonthNav\n\n\n      // Create the month label.\n      createMonthLabel = function () {\n\n        var monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull\n\n        // If there are months to select, add a dropdown menu.\n        if (settings.selectMonths) {\n\n          return _.node('select',\n            _.group({\n              min: 0,\n              max: 11,\n              i: 1,\n              node: 'option',\n              item: function (loopedMonth) {\n\n                return [\n\n                  // The looped month and no classes.\n                  monthsCollection[loopedMonth], 0,\n\n                  // Set the value and selected index.\n                  'value=' + loopedMonth +\n                  (viewsetObject.month == loopedMonth ? ' selected' : '') +\n                  (\n                    (\n                      (viewsetObject.year == minLimitObject.year && loopedMonth < minLimitObject.month) ||\n                      (viewsetObject.year == maxLimitObject.year && loopedMonth > maxLimitObject.month)\n                    ) ?\n                    ' disabled' : ''\n                  )\n                ]\n              }\n            }),\n            settings.klass.selectMonth,\n            (isOpen ? '' : 'disabled') + ' ' +\n            _.ariaAttr({\n              controls: calendar.$node[0].id + '_table'\n            }) + ' ' +\n            'title=\"' + settings.labelMonthSelect + '\"'\n          )\n        }\n\n        // If there's a need for a month selector\n        return _.node('div', monthsCollection[viewsetObject.month], settings.klass.month)\n      }, //createMonthLabel\n\n\n      // Create the year label.\n      createYearLabel = function () {\n\n        var focusedYear = viewsetObject.year,\n\n          // If years selector is set to a literal \"true\", set it to 5. Otherwise\n          // divide in half to get half before and half after focused year.\n          numberYears = settings.selectYears === true ? 5 : ~~(settings.selectYears / 2)\n\n        // If there are years to select, add a dropdown menu.\n        if (numberYears) {\n\n          var\n            minYear = minLimitObject.year,\n            maxYear = maxLimitObject.year,\n            lowestYear = focusedYear - numberYears,\n            highestYear = focusedYear + numberYears\n\n          // If the min year is greater than the lowest year, increase the highest year\n          // by the difference and set the lowest year to the min year.\n          if (minYear > lowestYear) {\n            highestYear += minYear - lowestYear\n            lowestYear = minYear\n          }\n\n          // If the max year is less than the highest year, decrease the lowest year\n          // by the lower of the two: available and needed years. Then set the\n          // highest year to the max year.\n          if (maxYear < highestYear) {\n\n            var availableYears = lowestYear - minYear,\n              neededYears = highestYear - maxYear\n\n            lowestYear -= availableYears > neededYears ? neededYears : availableYears\n            highestYear = maxYear\n          }\n\n          return _.node('select',\n            _.group({\n              min: lowestYear,\n              max: highestYear,\n              i: 1,\n              node: 'option',\n              item: function (loopedYear) {\n                return [\n\n                  // The looped year and no classes.\n                  loopedYear, 0,\n\n                  // Set the value and selected index.\n                  'value=' + loopedYear + (focusedYear == loopedYear ? ' selected' : '')\n                ]\n              }\n            }),\n            settings.klass.selectYear,\n            (isOpen ? '' : 'disabled') + ' ' + _.ariaAttr({\n              controls: calendar.$node[0].id + '_table'\n            }) + ' ' +\n            'title=\"' + settings.labelYearSelect + '\"'\n          )\n        }\n\n        // Otherwise just return the year focused\n        return _.node('div', focusedYear, settings.klass.year)\n      } //createYearLabel\n\n\n    // Create and return the entire calendar.\n    return _.node(\n        'div',\n        (settings.selectYears ? createYearLabel() + createMonthLabel() : createMonthLabel() + createYearLabel()) +\n        createMonthNav() + createMonthNav(1),\n        settings.klass.header\n      ) + _.node(\n        'table',\n        tableHead +\n        _.node(\n          'tbody',\n          _.group({\n            min: 0,\n            max: WEEKS_IN_CALENDAR - 1,\n            i: 1,\n            node: 'tr',\n            item: function (rowCounter) {\n\n              // If Monday is the first day and the month starts on Sunday, shift the date back a week.\n              var shiftDateBy = settings.firstDay && calendar.create([viewsetObject.year, viewsetObject.month, 1]).day === 0 ? -7 : 0\n\n              return [\n                _.group({\n                  min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, // Add 1 for weekday 0index\n                  max: function () {\n                    return this.min + DAYS_IN_WEEK - 1\n                  },\n                  i: 1,\n                  node: 'td',\n                  item: function (targetDate) {\n\n                    // Convert the time date from a relative date to a target date.\n                    targetDate = calendar.create([viewsetObject.year, viewsetObject.month, targetDate + (settings.firstDay ? 1 : 0)])\n\n                    var isSelected = selectedObject && selectedObject.pick == targetDate.pick,\n                      isHighlighted = highlightedObject && highlightedObject.pick == targetDate.pick,\n                      isDisabled = disabledCollection && calendar.disabled(targetDate) || targetDate.pick < minLimitObject.pick || targetDate.pick > maxLimitObject.pick,\n                      formattedDate = _.trigger(calendar.formats.toString, calendar, [settings.format, targetDate])\n\n                    return [\n                      _.node(\n                        'div',\n                        targetDate.date,\n                        (function (klasses) {\n\n                          // Add the `infocus` or `outfocus` classes based on month in view.\n                          klasses.push(viewsetObject.month == targetDate.month ? settings.klass.infocus : settings.klass.outfocus)\n\n                          // Add the `today` class if needed.\n                          if (nowObject.pick == targetDate.pick) {\n                            klasses.push(settings.klass.now)\n                          }\n\n                          // Add the `selected` class if something's selected and the time matches.\n                          if (isSelected) {\n                            klasses.push(settings.klass.selected)\n                          }\n\n                          // Add the `highlighted` class if something's highlighted and the time matches.\n                          if (isHighlighted) {\n                            klasses.push(settings.klass.highlighted)\n                          }\n\n                          // Add the `disabled` class if something's disabled and the object matches.\n                          if (isDisabled) {\n                            klasses.push(settings.klass.disabled)\n                          }\n\n                          return klasses.join(' ')\n                        })([settings.klass.day]),\n                        'data-pick=' + targetDate.pick + ' ' + _.ariaAttr({\n                          role: 'gridcell',\n                          label: formattedDate,\n                          selected: isSelected && calendar.$node.val() === formattedDate ? true : null,\n                          activedescendant: isHighlighted ? true : null,\n                          disabled: isDisabled ? true : null\n                        })\n                      ),\n                      '',\n                      _.ariaAttr({\n                        role: 'presentation'\n                      })\n                    ] //endreturn\n                  }\n                })\n              ] //endreturn\n            }\n          })\n        ),\n        settings.klass.table,\n        'id=\"' + calendar.$node[0].id + '_table' + '\" ' + _.ariaAttr({\n          role: 'grid',\n          controls: calendar.$node[0].id,\n          readonly: true\n        })\n      ) +\n\n      // * For Firefox forms to submit, make sure to set the buttons’ `type` attributes as “button”.\n      _.node(\n        'div',\n        _.node('button', settings.today, settings.klass.buttonToday,\n          'type=button data-pick=' + nowObject.pick +\n          (isOpen && !calendar.disabled(nowObject) ? '' : ' disabled') + ' ' +\n          _.ariaAttr({\n            controls: calendar.$node[0].id\n          })) +\n        _.node('button', settings.clear, settings.klass.buttonClear,\n          'type=button data-clear=1' +\n          (isOpen ? '' : ' disabled') + ' ' +\n          _.ariaAttr({\n            controls: calendar.$node[0].id\n          })) +\n        _.node('button', settings.close, settings.klass.buttonClose,\n          'type=button data-close=true ' +\n          (isOpen ? '' : ' disabled') + ' ' +\n          _.ariaAttr({\n            controls: calendar.$node[0].id\n          })),\n        settings.klass.footer\n      ) //endreturn\n  } //DatePicker.prototype.nodes\n\n\n\n\n  /**\n   * The date picker defaults.\n   */\n  DatePicker.defaults = (function (prefix) {\n\n    return {\n\n      // The title label to use for the month nav buttons\n      labelMonthNext: 'Next month',\n      labelMonthPrev: 'Previous month',\n\n      // The title label to use for the dropdown selectors\n      labelMonthSelect: 'Select a month',\n      labelYearSelect: 'Select a year',\n\n      // Months and weekdays\n      monthsFull: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n      monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n      weekdaysFull: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n      weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n\n      // Today and clear\n      today: 'Today',\n      clear: 'Clear',\n      close: 'Close',\n\n      // Picker close behavior\n      closeOnSelect: true,\n      closeOnClear: true,\n\n      // Update input value on select/clear\n      updateInput: true,\n\n      // The format to show on the `input` element\n      format: 'd mmmm, yyyy',\n\n      // Classes\n      klass: {\n\n        table: prefix + 'table',\n\n        header: prefix + 'header',\n\n        navPrev: prefix + 'nav--prev btn btn-flat',\n        navNext: prefix + 'nav--next btn btn-flat',\n        navDisabled: prefix + 'nav--disabled',\n\n        month: prefix + 'month',\n        year: prefix + 'year',\n\n        selectMonth: prefix + 'select--month',\n        selectYear: prefix + 'select--year',\n\n        weekdays: prefix + 'weekday',\n\n        day: prefix + 'day',\n        disabled: prefix + 'day--disabled',\n        selected: prefix + 'day--selected',\n        highlighted: prefix + 'day--highlighted',\n        now: prefix + 'day--today',\n        infocus: prefix + 'day--infocus',\n        outfocus: prefix + 'day--outfocus',\n\n        footer: prefix + 'footer',\n\n        buttonClear: prefix + 'button--clear',\n        buttonToday: prefix + 'button--today',\n        buttonClose: prefix + 'button--close'\n      }\n    }\n  })(Picker.klasses().picker + '__')\n\n\n\n\n\n  /**\n   * Extend the picker to add the date picker.\n   */\n  Picker.extend('pickadate', DatePicker)\n\n\n}));\n\n$.extend($.fn.pickadate.defaults, {\n  selectMonths: true, // Creates a dropdown to control month\n  selectYears: 15, // Creates a dropdown of 15 years to control year,\n\n  onRender: function () {\n    var $pickerInstance = this.$root;\n\n    var year = this.get('highlight', 'yyyy');\n    var day = this.get('highlight', 'dd');\n    var month = this.get('highlight', 'mmm');\n    var labeldayFirstThreeLetters = this.get('highlight', 'dddd').slice(0, 3);\n    var monthFirstUC = month.charAt(0).toUpperCase() + month.slice(1)\n\n    $pickerInstance.find('.picker__header').prepend('<div class=\"picker__date-display\"><div class=\"picker__weekday-display\">' + labeldayFirstThreeLetters + ', </div><div class=\"picker__month-display\"><div>' + monthFirstUC + '</div></div><div class=\"picker__day-display\"><div>' + day + '</div></div><div    class=\"picker__year-display\"><div>' + year + '</div></div></div>');\n  }\n});\n\n$('.picker-opener').on('click', function (event) {\n  event.preventDefault();\n  event.stopPropagation();\n\n  const elementOpenData = event.target.dataset.open;\n  const $input = $(`#${elementOpenData}`).pickadate();\n  const picker = $input.pickadate('picker');\n\n  picker.open();\n});","!function($){var apiParams={set:{colors:1,values:1,backgroundColor:1,scaleColors:1,normalizeFunction:1,focus:1},get:{selectedRegions:1,selectedMarkers:1,mapObject:1,regionName:1}};$.fn.vectorMap=function(options){var map,methodName,map=this.children(\".jvectormap-container\").data(\"mapObject\");if(\"addMap\"===options)jvm.Map.maps[arguments[1]]=arguments[2];else{if((\"set\"===options||\"get\"===options)&&apiParams[options][arguments[1]])return methodName=arguments[1].charAt(0).toUpperCase()+arguments[1].substr(1),map[options+methodName].apply(map,Array.prototype.slice.call(arguments,2));options=options||{},options.container=this,map=new jvm.Map(options)}return this}}(jQuery),function(factory){\"function\"==typeof define&&define.amd?define([\"jquery\"],factory):\"object\"==typeof exports?module.exports=factory:factory(jQuery)}(function($){function handler(event){var orgEvent=event||window.event,args=slice.call(arguments,1),delta=0,deltaX=0,deltaY=0,absDelta=0;if(event=$.event.fix(orgEvent),event.type=\"mousewheel\",\"detail\"in orgEvent&&(deltaY=-1*orgEvent.detail),\"wheelDelta\"in orgEvent&&(deltaY=orgEvent.wheelDelta),\"wheelDeltaY\"in orgEvent&&(deltaY=orgEvent.wheelDeltaY),\"wheelDeltaX\"in orgEvent&&(deltaX=-1*orgEvent.wheelDeltaX),\"axis\"in orgEvent&&orgEvent.axis===orgEvent.HORIZONTAL_AXIS&&(deltaX=-1*deltaY,deltaY=0),delta=0===deltaY?deltaX:deltaY,\"deltaY\"in orgEvent&&(deltaY=-1*orgEvent.deltaY,delta=deltaY),\"deltaX\"in orgEvent&&(deltaX=orgEvent.deltaX,0===deltaY&&(delta=-1*deltaX)),0!==deltaY||0!==deltaX){if(1===orgEvent.deltaMode){var lineHeight=$.data(this,\"mousewheel-line-height\");delta*=lineHeight,deltaY*=lineHeight,deltaX*=lineHeight}else if(2===orgEvent.deltaMode){var pageHeight=$.data(this,\"mousewheel-page-height\");delta*=pageHeight,deltaY*=pageHeight,deltaX*=pageHeight}return absDelta=Math.max(Math.abs(deltaY),Math.abs(deltaX)),(!lowestDelta||lowestDelta>absDelta)&&(lowestDelta=absDelta,shouldAdjustOldDeltas(orgEvent,absDelta)&&(lowestDelta/=40)),shouldAdjustOldDeltas(orgEvent,absDelta)&&(delta/=40,deltaX/=40,deltaY/=40),delta=Math[delta>=1?\"floor\":\"ceil\"](delta/lowestDelta),deltaX=Math[deltaX>=1?\"floor\":\"ceil\"](deltaX/lowestDelta),deltaY=Math[deltaY>=1?\"floor\":\"ceil\"](deltaY/lowestDelta),event.deltaX=deltaX,event.deltaY=deltaY,event.deltaFactor=lowestDelta,event.deltaMode=0,args.unshift(event,delta,deltaX,deltaY),nullLowestDeltaTimeout&&clearTimeout(nullLowestDeltaTimeout),nullLowestDeltaTimeout=setTimeout(nullLowestDelta,200),($.event.dispatch||$.event.handle).apply(this,args)}}function nullLowestDelta(){lowestDelta=null}function shouldAdjustOldDeltas(orgEvent,absDelta){return special.settings.adjustOldDeltas&&\"mousewheel\"===orgEvent.type&&absDelta%120===0}var nullLowestDeltaTimeout,lowestDelta,toFix=[\"wheel\",\"mousewheel\",\"DOMMouseScroll\",\"MozMousePixelScroll\"],toBind=\"onwheel\"in document||document.documentMode>=9?[\"wheel\"]:[\"mousewheel\",\"DomMouseScroll\",\"MozMousePixelScroll\"],slice=Array.prototype.slice;if($.event.fixHooks)for(var i=toFix.length;i;)$.event.fixHooks[toFix[--i]]=$.event.mouseHooks;var special=$.event.special.mousewheel={version:\"3.1.9\",setup:function(){if(this.addEventListener)for(var i=toBind.length;i;)this.addEventListener(toBind[--i],handler,!1);else this.onmousewheel=handler;$.data(this,\"mousewheel-line-height\",special.getLineHeight(this)),$.data(this,\"mousewheel-page-height\",special.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var i=toBind.length;i;)this.removeEventListener(toBind[--i],handler,!1);else this.onmousewheel=null},getLineHeight:function(elem){return parseInt($(elem)[\"offsetParent\"in $.fn?\"offsetParent\":\"parent\"]().css(\"fontSize\"),10)},getPageHeight:function(elem){return $(elem).height()},settings:{adjustOldDeltas:!0}};$.fn.extend({mousewheel:function(fn){return fn?this.bind(\"mousewheel\",fn):this.trigger(\"mousewheel\")},unmousewheel:function(fn){return this.unbind(\"mousewheel\",fn)}})});var jvm={inherits:function(child,parent){function temp(){}temp.prototype=parent.prototype,child.prototype=new temp,child.prototype.constructor=child,child.parentClass=parent},mixin:function(target,source){var prop;for(prop in source.prototype)source.prototype.hasOwnProperty(prop)&&(target.prototype[prop]=source.prototype[prop])},min:function(values){var i,min=Number.MAX_VALUE;if(values instanceof Array)for(i=0;i<values.length;i++)values[i]<min&&(min=values[i]);else for(i in values)values[i]<min&&(min=values[i]);return min},max:function(values){var i,max=Number.MIN_VALUE;if(values instanceof Array)for(i=0;i<values.length;i++)values[i]>max&&(max=values[i]);else for(i in values)values[i]>max&&(max=values[i]);return max},keys:function(object){var key,keys=[];for(key in object)keys.push(key);return keys},values:function(object){var key,i,values=[];for(i=0;i<arguments.length;i++){object=arguments[i];for(key in object)values.push(object[key])}return values},whenImageLoaded:function(url){var deferred=new jvm.$.Deferred,img=jvm.$(\"<img/>\");return img.error(function(){deferred.reject()}).load(function(){deferred.resolve(img)}),img.attr(\"src\",url),deferred},isImageUrl:function(s){return/\\.\\w{3,4}$/.test(s)}};jvm.$=jQuery,Array.prototype.indexOf||(Array.prototype.indexOf=function(searchElement,fromIndex){var k;if(null==this)throw new TypeError('\"this\" is null or not defined');var O=Object(this),len=O.length>>>0;if(0===len)return-1;var n=+fromIndex||0;if(1/0===Math.abs(n)&&(n=0),n>=len)return-1;for(k=Math.max(n>=0?n:len-Math.abs(n),0);len>k;){if(k in O&&O[k]===searchElement)return k;k++}return-1}),jvm.AbstractElement=function(name,config){this.node=this.createElement(name),this.name=name,this.properties={},config&&this.set(config)},jvm.AbstractElement.prototype.set=function(property,value){var key;if(\"object\"==typeof property)for(key in property)this.properties[key]=property[key],this.applyAttr(key,property[key]);else this.properties[property]=value,this.applyAttr(property,value)},jvm.AbstractElement.prototype.get=function(property){return this.properties[property]},jvm.AbstractElement.prototype.applyAttr=function(property,value){this.node.setAttribute(property,value)},jvm.AbstractElement.prototype.remove=function(){jvm.$(this.node).remove()},jvm.AbstractCanvasElement=function(container,width,height){this.container=container,this.setSize(width,height),this.rootElement=new jvm[this.classPrefix+\"GroupElement\"],this.node.appendChild(this.rootElement.node),this.container.appendChild(this.node)},jvm.AbstractCanvasElement.prototype.add=function(element,group){group=group||this.rootElement,group.add(element),element.canvas=this},jvm.AbstractCanvasElement.prototype.addPath=function(config,style,group){var el=new jvm[this.classPrefix+\"PathElement\"](config,style);return this.add(el,group),el},jvm.AbstractCanvasElement.prototype.addCircle=function(config,style,group){var el=new jvm[this.classPrefix+\"CircleElement\"](config,style);return this.add(el,group),el},jvm.AbstractCanvasElement.prototype.addImage=function(config,style,group){var el=new jvm[this.classPrefix+\"ImageElement\"](config,style);return this.add(el,group),el},jvm.AbstractCanvasElement.prototype.addText=function(config,style,group){var el=new jvm[this.classPrefix+\"TextElement\"](config,style);return this.add(el,group),el},jvm.AbstractCanvasElement.prototype.addGroup=function(parentGroup){var el=new jvm[this.classPrefix+\"GroupElement\"];return parentGroup?parentGroup.node.appendChild(el.node):this.node.appendChild(el.node),el.canvas=this,el},jvm.AbstractShapeElement=function(name,config,style){this.style=style||{},this.style.current=this.style.current||{},this.isHovered=!1,this.isSelected=!1,this.updateStyle()},jvm.AbstractShapeElement.prototype.setStyle=function(property,value){var styles={};\"object\"==typeof property?styles=property:styles[property]=value,jvm.$.extend(this.style.current,styles),this.updateStyle()},jvm.AbstractShapeElement.prototype.updateStyle=function(){var attrs={};jvm.AbstractShapeElement.mergeStyles(attrs,this.style.initial),jvm.AbstractShapeElement.mergeStyles(attrs,this.style.current),this.isHovered&&jvm.AbstractShapeElement.mergeStyles(attrs,this.style.hover),this.isSelected&&(jvm.AbstractShapeElement.mergeStyles(attrs,this.style.selected),this.isHovered&&jvm.AbstractShapeElement.mergeStyles(attrs,this.style.selectedHover)),this.set(attrs)},jvm.AbstractShapeElement.mergeStyles=function(styles,newStyles){var key;newStyles=newStyles||{};for(key in newStyles)null===newStyles[key]?delete styles[key]:styles[key]=newStyles[key]},jvm.SVGElement=function(){jvm.SVGElement.parentClass.apply(this,arguments)},jvm.inherits(jvm.SVGElement,jvm.AbstractElement),jvm.SVGElement.svgns=\"http://www.w3.org/2000/svg\",jvm.SVGElement.prototype.createElement=function(tagName){return document.createElementNS(jvm.SVGElement.svgns,tagName)},jvm.SVGElement.prototype.addClass=function(className){this.node.setAttribute(\"class\",className)},jvm.SVGElement.prototype.getElementCtr=function(ctr){return jvm[\"SVG\"+ctr]},jvm.SVGElement.prototype.getBBox=function(){return this.node.getBBox()},jvm.SVGGroupElement=function(){jvm.SVGGroupElement.parentClass.call(this,\"g\")},jvm.inherits(jvm.SVGGroupElement,jvm.SVGElement),jvm.SVGGroupElement.prototype.add=function(element){this.node.appendChild(element.node)},jvm.SVGCanvasElement=function(){this.classPrefix=\"SVG\",jvm.SVGCanvasElement.parentClass.call(this,\"svg\"),this.defsElement=new jvm.SVGElement(\"defs\"),this.node.appendChild(this.defsElement.node),jvm.AbstractCanvasElement.apply(this,arguments)},jvm.inherits(jvm.SVGCanvasElement,jvm.SVGElement),jvm.mixin(jvm.SVGCanvasElement,jvm.AbstractCanvasElement),jvm.SVGCanvasElement.prototype.setSize=function(width,height){this.width=width,this.height=height,this.node.setAttribute(\"width\",width),this.node.setAttribute(\"height\",height)},jvm.SVGCanvasElement.prototype.applyTransformParams=function(scale,transX,transY){this.scale=scale,this.transX=transX,this.transY=transY,this.rootElement.node.setAttribute(\"transform\",\"scale(\"+scale+\") translate(\"+transX+\", \"+transY+\")\")},jvm.SVGShapeElement=function(name,config){jvm.SVGShapeElement.parentClass.call(this,name,config),jvm.AbstractShapeElement.apply(this,arguments)},jvm.inherits(jvm.SVGShapeElement,jvm.SVGElement),jvm.mixin(jvm.SVGShapeElement,jvm.AbstractShapeElement),jvm.SVGShapeElement.prototype.applyAttr=function(attr,value){var patternEl,imageEl,that=this;\"fill\"===attr&&jvm.isImageUrl(value)?jvm.SVGShapeElement.images[value]?this.applyAttr(\"fill\",\"url(#image\"+jvm.SVGShapeElement.images[value]+\")\"):jvm.whenImageLoaded(value).then(function(img){imageEl=new jvm.SVGElement(\"image\"),imageEl.node.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",value),imageEl.applyAttr(\"x\",\"0\"),imageEl.applyAttr(\"y\",\"0\"),imageEl.applyAttr(\"width\",img[0].width),imageEl.applyAttr(\"height\",img[0].height),patternEl=new jvm.SVGElement(\"pattern\"),patternEl.applyAttr(\"id\",\"image\"+jvm.SVGShapeElement.imageCounter),patternEl.applyAttr(\"x\",0),patternEl.applyAttr(\"y\",0),patternEl.applyAttr(\"width\",img[0].width/2),patternEl.applyAttr(\"height\",img[0].height/2),patternEl.applyAttr(\"viewBox\",\"0 0 \"+img[0].width+\" \"+img[0].height),patternEl.applyAttr(\"patternUnits\",\"userSpaceOnUse\"),patternEl.node.appendChild(imageEl.node),that.canvas.defsElement.node.appendChild(patternEl.node),jvm.SVGShapeElement.images[value]=jvm.SVGShapeElement.imageCounter++,that.applyAttr(\"fill\",\"url(#image\"+jvm.SVGShapeElement.images[value]+\")\")}):jvm.SVGShapeElement.parentClass.prototype.applyAttr.apply(this,arguments)},jvm.SVGShapeElement.imageCounter=1,jvm.SVGShapeElement.images={},jvm.SVGPathElement=function(config,style){jvm.SVGPathElement.parentClass.call(this,\"path\",config,style),this.node.setAttribute(\"fill-rule\",\"evenodd\")},jvm.inherits(jvm.SVGPathElement,jvm.SVGShapeElement),jvm.SVGCircleElement=function(config,style){jvm.SVGCircleElement.parentClass.call(this,\"circle\",config,style)},jvm.inherits(jvm.SVGCircleElement,jvm.SVGShapeElement),jvm.SVGImageElement=function(config,style){jvm.SVGImageElement.parentClass.call(this,\"image\",config,style)},jvm.inherits(jvm.SVGImageElement,jvm.SVGShapeElement),jvm.SVGImageElement.prototype.applyAttr=function(attr,value){var that=this;\"image\"==attr?jvm.whenImageLoaded(value).then(function(img){that.node.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",value),that.width=img[0].width,that.height=img[0].height,that.applyAttr(\"width\",that.width),that.applyAttr(\"height\",that.height),that.applyAttr(\"x\",that.cx-that.width/2),that.applyAttr(\"y\",that.cy-that.height/2),jvm.$(that.node).trigger(\"imageloaded\",[img])}):\"cx\"==attr?(this.cx=value,this.width&&this.applyAttr(\"x\",value-this.width/2)):\"cy\"==attr?(this.cy=value,this.height&&this.applyAttr(\"y\",value-this.height/2)):jvm.SVGImageElement.parentClass.prototype.applyAttr.apply(this,arguments)},jvm.SVGTextElement=function(config,style){jvm.SVGTextElement.parentClass.call(this,\"text\",config,style)},jvm.inherits(jvm.SVGTextElement,jvm.SVGShapeElement),jvm.SVGTextElement.prototype.applyAttr=function(attr,value){\"text\"===attr?this.node.textContent=value:jvm.SVGTextElement.parentClass.prototype.applyAttr.apply(this,arguments)},jvm.VMLElement=function(){jvm.VMLElement.VMLInitialized||jvm.VMLElement.initializeVML(),jvm.VMLElement.parentClass.apply(this,arguments)},jvm.inherits(jvm.VMLElement,jvm.AbstractElement),jvm.VMLElement.VMLInitialized=!1,jvm.VMLElement.initializeVML=function(){try{document.namespaces.rvml||document.namespaces.add(\"rvml\",\"urn:schemas-microsoft-com:vml\"),jvm.VMLElement.prototype.createElement=function(tagName){return document.createElement(\"<rvml:\"+tagName+' class=\"rvml\">')}}catch(e){jvm.VMLElement.prototype.createElement=function(tagName){return document.createElement(\"<\"+tagName+' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"rvml\">')}}document.createStyleSheet().addRule(\".rvml\",\"behavior:url(#default#VML)\"),jvm.VMLElement.VMLInitialized=!0},jvm.VMLElement.prototype.getElementCtr=function(ctr){return jvm[\"VML\"+ctr]},jvm.VMLElement.prototype.addClass=function(className){jvm.$(this.node).addClass(className)},jvm.VMLElement.prototype.applyAttr=function(attr,value){this.node[attr]=value},jvm.VMLElement.prototype.getBBox=function(){var node=jvm.$(this.node);return{x:node.position().left/this.canvas.scale,y:node.position().top/this.canvas.scale,width:node.width()/this.canvas.scale,height:node.height()/this.canvas.scale}},jvm.VMLGroupElement=function(){jvm.VMLGroupElement.parentClass.call(this,\"group\"),this.node.style.left=\"0px\",this.node.style.top=\"0px\",this.node.coordorigin=\"0 0\"},jvm.inherits(jvm.VMLGroupElement,jvm.VMLElement),jvm.VMLGroupElement.prototype.add=function(element){this.node.appendChild(element.node)},jvm.VMLCanvasElement=function(){this.classPrefix=\"VML\",jvm.VMLCanvasElement.parentClass.call(this,\"group\"),jvm.AbstractCanvasElement.apply(this,arguments),this.node.style.position=\"absolute\"},jvm.inherits(jvm.VMLCanvasElement,jvm.VMLElement),jvm.mixin(jvm.VMLCanvasElement,jvm.AbstractCanvasElement),jvm.VMLCanvasElement.prototype.setSize=function(width,height){var paths,groups,i,l;if(this.width=width,this.height=height,this.node.style.width=width+\"px\",this.node.style.height=height+\"px\",this.node.coordsize=width+\" \"+height,this.node.coordorigin=\"0 0\",this.rootElement){for(paths=this.rootElement.node.getElementsByTagName(\"shape\"),i=0,l=paths.length;l>i;i++)paths[i].coordsize=width+\" \"+height,paths[i].style.width=width+\"px\",paths[i].style.height=height+\"px\";for(groups=this.node.getElementsByTagName(\"group\"),i=0,l=groups.length;l>i;i++)groups[i].coordsize=width+\" \"+height,groups[i].style.width=width+\"px\",groups[i].style.height=height+\"px\"}},jvm.VMLCanvasElement.prototype.applyTransformParams=function(scale,transX,transY){this.scale=scale,this.transX=transX,this.transY=transY,this.rootElement.node.coordorigin=this.width-transX-this.width/100+\",\"+(this.height-transY-this.height/100),this.rootElement.node.coordsize=this.width/scale+\",\"+this.height/scale},jvm.VMLShapeElement=function(name,config){jvm.VMLShapeElement.parentClass.call(this,name,config),this.fillElement=new jvm.VMLElement(\"fill\"),this.strokeElement=new jvm.VMLElement(\"stroke\"),this.node.appendChild(this.fillElement.node),this.node.appendChild(this.strokeElement.node),this.node.stroked=!1,jvm.AbstractShapeElement.apply(this,arguments)},jvm.inherits(jvm.VMLShapeElement,jvm.VMLElement),jvm.mixin(jvm.VMLShapeElement,jvm.AbstractShapeElement),jvm.VMLShapeElement.prototype.applyAttr=function(attr,value){switch(attr){case\"fill\":this.node.fillcolor=value;break;case\"fill-opacity\":this.fillElement.node.opacity=Math.round(100*value)+\"%\";break;case\"stroke\":this.node.stroked=\"none\"===value?!1:!0,this.node.strokecolor=value;break;case\"stroke-opacity\":this.strokeElement.node.opacity=Math.round(100*value)+\"%\";break;case\"stroke-width\":this.node.stroked=0===parseInt(value,10)?!1:!0,this.node.strokeweight=value;break;case\"d\":this.node.path=jvm.VMLPathElement.pathSvgToVml(value);break;default:jvm.VMLShapeElement.parentClass.prototype.applyAttr.apply(this,arguments)}},jvm.VMLPathElement=function(config,style){var scale=new jvm.VMLElement(\"skew\");jvm.VMLPathElement.parentClass.call(this,\"shape\",config,style),this.node.coordorigin=\"0 0\",scale.node.on=!0,scale.node.matrix=\"0.01,0,0,0.01,0,0\",scale.node.offset=\"0,0\",this.node.appendChild(scale.node)},jvm.inherits(jvm.VMLPathElement,jvm.VMLShapeElement),jvm.VMLPathElement.prototype.applyAttr=function(attr,value){\"d\"===attr?this.node.path=jvm.VMLPathElement.pathSvgToVml(value):jvm.VMLShapeElement.prototype.applyAttr.call(this,attr,value)},jvm.VMLPathElement.pathSvgToVml=function(path){var ctrlx,ctrly,cx=0,cy=0;return path=path.replace(/(-?\\d+)e(-?\\d+)/g,\"0\"),path.replace(/([MmLlHhVvCcSs])\\s*((?:-?\\d*(?:\\.\\d+)?\\s*,?\\s*)+)/g,function(segment,letter,coords){coords=coords.replace(/(\\d)-/g,\"$1,-\").replace(/^\\s+/g,\"\").replace(/\\s+$/g,\"\").replace(/\\s+/g,\",\").split(\",\"),coords[0]||coords.shift();for(var i=0,l=coords.length;l>i;i++)coords[i]=Math.round(100*coords[i]);switch(letter){case\"m\":return cx+=coords[0],cy+=coords[1],\"t\"+coords.join(\",\");case\"M\":return cx=coords[0],cy=coords[1],\"m\"+coords.join(\",\");case\"l\":return cx+=coords[0],cy+=coords[1],\"r\"+coords.join(\",\");case\"L\":return cx=coords[0],cy=coords[1],\"l\"+coords.join(\",\");case\"h\":return cx+=coords[0],\"r\"+coords[0]+\",0\";case\"H\":return cx=coords[0],\"l\"+cx+\",\"+cy;case\"v\":return cy+=coords[0],\"r0,\"+coords[0];case\"V\":return cy=coords[0],\"l\"+cx+\",\"+cy;case\"c\":return ctrlx=cx+coords[coords.length-4],ctrly=cy+coords[coords.length-3],cx+=coords[coords.length-2],cy+=coords[coords.length-1],\"v\"+coords.join(\",\");case\"C\":return ctrlx=coords[coords.length-4],ctrly=coords[coords.length-3],cx=coords[coords.length-2],cy=coords[coords.length-1],\"c\"+coords.join(\",\");case\"s\":return coords.unshift(cy-ctrly),coords.unshift(cx-ctrlx),ctrlx=cx+coords[coords.length-4],ctrly=cy+coords[coords.length-3],cx+=coords[coords.length-2],cy+=coords[coords.length-1],\"v\"+coords.join(\",\");case\"S\":return coords.unshift(cy+cy-ctrly),coords.unshift(cx+cx-ctrlx),ctrlx=coords[coords.length-4],ctrly=coords[coords.length-3],cx=coords[coords.length-2],cy=coords[coords.length-1],\"c\"+coords.join(\",\")}return\"\"}).replace(/z/g,\"e\")},jvm.VMLCircleElement=function(config,style){jvm.VMLCircleElement.parentClass.call(this,\"oval\",config,style)},jvm.inherits(jvm.VMLCircleElement,jvm.VMLShapeElement),jvm.VMLCircleElement.prototype.applyAttr=function(attr,value){switch(attr){case\"r\":this.node.style.width=2*value+\"px\",this.node.style.height=2*value+\"px\",this.applyAttr(\"cx\",this.get(\"cx\")||0),this.applyAttr(\"cy\",this.get(\"cy\")||0);break;case\"cx\":if(!value)return;this.node.style.left=value-(this.get(\"r\")||0)+\"px\";break;case\"cy\":if(!value)return;this.node.style.top=value-(this.get(\"r\")||0)+\"px\";break;default:jvm.VMLCircleElement.parentClass.prototype.applyAttr.call(this,attr,value)}},jvm.VectorCanvas=function(container,width,height){return this.mode=window.SVGAngle?\"svg\":\"vml\",this.impl=\"svg\"==this.mode?new jvm.SVGCanvasElement(container,width,height):new jvm.VMLCanvasElement(container,width,height),this.impl.mode=this.mode,this.impl},jvm.SimpleScale=function(scale){this.scale=scale},jvm.SimpleScale.prototype.getValue=function(value){return value},jvm.OrdinalScale=function(scale){this.scale=scale},jvm.OrdinalScale.prototype.getValue=function(value){return this.scale[value]},jvm.OrdinalScale.prototype.getTicks=function(){var key,ticks=[];for(key in this.scale)ticks.push({label:key,value:this.scale[key]});return ticks},jvm.NumericScale=function(scale,normalizeFunction,minValue,maxValue){this.scale=[],normalizeFunction=normalizeFunction||\"linear\",scale&&this.setScale(scale),normalizeFunction&&this.setNormalizeFunction(normalizeFunction),\"undefined\"!=typeof minValue&&this.setMin(minValue),\"undefined\"!=typeof maxValue&&this.setMax(maxValue)},jvm.NumericScale.prototype={setMin:function(min){this.clearMinValue=min,this.minValue=\"function\"==typeof this.normalize?this.normalize(min):min},setMax:function(max){this.clearMaxValue=max,this.maxValue=\"function\"==typeof this.normalize?this.normalize(max):max},setScale:function(scale){var i;for(this.scale=[],i=0;i<scale.length;i++)this.scale[i]=[scale[i]]},setNormalizeFunction:function(f){\"polynomial\"===f?this.normalize=function(value){return Math.pow(value,.2)}:\"linear\"===f?delete this.normalize:this.normalize=f,this.setMin(this.clearMinValue),this.setMax(this.clearMaxValue)},getValue:function(value){var l,c,lengthes=[],fullLength=0,i=0;for(\"function\"==typeof this.normalize&&(value=this.normalize(value)),i=0;i<this.scale.length-1;i++)l=this.vectorLength(this.vectorSubtract(this.scale[i+1],this.scale[i])),lengthes.push(l),fullLength+=l;for(c=(this.maxValue-this.minValue)/fullLength,i=0;i<lengthes.length;i++)lengthes[i]*=c;for(i=0,value-=this.minValue;value-lengthes[i]>=0;)value-=lengthes[i],i++;return value=this.vectorToNum(i==this.scale.length-1?this.scale[i]:this.vectorAdd(this.scale[i],this.vectorMult(this.vectorSubtract(this.scale[i+1],this.scale[i]),value/lengthes[i])))},vectorToNum:function(vector){var i,num=0;for(i=0;i<vector.length;i++)num+=Math.round(vector[i])*Math.pow(256,vector.length-i-1);return num},vectorSubtract:function(vector1,vector2){var i,vector=[];for(i=0;i<vector1.length;i++)vector[i]=vector1[i]-vector2[i];return vector},vectorAdd:function(vector1,vector2){var i,vector=[];for(i=0;i<vector1.length;i++)vector[i]=vector1[i]+vector2[i];return vector},vectorMult:function(vector,num){var i,result=[];for(i=0;i<vector.length;i++)result[i]=vector[i]*num;return result},vectorLength:function(vector){var i,result=0;for(i=0;i<vector.length;i++)result+=vector[i]*vector[i];return Math.sqrt(result)},getTicks:function(){var tick,v,m=5,extent=[this.clearMinValue,this.clearMaxValue],span=extent[1]-extent[0],step=Math.pow(10,Math.floor(Math.log(span/m)/Math.LN10)),err=m/span*step,ticks=[];for(.15>=err?step*=10:.35>=err?step*=5:.75>=err&&(step*=2),extent[0]=Math.floor(extent[0]/step)*step,extent[1]=Math.ceil(extent[1]/step)*step,tick=extent[0];tick<=extent[1];)v=tick==extent[0]?this.clearMinValue:tick==extent[1]?this.clearMaxValue:tick,ticks.push({label:tick,value:this.getValue(v)}),tick+=step;return ticks}},jvm.ColorScale=function(){jvm.ColorScale.parentClass.apply(this,arguments)},jvm.inherits(jvm.ColorScale,jvm.NumericScale),jvm.ColorScale.prototype.setScale=function(scale){var i;for(i=0;i<scale.length;i++)this.scale[i]=jvm.ColorScale.rgbToArray(scale[i])},jvm.ColorScale.prototype.getValue=function(value){return jvm.ColorScale.numToRgb(jvm.ColorScale.parentClass.prototype.getValue.call(this,value))},jvm.ColorScale.arrayToRgb=function(ar){var d,i,rgb=\"#\";for(i=0;i<ar.length;i++)d=ar[i].toString(16),rgb+=1==d.length?\"0\"+d:d;return rgb},jvm.ColorScale.numToRgb=function(num){for(num=num.toString(16);num.length<6;)num=\"0\"+num;return\"#\"+num},jvm.ColorScale.rgbToArray=function(rgb){return rgb=rgb.substr(1),[parseInt(rgb.substr(0,2),16),parseInt(rgb.substr(2,2),16),parseInt(rgb.substr(4,2),16)]},jvm.Legend=function(params){this.params=params||{},this.map=this.params.map,this.series=this.params.series,this.body=jvm.$(\"<div/>\"),this.body.addClass(\"jvectormap-legend\"),this.params.cssClass&&this.body.addClass(this.params.cssClass),params.vertical?this.map.legendCntVertical.append(this.body):this.map.legendCntHorizontal.append(this.body),this.render()},jvm.Legend.prototype.render=function(){var i,tick,sample,label,ticks=this.series.scale.getTicks(),inner=jvm.$(\"<div/>\").addClass(\"jvectormap-legend-inner\");for(this.body.html(\"\"),this.params.title&&this.body.append(jvm.$(\"<div/>\").addClass(\"jvectormap-legend-title\").html(this.params.title)),this.body.append(inner),i=0;i<ticks.length;i++){switch(tick=jvm.$(\"<div/>\").addClass(\"jvectormap-legend-tick\"),sample=jvm.$(\"<div/>\").addClass(\"jvectormap-legend-tick-sample\"),this.series.params.attribute){case\"fill\":jvm.isImageUrl(ticks[i].value)?sample.css(\"background\",\"url(\"+ticks[i].value+\")\"):sample.css(\"background\",ticks[i].value);break;case\"stroke\":sample.css(\"background\",ticks[i].value);break;case\"image\":sample.css(\"background\",\"url(\"+ticks[i].value+\") no-repeat center center\");break;case\"r\":jvm.$(\"<div/>\").css({\"border-radius\":ticks[i].value,border:this.map.params.markerStyle.initial[\"stroke-width\"]+\"px \"+this.map.params.markerStyle.initial.stroke+\" solid\",width:2*ticks[i].value+\"px\",height:2*ticks[i].value+\"px\",background:this.map.params.markerStyle.initial.fill}).appendTo(sample)}tick.append(sample),label=ticks[i].label,this.params.labelRender&&(label=this.params.labelRender(label)),tick.append(jvm.$(\"<div>\"+label+\" </div>\").addClass(\"jvectormap-legend-tick-text\")),inner.append(tick)}inner.append(jvm.$(\"<div/>\").css(\"clear\",\"both\"))},jvm.DataSeries=function(params,elements,map){var scaleConstructor;params=params||{},params.attribute=params.attribute||\"fill\",this.elements=elements,this.params=params,this.map=map,params.attributes&&this.setAttributes(params.attributes),jvm.$.isArray(params.scale)?(scaleConstructor=\"fill\"===params.attribute||\"stroke\"===params.attribute?jvm.ColorScale:jvm.NumericScale,this.scale=new scaleConstructor(params.scale,params.normalizeFunction,params.min,params.max)):this.scale=params.scale?new jvm.OrdinalScale(params.scale):new jvm.SimpleScale(params.scale),this.values=params.values||{},this.setValues(this.values),this.params.legend&&(this.legend=new jvm.Legend($.extend({map:this.map,series:this},this.params.legend)))},jvm.DataSeries.prototype={setAttributes:function(key,attr){var code,attrs=key;if(\"string\"==typeof key)this.elements[key]&&this.elements[key].setStyle(this.params.attribute,attr);else for(code in attrs)this.elements[code]&&this.elements[code].element.setStyle(this.params.attribute,attrs[code])},setValues:function(values){var val,cc,max=-Number.MAX_VALUE,min=Number.MAX_VALUE,attrs={};if(this.scale instanceof jvm.OrdinalScale||this.scale instanceof jvm.SimpleScale)for(cc in values)attrs[cc]=values[cc]?this.scale.getValue(values[cc]):this.elements[cc].element.style.initial[this.params.attribute];else{if(\"undefined\"==typeof this.params.min||\"undefined\"==typeof this.params.max)for(cc in values)val=parseFloat(values[cc]),val>max&&(max=val),min>val&&(min=val);\"undefined\"==typeof this.params.min?(this.scale.setMin(min),this.params.min=min):this.scale.setMin(this.params.min),\"undefined\"==typeof this.params.max?(this.scale.setMax(max),this.params.max=max):this.scale.setMax(this.params.max);for(cc in values)\"indexOf\"!=cc&&(val=parseFloat(values[cc]),attrs[cc]=isNaN(val)?this.elements[cc].element.style.initial[this.params.attribute]:this.scale.getValue(val))}this.setAttributes(attrs),jvm.$.extend(this.values,values)},clear:function(){var key,attrs={};for(key in this.values)this.elements[key]&&(attrs[key]=this.elements[key].element.shape.style.initial[this.params.attribute]);this.setAttributes(attrs),this.values={}},setScale:function(scale){this.scale.setScale(scale),this.values&&this.setValues(this.values)},setNormalizeFunction:function(f){this.scale.setNormalizeFunction(f),this.values&&this.setValues(this.values)}},jvm.Proj={degRad:180/Math.PI,radDeg:Math.PI/180,radius:6381372,sgn:function(n){return n>0?1:0>n?-1:n},mill:function(lat,lng,c){return{x:this.radius*(lng-c)*this.radDeg,y:-this.radius*Math.log(Math.tan((45+.4*lat)*this.radDeg))/.8}},mill_inv:function(x,y,c){return{lat:(2.5*Math.atan(Math.exp(.8*y/this.radius))-5*Math.PI/8)*this.degRad,lng:(c*this.radDeg+x/this.radius)*this.degRad}},merc:function(lat,lng,c){return{x:this.radius*(lng-c)*this.radDeg,y:-this.radius*Math.log(Math.tan(Math.PI/4+lat*Math.PI/360))}},merc_inv:function(x,y,c){return{lat:(2*Math.atan(Math.exp(y/this.radius))-Math.PI/2)*this.degRad,lng:(c*this.radDeg+x/this.radius)*this.degRad}},aea:function(lat,lng,c){var fi0=0,lambda0=c*this.radDeg,fi1=29.5*this.radDeg,fi2=45.5*this.radDeg,fi=lat*this.radDeg,lambda=lng*this.radDeg,n=(Math.sin(fi1)+Math.sin(fi2))/2,C=Math.cos(fi1)*Math.cos(fi1)+2*n*Math.sin(fi1),theta=n*(lambda-lambda0),ro=Math.sqrt(C-2*n*Math.sin(fi))/n,ro0=Math.sqrt(C-2*n*Math.sin(fi0))/n;return{x:ro*Math.sin(theta)*this.radius,y:-(ro0-ro*Math.cos(theta))*this.radius}},aea_inv:function(xCoord,yCoord,c){var x=xCoord/this.radius,y=yCoord/this.radius,fi0=0,lambda0=c*this.radDeg,fi1=29.5*this.radDeg,fi2=45.5*this.radDeg,n=(Math.sin(fi1)+Math.sin(fi2))/2,C=Math.cos(fi1)*Math.cos(fi1)+2*n*Math.sin(fi1),ro0=Math.sqrt(C-2*n*Math.sin(fi0))/n,ro=Math.sqrt(x*x+(ro0-y)*(ro0-y)),theta=Math.atan(x/(ro0-y));return{lat:Math.asin((C-ro*ro*n*n)/(2*n))*this.degRad,lng:(lambda0+theta/n)*this.degRad}},lcc:function(lat,lng,c){var fi0=0,lambda0=c*this.radDeg,lambda=lng*this.radDeg,fi1=33*this.radDeg,fi2=45*this.radDeg,fi=lat*this.radDeg,n=Math.log(Math.cos(fi1)*(1/Math.cos(fi2)))/Math.log(Math.tan(Math.PI/4+fi2/2)*(1/Math.tan(Math.PI/4+fi1/2))),F=Math.cos(fi1)*Math.pow(Math.tan(Math.PI/4+fi1/2),n)/n,ro=F*Math.pow(1/Math.tan(Math.PI/4+fi/2),n),ro0=F*Math.pow(1/Math.tan(Math.PI/4+fi0/2),n);return{x:ro*Math.sin(n*(lambda-lambda0))*this.radius,y:-(ro0-ro*Math.cos(n*(lambda-lambda0)))*this.radius}},lcc_inv:function(xCoord,yCoord,c){var x=xCoord/this.radius,y=yCoord/this.radius,fi0=0,lambda0=c*this.radDeg,fi1=33*this.radDeg,fi2=45*this.radDeg,n=Math.log(Math.cos(fi1)*(1/Math.cos(fi2)))/Math.log(Math.tan(Math.PI/4+fi2/2)*(1/Math.tan(Math.PI/4+fi1/2))),F=Math.cos(fi1)*Math.pow(Math.tan(Math.PI/4+fi1/2),n)/n,ro0=F*Math.pow(1/Math.tan(Math.PI/4+fi0/2),n),ro=this.sgn(n)*Math.sqrt(x*x+(ro0-y)*(ro0-y)),theta=Math.atan(x/(ro0-y));return{lat:(2*Math.atan(Math.pow(F/ro,1/n))-Math.PI/2)*this.degRad,lng:(lambda0+theta/n)*this.degRad}}},jvm.MapObject=function(){},jvm.MapObject.prototype.getLabelText=function(key){var text;return text=this.config.label?\"function\"==typeof this.config.label.render?this.config.label.render(key):key:null},jvm.MapObject.prototype.getLabelOffsets=function(key){var offsets;return this.config.label&&(\"function\"==typeof this.config.label.offsets?offsets=this.config.label.offsets(key):\"object\"==typeof this.config.label.offsets&&(offsets=this.config.label.offsets[key])),offsets||[0,0]},jvm.MapObject.prototype.setHovered=function(isHovered){this.isHovered!==isHovered&&(this.isHovered=isHovered,this.shape.isHovered=isHovered,this.shape.updateStyle(),this.label&&(this.label.isHovered=isHovered,this.label.updateStyle()))},jvm.MapObject.prototype.setSelected=function(isSelected){this.isSelected!==isSelected&&(this.isSelected=isSelected,this.shape.isSelected=isSelected,this.shape.updateStyle(),this.label&&(this.label.isSelected=isSelected,this.label.updateStyle()),jvm.$(this.shape).trigger(\"selected\",[isSelected]))},jvm.MapObject.prototype.setStyle=function(){this.shape.setStyle.apply(this.shape,arguments)},jvm.MapObject.prototype.remove=function(){this.shape.remove(),this.label&&this.label.remove()},jvm.Region=function(config){var bbox,text,offsets;this.config=config,this.map=this.config.map,this.shape=config.canvas.addPath({d:config.path,\"data-code\":config.code},config.style,config.canvas.rootElement),this.shape.addClass(\"jvectormap-region jvectormap-element\"),bbox=this.shape.getBBox(),text=this.getLabelText(config.code),this.config.label&&text&&(offsets=this.getLabelOffsets(config.code),this.labelX=bbox.x+bbox.width/2+offsets[0],this.labelY=bbox.y+bbox.height/2+offsets[1],this.label=config.canvas.addText({text:text,\"text-anchor\":\"middle\",\"alignment-baseline\":\"central\",x:this.labelX,y:this.labelY,\"data-code\":config.code},config.labelStyle,config.labelsGroup),this.label.addClass(\"jvectormap-region jvectormap-element\"))\n},jvm.inherits(jvm.Region,jvm.MapObject),jvm.Region.prototype.updateLabelPosition=function(){this.label&&this.label.set({x:this.labelX*this.map.scale+this.map.transX*this.map.scale,y:this.labelY*this.map.scale+this.map.transY*this.map.scale})},jvm.Marker=function(config){var text;this.config=config,this.map=this.config.map,this.isImage=!!this.config.style.initial.image,this.createShape(),text=this.getLabelText(config.index),this.config.label&&text&&(this.offsets=this.getLabelOffsets(config.index),this.labelX=config.cx/this.map.scale-this.map.transX,this.labelY=config.cy/this.map.scale-this.map.transY,this.label=config.canvas.addText({text:text,\"data-index\":config.index,dy:\"0.6ex\",x:this.labelX,y:this.labelY},config.labelStyle,config.labelsGroup),this.label.addClass(\"jvectormap-marker jvectormap-element\"))},jvm.inherits(jvm.Marker,jvm.MapObject),jvm.Marker.prototype.createShape=function(){var that=this;this.shape&&this.shape.remove(),this.shape=this.config.canvas[this.isImage?\"addImage\":\"addCircle\"]({\"data-index\":this.config.index,cx:this.config.cx,cy:this.config.cy},this.config.style,this.config.group),this.shape.addClass(\"jvectormap-marker jvectormap-element\"),this.isImage&&jvm.$(this.shape.node).on(\"imageloaded\",function(){that.updateLabelPosition()})},jvm.Marker.prototype.updateLabelPosition=function(){this.label&&this.label.set({x:this.labelX*this.map.scale+this.offsets[0]+this.map.transX*this.map.scale+5+(this.isImage?(this.shape.width||0)/2:this.shape.properties.r),y:this.labelY*this.map.scale+this.map.transY*this.map.scale+this.offsets[1]})},jvm.Marker.prototype.setStyle=function(property){var isImage;jvm.Marker.parentClass.prototype.setStyle.apply(this,arguments),\"r\"===property&&this.updateLabelPosition(),isImage=!!this.shape.get(\"image\"),isImage!=this.isImage&&(this.isImage=isImage,this.config.style=jvm.$.extend(!0,{},this.shape.style),this.createShape())},jvm.Map=function(params){var e,map=this;if(this.params=jvm.$.extend(!0,{},jvm.Map.defaultParams,params),!jvm.Map.maps[this.params.map])throw new Error(\"Attempt to use map which was not loaded: \"+this.params.map);this.mapData=jvm.Map.maps[this.params.map],this.markers={},this.regions={},this.regionsColors={},this.regionsData={},this.container=jvm.$(\"<div>\").addClass(\"jvectormap-container\"),this.params.container&&this.params.container.append(this.container),this.container.data(\"mapObject\",this),this.defaultWidth=this.mapData.width,this.defaultHeight=this.mapData.height,this.setBackgroundColor(this.params.backgroundColor),this.onResize=function(){map.updateSize()},jvm.$(window).resize(this.onResize);for(e in jvm.Map.apiEvents)this.params[e]&&this.container.bind(jvm.Map.apiEvents[e]+\".jvectormap\",this.params[e]);this.canvas=new jvm.VectorCanvas(this.container[0],this.width,this.height),this.params.bindTouchEvents&&(\"ontouchstart\"in window||window.DocumentTouch&&document instanceof DocumentTouch?this.bindContainerTouchEvents():window.MSGesture&&this.bindContainerPointerEvents()),this.bindContainerEvents(),this.bindElementEvents(),this.createTip(),this.params.zoomButtons&&this.bindZoomButtons(),this.createRegions(),this.createMarkers(this.params.markers||{}),this.updateSize(),this.params.focusOn&&(\"string\"==typeof this.params.focusOn?this.params.focusOn={region:this.params.focusOn}:jvm.$.isArray(this.params.focusOn)&&(this.params.focusOn={regions:this.params.focusOn}),this.setFocus(this.params.focusOn)),this.params.selectedRegions&&this.setSelectedRegions(this.params.selectedRegions),this.params.selectedMarkers&&this.setSelectedMarkers(this.params.selectedMarkers),this.legendCntHorizontal=jvm.$(\"<div/>\").addClass(\"jvectormap-legend-cnt jvectormap-legend-cnt-h\"),this.legendCntVertical=jvm.$(\"<div/>\").addClass(\"jvectormap-legend-cnt jvectormap-legend-cnt-v\"),this.container.append(this.legendCntHorizontal),this.container.append(this.legendCntVertical),this.params.series&&this.createSeries()},jvm.Map.prototype={transX:0,transY:0,scale:1,baseTransX:0,baseTransY:0,baseScale:1,width:0,height:0,setBackgroundColor:function(backgroundColor){this.container.css(\"background-color\",backgroundColor)},resize:function(){var curBaseScale=this.baseScale;this.width/this.height>this.defaultWidth/this.defaultHeight?(this.baseScale=this.height/this.defaultHeight,this.baseTransX=Math.abs(this.width-this.defaultWidth*this.baseScale)/(2*this.baseScale)):(this.baseScale=this.width/this.defaultWidth,this.baseTransY=Math.abs(this.height-this.defaultHeight*this.baseScale)/(2*this.baseScale)),this.scale*=this.baseScale/curBaseScale,this.transX*=this.baseScale/curBaseScale,this.transY*=this.baseScale/curBaseScale},updateSize:function(){this.width=this.container.width(),this.height=this.container.height(),this.resize(),this.canvas.setSize(this.width,this.height),this.applyTransform()},reset:function(){var key,i;for(key in this.series)for(i=0;i<this.series[key].length;i++)this.series[key][i].clear();this.scale=this.baseScale,this.transX=this.baseTransX,this.transY=this.baseTransY,this.applyTransform()},applyTransform:function(){var maxTransX,maxTransY,minTransX,minTransY;this.defaultWidth*this.scale<=this.width?(maxTransX=(this.width-this.defaultWidth*this.scale)/(2*this.scale),minTransX=(this.width-this.defaultWidth*this.scale)/(2*this.scale)):(maxTransX=0,minTransX=(this.width-this.defaultWidth*this.scale)/this.scale),this.defaultHeight*this.scale<=this.height?(maxTransY=(this.height-this.defaultHeight*this.scale)/(2*this.scale),minTransY=(this.height-this.defaultHeight*this.scale)/(2*this.scale)):(maxTransY=0,minTransY=(this.height-this.defaultHeight*this.scale)/this.scale),this.transY>maxTransY?this.transY=maxTransY:this.transY<minTransY&&(this.transY=minTransY),this.transX>maxTransX?this.transX=maxTransX:this.transX<minTransX&&(this.transX=minTransX),this.canvas.applyTransformParams(this.scale,this.transX,this.transY),this.markers&&this.repositionMarkers(),this.repositionLabels(),this.container.trigger(\"viewportChange\",[this.scale/this.baseScale,this.transX,this.transY])},bindContainerEvents:function(){var oldPageX,oldPageY,mouseDown=!1,map=this;this.params.panOnDrag&&(this.container.mousemove(function(e){return mouseDown&&(map.transX-=(oldPageX-e.pageX)/map.scale,map.transY-=(oldPageY-e.pageY)/map.scale,map.applyTransform(),oldPageX=e.pageX,oldPageY=e.pageY),!1}).mousedown(function(e){return mouseDown=!0,oldPageX=e.pageX,oldPageY=e.pageY,!1}),this.onContainerMouseUp=function(){mouseDown=!1},jvm.$(\"body\").mouseup(this.onContainerMouseUp)),this.params.zoomOnScroll&&this.container.mousewheel(function(event){var offset=jvm.$(map.container).offset(),centerX=event.pageX-offset.left,centerY=event.pageY-offset.top,zoomStep=Math.pow(1+map.params.zoomOnScrollSpeed/1e3,event.deltaFactor*event.deltaY);map.tip.hide(),map.setScale(map.scale*zoomStep,centerX,centerY),event.preventDefault()})},bindContainerTouchEvents:function(){var touchStartScale,touchStartDistance,touchX,touchY,centerTouchX,centerTouchY,lastTouchesLength,map=this,handleTouchEvent=function(e){var offset,scale,transXOld,transYOld,touches=e.originalEvent.touches;\"touchstart\"==e.type&&(lastTouchesLength=0),1==touches.length?(1==lastTouchesLength&&(transXOld=map.transX,transYOld=map.transY,map.transX-=(touchX-touches[0].pageX)/map.scale,map.transY-=(touchY-touches[0].pageY)/map.scale,map.applyTransform(),map.tip.hide(),(transXOld!=map.transX||transYOld!=map.transY)&&e.preventDefault()),touchX=touches[0].pageX,touchY=touches[0].pageY):2==touches.length&&(2==lastTouchesLength?(scale=Math.sqrt(Math.pow(touches[0].pageX-touches[1].pageX,2)+Math.pow(touches[0].pageY-touches[1].pageY,2))/touchStartDistance,map.setScale(touchStartScale*scale,centerTouchX,centerTouchY),map.tip.hide(),e.preventDefault()):(offset=jvm.$(map.container).offset(),centerTouchX=touches[0].pageX>touches[1].pageX?touches[1].pageX+(touches[0].pageX-touches[1].pageX)/2:touches[0].pageX+(touches[1].pageX-touches[0].pageX)/2,centerTouchY=touches[0].pageY>touches[1].pageY?touches[1].pageY+(touches[0].pageY-touches[1].pageY)/2:touches[0].pageY+(touches[1].pageY-touches[0].pageY)/2,centerTouchX-=offset.left,centerTouchY-=offset.top,touchStartScale=map.scale,touchStartDistance=Math.sqrt(Math.pow(touches[0].pageX-touches[1].pageX,2)+Math.pow(touches[0].pageY-touches[1].pageY,2)))),lastTouchesLength=touches.length};jvm.$(this.container).bind(\"touchstart\",handleTouchEvent),jvm.$(this.container).bind(\"touchmove\",handleTouchEvent)},bindContainerPointerEvents:function(){var map=this,gesture=new MSGesture,element=this.container[0],handlePointerDownEvent=function(e){gesture.addPointer(e.pointerId)},handleGestureEvent=function(e){var transXOld,transYOld;(0!=e.translationX||0!=e.translationY)&&(transXOld=map.transX,transYOld=map.transY,map.transX+=e.translationX/map.scale,map.transY+=e.translationY/map.scale,map.applyTransform(),map.tip.hide(),(transXOld!=map.transX||transYOld!=map.transY)&&e.preventDefault()),1!=e.scale&&(map.setScale(map.scale*e.scale,e.offsetX,e.offsetY),map.tip.hide(),e.preventDefault())};gesture.target=element,element.addEventListener(\"MSGestureChange\",handleGestureEvent,!1),element.addEventListener(\"pointerdown\",handlePointerDownEvent,!1)},bindElementEvents:function(){var pageX,pageY,mouseMoved,map=this;this.container.mousemove(function(e){Math.abs(pageX-e.pageX)+Math.abs(pageY-e.pageY)>2&&(mouseMoved=!0)}),this.container.delegate(\"[class~='jvectormap-element']\",\"mouseover mouseout\",function(e){var baseVal=jvm.$(this).attr(\"class\").baseVal||jvm.$(this).attr(\"class\"),type=-1===baseVal.indexOf(\"jvectormap-region\")?\"marker\":\"region\",code=jvm.$(this).attr(\"region\"==type?\"data-code\":\"data-index\"),element=\"region\"==type?map.regions[code].element:map.markers[code].element,tipText=\"region\"==type?map.mapData.paths[code].name:map.markers[code].config.name||\"\",tipShowEvent=jvm.$.Event(type+\"TipShow.jvectormap\"),overEvent=jvm.$.Event(type+\"Over.jvectormap\");\"mouseover\"==e.type?(map.container.trigger(overEvent,[code]),overEvent.isDefaultPrevented()||element.setHovered(!0),map.tip.text(tipText),map.container.trigger(tipShowEvent,[map.tip,code]),tipShowEvent.isDefaultPrevented()||(map.tip.show(),map.tipWidth=map.tip.width(),map.tipHeight=map.tip.height())):(element.setHovered(!1),map.tip.hide(),map.container.trigger(type+\"Out.jvectormap\",[code]))}),this.container.delegate(\"[class~='jvectormap-element']\",\"mousedown\",function(e){pageX=e.pageX,pageY=e.pageY,mouseMoved=!1}),this.container.delegate(\"[class~='jvectormap-element']\",\"mouseup\",function(){var baseVal=jvm.$(this).attr(\"class\").baseVal?jvm.$(this).attr(\"class\").baseVal:jvm.$(this).attr(\"class\"),type=-1===baseVal.indexOf(\"jvectormap-region\")?\"marker\":\"region\",code=jvm.$(this).attr(\"region\"==type?\"data-code\":\"data-index\"),clickEvent=jvm.$.Event(type+\"Click.jvectormap\"),element=\"region\"==type?map.regions[code].element:map.markers[code].element;mouseMoved||(map.container.trigger(clickEvent,[code]),(\"region\"===type&&map.params.regionsSelectable||\"marker\"===type&&map.params.markersSelectable)&&(clickEvent.isDefaultPrevented()||(map.params[type+\"sSelectableOne\"]&&map.clearSelected(type+\"s\"),element.setSelected(!element.isSelected))))})},bindZoomButtons:function(){var map=this;jvm.$(\"<div/>\").addClass(\"jvectormap-zoomin\").text(\"+\").appendTo(this.container),jvm.$(\"<div/>\").addClass(\"jvectormap-zoomout\").html(\"&#x2212;\").appendTo(this.container),this.container.find(\".jvectormap-zoomin\").click(function(){map.setScale(map.scale*map.params.zoomStep,map.width/2,map.height/2,!1,map.params.zoomAnimate)}),this.container.find(\".jvectormap-zoomout\").click(function(){map.setScale(map.scale/map.params.zoomStep,map.width/2,map.height/2,!1,map.params.zoomAnimate)})},createTip:function(){var map=this;this.tip=jvm.$(\"<div/>\").addClass(\"jvectormap-tip\").appendTo(jvm.$(\"body\")),this.container.mousemove(function(e){var left=e.pageX-15-map.tipWidth,top=e.pageY-15-map.tipHeight;5>left&&(left=e.pageX+15),5>top&&(top=e.pageY+15),map.tip.css({left:left,top:top})})},setScale:function(scale,anchorX,anchorY,isCentered,animate){var interval,scaleStart,scaleDiff,transXStart,transXDiff,transYStart,transYDiff,transX,transY,viewportChangeEvent=jvm.$.Event(\"zoom.jvectormap\"),that=this,i=0,count=Math.abs(Math.round(60*(scale-this.scale)/Math.max(scale,this.scale))),deferred=new jvm.$.Deferred;return scale>this.params.zoomMax*this.baseScale?scale=this.params.zoomMax*this.baseScale:scale<this.params.zoomMin*this.baseScale&&(scale=this.params.zoomMin*this.baseScale),\"undefined\"!=typeof anchorX&&\"undefined\"!=typeof anchorY&&(zoomStep=scale/this.scale,isCentered?(transX=anchorX+this.defaultWidth*(this.width/(this.defaultWidth*scale))/2,transY=anchorY+this.defaultHeight*(this.height/(this.defaultHeight*scale))/2):(transX=this.transX-(zoomStep-1)/scale*anchorX,transY=this.transY-(zoomStep-1)/scale*anchorY)),animate&&count>0?(scaleStart=this.scale,scaleDiff=(scale-scaleStart)/count,transXStart=this.transX*this.scale,transYStart=this.transY*this.scale,transXDiff=(transX*scale-transXStart)/count,transYDiff=(transY*scale-transYStart)/count,interval=setInterval(function(){i+=1,that.scale=scaleStart+scaleDiff*i,that.transX=(transXStart+transXDiff*i)/that.scale,that.transY=(transYStart+transYDiff*i)/that.scale,that.applyTransform(),i==count&&(clearInterval(interval),that.container.trigger(viewportChangeEvent,[scale/that.baseScale]),deferred.resolve())},10)):(this.transX=transX,this.transY=transY,this.scale=scale,this.applyTransform(),this.container.trigger(viewportChangeEvent,[scale/this.baseScale]),deferred.resolve()),deferred},setFocus:function(config){var bbox,itemBbox,newBbox,codes,i,point;if(config=config||{},config.region?codes=[config.region]:config.regions&&(codes=config.regions),codes){for(i=0;i<codes.length;i++)this.regions[codes[i]]&&(itemBbox=this.regions[codes[i]].element.shape.getBBox(),itemBbox&&(\"undefined\"==typeof bbox?bbox=itemBbox:(newBbox={x:Math.min(bbox.x,itemBbox.x),y:Math.min(bbox.y,itemBbox.y),width:Math.max(bbox.x+bbox.width,itemBbox.x+itemBbox.width)-Math.min(bbox.x,itemBbox.x),height:Math.max(bbox.y+bbox.height,itemBbox.y+itemBbox.height)-Math.min(bbox.y,itemBbox.y)},bbox=newBbox)));return this.setScale(Math.min(this.width/bbox.width,this.height/bbox.height),-(bbox.x+bbox.width/2),-(bbox.y+bbox.height/2),!0,config.animate)}return config.lat&&config.lng?(point=this.latLngToPoint(config.lat,config.lng),config.x=this.transX-point.x/this.scale,config.y=this.transY-point.y/this.scale):config.x&&config.y&&(config.x*=-this.defaultWidth,config.y*=-this.defaultHeight),this.setScale(config.scale*this.baseScale,config.x,config.y,!0,config.animate)},getSelected:function(type){var key,selected=[];for(key in this[type])this[type][key].element.isSelected&&selected.push(key);return selected},getSelectedRegions:function(){return this.getSelected(\"regions\")},getSelectedMarkers:function(){return this.getSelected(\"markers\")},setSelected:function(type,keys){var i;if(\"object\"!=typeof keys&&(keys=[keys]),jvm.$.isArray(keys))for(i=0;i<keys.length;i++)this[type][keys[i]].element.setSelected(!0);else for(i in keys)this[type][i].element.setSelected(!!keys[i])},setSelectedRegions:function(keys){this.setSelected(\"regions\",keys)},setSelectedMarkers:function(keys){this.setSelected(\"markers\",keys)},clearSelected:function(type){var i,select={},selected=this.getSelected(type);for(i=0;i<selected.length;i++)select[selected[i]]=!1;this.setSelected(type,select)},clearSelectedRegions:function(){this.clearSelected(\"regions\")},clearSelectedMarkers:function(){this.clearSelected(\"markers\")},getMapObject:function(){return this},getRegionName:function(code){return this.mapData.paths[code].name},createRegions:function(){var key,region,map=this;this.regionLabelsGroup=this.regionLabelsGroup||this.canvas.addGroup();for(key in this.mapData.paths)region=new jvm.Region({map:this,path:this.mapData.paths[key].path,code:key,style:jvm.$.extend(!0,{},this.params.regionStyle),labelStyle:jvm.$.extend(!0,{},this.params.regionLabelStyle),canvas:this.canvas,labelsGroup:this.regionLabelsGroup,label:\"vml\"!=this.canvas.mode?this.params.labels&&this.params.labels.regions:null}),jvm.$(region.shape).bind(\"selected\",function(e,isSelected){map.container.trigger(\"regionSelected.jvectormap\",[jvm.$(this.node).attr(\"data-code\"),isSelected,map.getSelectedRegions()])}),this.regions[key]={element:region,config:this.mapData.paths[key]}},createMarkers:function(markers){var i,marker,point,markerConfig,markersArray,map=this;if(this.markersGroup=this.markersGroup||this.canvas.addGroup(),this.markerLabelsGroup=this.markerLabelsGroup||this.canvas.addGroup(),jvm.$.isArray(markers))for(markersArray=markers.slice(),markers={},i=0;i<markersArray.length;i++)markers[i]=markersArray[i];for(i in markers)markerConfig=markers[i]instanceof Array?{latLng:markers[i]}:markers[i],point=this.getMarkerPosition(markerConfig),point!==!1&&(marker=new jvm.Marker({map:this,style:jvm.$.extend(!0,{},this.params.markerStyle,{initial:markerConfig.style||{}}),labelStyle:jvm.$.extend(!0,{},this.params.markerLabelStyle),index:i,cx:point.x,cy:point.y,group:this.markersGroup,canvas:this.canvas,labelsGroup:this.markerLabelsGroup,label:\"vml\"!=this.canvas.mode?this.params.labels&&this.params.labels.markers:null}),jvm.$(marker.shape).bind(\"selected\",function(e,isSelected){map.container.trigger(\"markerSelected.jvectormap\",[jvm.$(this.node).attr(\"data-index\"),isSelected,map.getSelectedMarkers()])}),this.markers[i]&&this.removeMarkers([i]),this.markers[i]={element:marker,config:markerConfig})},repositionMarkers:function(){var i,point;for(i in this.markers)point=this.getMarkerPosition(this.markers[i].config),point!==!1&&this.markers[i].element.setStyle({cx:point.x,cy:point.y})},repositionLabels:function(){var key;for(key in this.regions)this.regions[key].element.updateLabelPosition();for(key in this.markers)this.markers[key].element.updateLabelPosition()},getMarkerPosition:function(markerConfig){return jvm.Map.maps[this.params.map].projection?this.latLngToPoint.apply(this,markerConfig.latLng||[0,0]):{x:markerConfig.coords[0]*this.scale+this.transX*this.scale,y:markerConfig.coords[1]*this.scale+this.transY*this.scale}},addMarker:function(key,marker,seriesData){var values,i,markers={},data=[],seriesData=seriesData||[];for(markers[key]=marker,i=0;i<seriesData.length;i++)values={},\"undefined\"!=typeof seriesData[i]&&(values[key]=seriesData[i]),data.push(values);this.addMarkers(markers,data)},addMarkers:function(markers,seriesData){var i;for(seriesData=seriesData||[],this.createMarkers(markers),i=0;i<seriesData.length;i++)this.series.markers[i].setValues(seriesData[i]||{})},removeMarkers:function(markers){var i;for(i=0;i<markers.length;i++)this.markers[markers[i]].element.remove(),delete this.markers[markers[i]]},removeAllMarkers:function(){var i,markers=[];for(i in this.markers)markers.push(i);this.removeMarkers(markers)},latLngToPoint:function(lat,lng){var point,inset,bbox,proj=jvm.Map.maps[this.params.map].projection,centralMeridian=proj.centralMeridian;return-180+centralMeridian>lng&&(lng+=360),point=jvm.Proj[proj.type](lat,lng,centralMeridian),inset=this.getInsetForPoint(point.x,point.y),inset?(bbox=inset.bbox,point.x=(point.x-bbox[0].x)/(bbox[1].x-bbox[0].x)*inset.width*this.scale,point.y=(point.y-bbox[0].y)/(bbox[1].y-bbox[0].y)*inset.height*this.scale,{x:point.x+this.transX*this.scale+inset.left*this.scale,y:point.y+this.transY*this.scale+inset.top*this.scale}):!1},pointToLatLng:function(x,y){var i,inset,bbox,nx,ny,proj=jvm.Map.maps[this.params.map].projection,centralMeridian=proj.centralMeridian,insets=jvm.Map.maps[this.params.map].insets;for(i=0;i<insets.length;i++)if(inset=insets[i],bbox=inset.bbox,nx=x-(this.transX*this.scale+inset.left*this.scale),ny=y-(this.transY*this.scale+inset.top*this.scale),nx=nx/(inset.width*this.scale)*(bbox[1].x-bbox[0].x)+bbox[0].x,ny=ny/(inset.height*this.scale)*(bbox[1].y-bbox[0].y)+bbox[0].y,nx>bbox[0].x&&nx<bbox[1].x&&ny>bbox[0].y&&ny<bbox[1].y)return jvm.Proj[proj.type+\"_inv\"](nx,-ny,centralMeridian);return!1},getInsetForPoint:function(x,y){var i,bbox,insets=jvm.Map.maps[this.params.map].insets;for(i=0;i<insets.length;i++)if(bbox=insets[i].bbox,x>bbox[0].x&&x<bbox[1].x&&y>bbox[0].y&&y<bbox[1].y)return insets[i]},createSeries:function(){var i,key;this.series={markers:[],regions:[]};for(key in this.params.series)for(i=0;i<this.params.series[key].length;i++)this.series[key][i]=new jvm.DataSeries(this.params.series[key][i],this[key],this)},remove:function(){this.tip.remove(),this.container.remove(),jvm.$(window).unbind(\"resize\",this.onResize),jvm.$(\"body\").unbind(\"mouseup\",this.onContainerMouseUp)}},jvm.Map.maps={},jvm.Map.defaultParams={map:\"world_mill_en\",backgroundColor:\"#505050\",zoomButtons:!0,zoomOnScroll:!0,zoomOnScrollSpeed:3,panOnDrag:!0,zoomMax:8,zoomMin:1,zoomStep:1.6,zoomAnimate:!0,regionsSelectable:!1,markersSelectable:!1,bindTouchEvents:!0,regionStyle:{initial:{fill:\"white\",\"fill-opacity\":1,stroke:\"none\",\"stroke-width\":0,\"stroke-opacity\":1},hover:{\"fill-opacity\":.8,cursor:\"pointer\"},selected:{fill:\"yellow\"},selectedHover:{}},regionLabelStyle:{initial:{\"font-family\":\"Verdana\",\"font-size\":\"12\",\"font-weight\":\"bold\",cursor:\"default\",fill:\"black\"},hover:{cursor:\"pointer\"}},markerStyle:{initial:{fill:\"grey\",stroke:\"#505050\",\"fill-opacity\":1,\"stroke-width\":1,\"stroke-opacity\":1,r:5},hover:{stroke:\"black\",\"stroke-width\":2,cursor:\"pointer\"},selected:{fill:\"blue\"},selectedHover:{}},markerLabelStyle:{initial:{\"font-family\":\"Verdana\",\"font-size\":\"12\",\"font-weight\":\"bold\",cursor:\"default\",fill:\"black\"},hover:{cursor:\"pointer\"}}},jvm.Map.apiEvents={onRegionTipShow:\"regionTipShow\",onRegionOver:\"regionOver\",onRegionOut:\"regionOut\",onRegionClick:\"regionClick\",onRegionSelected:\"regionSelected\",onMarkerTipShow:\"markerTipShow\",onMarkerOver:\"markerOver\",onMarkerOut:\"markerOut\",onMarkerClick:\"markerClick\",onMarkerSelected:\"markerSelected\",onViewportChange:\"viewportChange\"},jvm.MultiMap=function(params){var that=this;this.maps={},this.params=jvm.$.extend(!0,{},jvm.MultiMap.defaultParams,params),this.params.maxLevel=this.params.maxLevel||Number.MAX_VALUE,this.params.main=this.params.main||{},this.params.main.multiMapLevel=0,this.history=[this.addMap(this.params.main.map,this.params.main)],this.defaultProjection=this.history[0].mapData.projection.type,this.mapsLoaded={},this.params.container.css({position:\"relative\"}),this.backButton=jvm.$(\"<div/>\").addClass(\"jvectormap-goback\").text(\"Back\").appendTo(this.params.container),this.backButton.hide(),this.backButton.click(function(){that.goBack()}),this.spinner=jvm.$(\"<div/>\").addClass(\"jvectormap-spinner\").appendTo(this.params.container),this.spinner.hide()},jvm.MultiMap.prototype={addMap:function(name,config){var cnt=jvm.$(\"<div/>\").css({width:\"100%\",height:\"100%\"});return this.params.container.append(cnt),this.maps[name]=new jvm.Map(jvm.$.extend(config,{container:cnt})),this.params.maxLevel>config.multiMapLevel&&this.maps[name].container.on(\"regionClick.jvectormap\",{scope:this},function(e,code){var multimap=e.data.scope,mapName=multimap.params.mapNameByCode(code,multimap);multimap.drillDownPromise&&\"pending\"===multimap.drillDownPromise.state()||multimap.drillDown(mapName,code)}),this.maps[name]},downloadMap:function(code){var that=this,deferred=jvm.$.Deferred();return this.mapsLoaded[code]?deferred.resolve():jvm.$.get(this.params.mapUrlByCode(code,this)).then(function(){that.mapsLoaded[code]=!0,deferred.resolve()},function(){deferred.reject()}),deferred},drillDown:function(name,code){var currentMap=this.history[this.history.length-1],that=this,focusPromise=currentMap.setFocus({region:code,animate:!0}),downloadPromise=this.downloadMap(code);focusPromise.then(function(){\"pending\"===downloadPromise.state()&&that.spinner.show()}),downloadPromise.always(function(){that.spinner.hide()}),this.drillDownPromise=jvm.$.when(downloadPromise,focusPromise),this.drillDownPromise.then(function(){currentMap.params.container.hide(),that.maps[name]?that.maps[name].params.container.show():that.addMap(name,{map:name,multiMapLevel:currentMap.params.multiMapLevel+1}),that.history.push(that.maps[name]),that.backButton.show()})},goBack:function(){var currentMap=this.history.pop(),prevMap=this.history[this.history.length-1],that=this;currentMap.setFocus({scale:1,x:.5,y:.5,animate:!0}).then(function(){currentMap.params.container.hide(),prevMap.params.container.show(),prevMap.updateSize(),1===that.history.length&&that.backButton.hide(),prevMap.setFocus({scale:1,x:.5,y:.5,animate:!0})})}},jvm.MultiMap.defaultParams={mapNameByCode:function(code,multiMap){return code.toLowerCase()+\"_\"+multiMap.defaultProjection+\"_en\"},mapUrlByCode:function(code,multiMap){return\"jquery-jvectormap-data-\"+code.toLowerCase()+\"-\"+multiMap.defaultProjection+\"-en.js\"}};","jQuery.fn.vectorMap('addMap', 'world_mill_en',{\"insets\": [{\"width\": 900, \"top\": 0, \"height\": 440.70631074413296, \"bbox\": [{\"y\": -12671671.123330014, \"x\": -20004297.151525836}, {\"y\": 6930392.025135122, \"x\": 20026572.39474939}], \"left\": 0}], \"paths\": {\"BD\": {\"path\": \"M651.84,230.21l-0.6,-2.0l-1.36,-1.71l-2.31,-0.11l-0.41,0.48l0.2,0.94l-0.53,0.99l-0.72,-0.36l-0.68,0.35l-1.2,-0.36l-0.37,-2.0l-0.81,-1.86l0.39,-1.46l-0.22,-0.47l-1.14,-0.53l0.29,-0.5l1.48,-0.94l0.03,-0.65l-1.55,-1.22l0.55,-1.14l1.61,0.94l1.04,0.15l0.18,1.54l0.34,0.35l5.64,0.63l-0.84,1.64l-1.22,0.34l-0.77,1.51l0.07,0.47l1.37,1.37l0.67,-0.19l0.42,-1.39l1.21,3.84l-0.03,1.21l-0.33,-0.15l-0.4,0.28Z\", \"name\": \"Bangladesh\"}, \"BE\": {\"path\": \"M429.29,144.05l1.91,0.24l2.1,-0.63l2.63,1.99l-0.21,1.66l-0.69,0.4l-0.18,1.2l-1.66,-1.13l-1.39,0.15l-2.73,-2.7l-1.17,-0.18l-0.16,-0.52l1.54,-0.5Z\", \"name\": \"Belgium\"}, \"BF\": {\"path\": \"M421.42,247.64l-0.11,0.95l0.34,1.16l1.4,1.71l0.07,1.1l0.32,0.37l2.55,0.51l-0.04,1.28l-0.38,0.53l-1.07,0.21l-0.72,1.18l-0.63,0.21l-3.22,-0.25l-0.94,0.39l-5.4,-0.05l-0.39,0.38l0.16,2.73l-1.23,-0.43l-1.17,0.1l-0.89,0.57l-2.27,-1.72l-0.13,-1.11l0.61,-0.96l0.02,-0.93l1.87,-1.98l0.44,-1.81l0.43,-0.39l1.28,0.26l1.05,-0.52l0.47,-0.73l1.84,-1.09l0.55,-0.83l2.2,-1.0l1.15,-0.3l0.72,0.45l1.13,-0.01Z\", \"name\": \"Burkina Faso\"}, \"BG\": {\"path\": \"M491.65,168.18l-0.86,0.88l-0.91,2.17l0.48,1.34l-1.6,-0.24l-2.55,0.95l-0.28,1.51l-1.8,0.22l-2.0,-1.0l-1.92,0.79l-1.42,-0.07l-0.15,-1.63l-1.05,-0.97l0.0,-0.8l1.2,-1.57l0.01,-0.56l-1.14,-1.23l-0.05,-0.94l0.88,0.97l0.88,-0.2l1.91,0.47l3.68,0.16l1.42,-0.81l2.72,-0.66l2.55,1.24Z\", \"name\": \"Bulgaria\"}, \"BA\": {\"path\": \"M463.49,163.65l2.1,0.5l1.72,-0.03l1.52,0.68l-0.36,0.78l0.08,0.45l1.04,1.02l-0.25,0.98l-1.81,1.15l-0.38,1.38l-1.67,-0.87l-0.89,-1.2l-2.11,-1.83l-1.63,-2.22l0.23,-0.57l0.48,0.38l0.55,-0.06l0.43,-0.51l0.94,-0.06Z\", \"name\": \"Bosnia and Herz.\"}, \"BN\": {\"path\": \"M707.48,273.58l0.68,-0.65l1.41,-0.91l-0.15,1.63l-0.81,-0.05l-0.61,0.58l-0.53,-0.6Z\", \"name\": \"Brunei\"}, \"BO\": {\"path\": \"M263.83,340.69l-3.09,-0.23l-0.38,0.23l-0.7,1.52l-1.31,-1.53l-3.28,-0.64l-2.37,2.4l-1.31,0.26l-0.88,-3.26l-1.3,-2.86l0.74,-2.37l-0.13,-0.43l-1.2,-1.01l-0.37,-1.89l-1.08,-1.55l1.45,-2.56l-0.96,-2.33l0.47,-1.06l-0.34,-0.73l0.91,-1.32l0.16,-3.84l0.5,-1.18l-1.81,-3.41l2.46,0.07l0.8,-0.85l3.4,-1.91l2.66,-0.35l-0.19,1.38l0.3,1.07l-0.05,1.97l2.72,2.27l2.88,0.49l0.89,0.86l1.79,0.58l0.98,0.7l1.71,0.05l1.17,0.61l0.6,2.7l-0.7,0.54l0.96,2.99l0.37,0.28l4.3,0.1l-0.25,1.2l0.27,1.02l1.43,0.9l0.5,1.35l-0.41,1.86l-0.65,1.08l0.12,1.35l-2.69,-1.65l-2.4,-0.03l-4.36,0.76l-1.49,2.5l-0.11,1.52l-0.75,2.37Z\", \"name\": \"Bolivia\"}, \"JP\": {\"path\": \"M781.12,166.87l1.81,0.68l1.62,-0.97l0.39,2.42l-3.35,0.75l-2.23,2.88l-3.63,-1.9l-0.56,0.2l-1.26,3.05l-2.16,0.03l-0.29,-2.51l1.08,-2.03l2.45,-0.16l0.37,-0.33l1.25,-5.94l2.47,2.71l2.03,1.12ZM773.56,187.34l-0.91,2.22l0.37,1.52l-1.14,1.75l-3.02,1.26l-4.58,0.27l-3.34,3.01l-1.25,-0.8l-0.09,-1.9l-0.46,-0.38l-4.35,0.62l-3.0,1.32l-2.85,0.05l-0.37,0.27l0.13,0.44l2.32,1.89l-1.54,4.34l-1.26,0.9l-0.79,-0.7l0.56,-2.27l-0.21,-0.45l-1.47,-0.75l-0.74,-1.4l2.12,-0.84l1.26,-1.7l2.45,-1.42l1.83,-1.91l4.78,-0.81l2.6,0.57l0.44,-0.21l2.39,-4.66l1.29,1.06l0.5,0.01l5.1,-4.02l1.69,-3.73l-0.38,-3.4l0.9,-1.61l2.14,-0.44l1.23,3.72l-0.07,2.18l-2.23,2.84l-0.04,3.16ZM757.78,196.26l0.19,0.56l-1.01,1.21l-1.16,-0.68l-1.28,0.65l-0.69,1.45l-1.02,-0.5l0.01,-0.93l1.14,-1.38l1.57,0.14l0.85,-0.98l1.4,0.46Z\", \"name\": \"Japan\"}, \"BI\": {\"path\": \"M495.45,295.49l-1.08,-2.99l1.14,-0.11l0.64,-1.19l0.76,0.09l0.65,1.83l-2.1,2.36Z\", \"name\": \"Burundi\"}, \"BJ\": {\"path\": \"M429.57,255.75l-0.05,0.8l0.5,1.34l-0.42,0.86l0.17,0.79l-1.81,2.12l-0.57,1.76l-0.08,5.42l-1.41,0.2l-0.48,-1.36l0.11,-5.71l-0.52,-0.7l-0.2,-1.35l-1.48,-1.48l0.21,-0.9l0.89,-0.43l0.42,-0.92l1.27,-0.36l1.22,-1.34l0.61,-0.0l1.62,1.24Z\", \"name\": \"Benin\"}, \"BT\": {\"path\": \"M650.32,213.86l0.84,0.71l-0.12,1.1l-3.76,-0.11l-1.57,0.4l-1.93,-0.87l1.48,-1.96l1.13,-0.57l1.63,0.57l1.33,0.08l0.99,0.65Z\", \"name\": \"Bhutan\"}, \"JM\": {\"path\": \"M228.38,239.28l-0.8,0.4l-2.26,-1.06l0.84,-0.23l2.14,0.3l1.17,0.56l-1.08,0.03Z\", \"name\": \"Jamaica\"}, \"BW\": {\"path\": \"M483.92,330.07l2.27,4.01l2.83,2.86l0.96,0.31l0.78,2.43l2.13,0.61l1.02,0.76l-3.0,1.64l-2.32,2.02l-1.54,2.69l-1.52,0.45l-0.64,1.94l-1.34,0.52l-1.85,-0.12l-1.21,-0.74l-1.35,-0.3l-1.22,0.62l-0.75,1.37l-2.31,1.9l-1.4,0.21l-0.35,-0.59l0.16,-1.75l-1.48,-2.54l-0.62,-0.43l-0.0,-7.1l2.08,-0.08l0.39,-0.4l0.07,-8.9l5.19,-0.93l0.8,0.89l0.51,0.07l1.5,-0.95l2.21,-0.49Z\", \"name\": \"Botswana\"}, \"BR\": {\"path\": \"M259.98,275.05l3.24,0.7l0.65,-0.53l4.55,-1.32l1.08,-1.06l-0.02,-0.63l0.55,-0.05l0.28,0.28l-0.26,0.87l0.22,0.48l0.73,0.32l0.4,0.81l-0.62,0.86l-0.4,2.13l0.82,2.56l1.69,1.43l1.43,0.2l3.17,-1.68l3.18,0.3l0.65,-0.75l-0.27,-0.92l1.9,-0.09l2.39,0.99l1.06,-0.61l0.84,0.78l1.2,-0.18l1.18,-1.06l0.84,-1.94l1.36,-2.11l0.37,-0.05l1.89,5.45l1.33,0.59l0.05,1.28l-1.77,1.94l0.02,0.56l1.02,0.87l4.07,0.36l0.08,2.16l0.66,0.29l1.74,-1.5l6.97,2.32l1.02,1.22l-0.35,1.18l0.49,0.5l2.81,-0.74l4.77,1.3l3.75,-0.08l3.57,2.0l3.29,2.86l1.93,0.72l2.12,0.12l0.71,0.62l1.21,4.51l-0.95,3.98l-4.72,5.06l-1.64,2.92l-1.72,2.05l-0.8,0.3l-0.72,2.03l0.18,4.75l-0.94,5.53l-0.81,1.13l-0.43,3.36l-2.55,3.5l-0.4,2.51l-1.86,1.04l-0.67,1.53l-2.54,0.01l-3.94,1.01l-1.83,1.2l-2.87,0.82l-3.03,2.19l-2.2,2.83l-0.36,2.0l0.4,1.58l-0.44,2.6l-0.51,1.2l-1.77,1.54l-2.75,4.78l-3.83,3.42l-1.24,2.74l-1.18,1.15l-0.36,-0.83l0.95,-1.14l0.01,-0.5l-1.52,-1.97l-4.56,-3.32l-1.03,-0.0l-2.38,-2.02l-0.81,-0.0l5.34,-5.45l3.77,-2.58l0.22,-2.46l-1.35,-1.81l-0.91,0.07l0.58,-2.33l0.01,-1.54l-1.11,-0.83l-1.75,0.3l-0.44,-3.11l-0.52,-0.95l-1.88,-0.88l-1.24,0.47l-2.17,-0.41l0.15,-3.21l-0.62,-1.34l0.66,-0.73l-0.22,-1.34l0.66,-1.13l0.44,-2.04l-0.61,-1.83l-1.4,-0.86l-0.2,-0.75l0.34,-1.39l-0.38,-0.5l-4.52,-0.1l-0.72,-2.22l0.59,-0.42l-0.03,-1.1l-0.5,-0.87l-0.32,-1.7l-1.45,-0.76l-1.63,-0.02l-1.05,-0.72l-1.6,-0.48l-1.13,-0.99l-2.69,-0.4l-2.47,-2.06l0.13,-4.35l-0.45,-0.45l-3.46,0.5l-3.44,1.94l-0.6,0.74l-2.9,-0.17l-1.47,0.42l-0.72,-0.18l0.15,-3.52l-0.63,-0.34l-1.94,1.41l-1.87,-0.06l-0.83,-1.18l-1.37,-0.26l0.21,-1.01l-1.35,-1.49l-0.88,-1.91l0.56,-0.6l-0.0,-0.81l1.29,-0.62l0.22,-0.43l-0.22,-1.19l0.61,-0.91l0.15,-0.99l2.65,-1.58l1.99,-0.47l0.42,-0.36l2.06,0.11l0.42,-0.33l1.19,-8.0l-0.41,-1.56l-1.1,-1.0l0.01,-1.33l1.91,-0.42l0.08,-0.96l-0.33,-0.43l-1.14,-0.2l-0.02,-0.83l4.47,0.05l0.82,-0.67l0.82,1.81l0.8,0.07l1.15,1.1l2.26,-0.05l0.71,-0.83l2.78,-0.96l0.48,-1.13l1.6,-0.64l0.24,-0.47l-0.48,-0.82l-1.83,-0.19l-0.36,-3.22Z\", \"name\": \"Brazil\"}, \"BS\": {\"path\": \"M226.4,223.87l-0.48,-1.15l-0.84,-0.75l0.36,-1.11l0.95,1.95l0.01,1.06ZM225.56,216.43l-1.87,0.29l-0.04,-0.22l0.74,-0.14l1.17,0.06Z\", \"name\": \"Bahamas\"}, \"BY\": {\"path\": \"M493.84,128.32l0.29,0.7l0.49,0.23l1.19,-0.38l2.09,0.72l0.19,1.26l-0.45,1.24l1.57,2.26l0.89,0.59l0.17,0.81l1.58,0.56l0.4,0.5l-0.53,0.41l-1.87,-0.11l-0.73,0.38l-0.13,0.52l1.04,2.74l-1.91,0.26l-0.89,0.99l-0.11,1.18l-2.73,-0.04l-0.53,-0.62l-0.52,-0.08l-0.75,0.46l-0.91,-0.42l-1.92,-0.07l-2.75,-0.79l-2.6,-0.28l-2.0,0.07l-1.5,0.92l-0.67,0.07l-0.08,-1.22l-0.59,-1.19l1.36,-0.88l0.01,-1.35l-0.7,-1.41l-0.07,-1.0l2.16,-0.02l2.72,-1.3l0.75,-2.04l1.91,-1.04l0.2,-0.41l-0.19,-1.25l3.8,-1.78l2.3,0.77Z\", \"name\": \"Belarus\"}, \"BZ\": {\"path\": \"M198.03,244.38l0.1,-4.49l0.69,-0.06l0.74,-1.3l0.34,0.28l-0.4,1.3l0.17,0.58l-0.34,2.25l-1.3,1.42Z\", \"name\": \"Belize\"}, \"RU\": {\"path\": \"M491.55,115.25l2.55,-1.85l-0.01,-0.65l-2.2,-1.5l7.32,-6.76l1.03,-2.11l-0.13,-0.49l-3.46,-2.52l0.86,-2.7l-2.11,-2.81l1.56,-3.67l-2.77,-4.52l2.15,-2.99l-0.08,-0.55l-3.65,-2.73l0.3,-2.54l1.81,-0.37l4.26,-1.77l2.42,-1.45l4.06,2.61l6.79,1.04l9.34,4.85l1.78,1.88l0.14,2.46l-2.55,2.02l-3.9,1.06l-11.07,-3.14l-2.06,0.53l-0.13,0.7l3.94,2.94l0.31,5.86l0.26,0.36l5.14,2.24l0.58,-0.29l0.32,-1.94l-1.35,-1.78l1.13,-1.09l6.13,2.42l2.11,-0.98l0.18,-0.56l-1.51,-2.67l5.41,-3.76l2.07,0.22l2.26,1.41l0.57,-0.16l1.46,-2.87l-0.05,-0.44l-1.92,-2.32l1.12,-2.32l-1.32,-2.27l5.87,1.16l1.04,1.75l-2.59,0.43l-0.33,0.4l0.02,2.36l2.46,1.83l3.87,-0.91l0.86,-2.8l13.69,-5.65l0.99,0.11l-1.92,2.06l0.23,0.67l3.11,0.45l2.0,-1.48l4.56,-0.12l3.64,-1.73l2.65,2.44l0.56,-0.01l2.85,-2.88l-0.01,-0.57l-2.35,-2.29l0.9,-1.01l7.14,1.3l3.41,1.36l9.05,4.97l0.51,-0.11l1.67,-2.27l-0.05,-0.53l-2.43,-2.21l-0.06,-0.78l-0.34,-0.36l-2.52,-0.36l0.64,-1.93l-1.32,-3.46l-0.06,-1.21l4.48,-4.06l1.69,-4.29l1.6,-0.81l6.23,1.18l0.44,2.21l-2.29,3.64l0.06,0.5l1.47,1.39l0.76,3.0l-0.56,6.03l2.69,2.82l-0.96,2.57l-4.86,5.95l0.23,0.64l2.86,0.61l0.42,-0.17l0.93,-1.4l2.64,-1.03l0.87,-2.24l2.09,-1.96l0.07,-0.5l-1.36,-2.28l1.09,-2.69l-0.32,-0.55l-2.47,-0.33l-0.5,-2.06l1.94,-4.38l-0.06,-0.42l-2.96,-3.4l4.12,-2.88l0.16,-0.4l-0.51,-2.93l0.54,-0.05l1.13,2.25l-0.96,4.35l0.27,0.47l2.68,0.84l0.5,-0.51l-1.02,-2.99l3.79,-1.66l5.01,-0.24l4.53,2.61l0.48,-0.06l0.07,-0.48l-2.18,-3.82l-0.23,-4.67l3.98,-0.9l5.97,0.21l5.49,-0.64l0.27,-0.65l-1.83,-2.31l2.56,-2.9l2.87,-0.17l4.8,-2.47l6.54,-0.67l1.03,-1.42l6.25,-0.45l2.32,1.11l5.53,-2.7l4.5,0.08l0.39,-0.28l0.66,-2.15l2.26,-2.12l5.69,-2.11l3.21,1.29l-2.46,0.94l-0.25,0.42l0.34,0.35l5.41,0.77l0.61,2.33l0.58,0.25l2.2,-1.22l7.13,0.07l5.51,2.47l1.79,1.72l-0.53,2.24l-9.16,4.15l-1.97,1.52l0.16,0.71l6.77,1.91l2.16,-0.78l1.13,2.74l0.67,0.11l1.01,-1.15l3.81,-0.73l7.7,0.77l0.54,1.99l0.36,0.29l10.47,0.71l0.43,-0.38l0.13,-3.23l4.87,0.78l3.95,-0.02l3.83,2.4l1.03,2.71l-1.35,1.79l0.02,0.5l3.15,3.64l4.07,1.96l0.53,-0.18l2.23,-4.47l3.95,1.93l4.16,-1.21l4.73,1.39l2.05,-1.26l3.94,0.62l0.43,-0.55l-1.68,-4.02l2.89,-1.8l22.31,3.03l2.16,2.75l6.55,3.51l10.29,-0.81l4.82,0.73l1.85,1.66l-0.29,3.08l0.25,0.41l3.08,1.26l3.56,-0.88l4.35,-0.11l4.8,0.87l4.57,-0.47l4.23,3.79l0.43,0.07l3.1,-1.4l0.16,-0.6l-1.88,-2.62l0.85,-1.52l7.71,1.21l5.22,-0.26l7.09,2.09l9.59,5.22l6.35,4.11l-0.2,2.38l1.88,1.41l0.6,-0.42l-0.48,-2.53l6.15,0.57l4.4,3.51l-1.97,1.43l-4.0,0.41l-0.36,0.39l-0.06,3.79l-0.74,0.62l-2.07,-0.11l-1.91,-1.39l-3.14,-1.11l-0.78,-1.85l-2.72,-0.68l-2.63,0.49l-1.04,-1.1l0.46,-1.31l-0.5,-0.51l-3.0,0.98l-0.22,0.58l0.99,1.7l-1.21,1.48l-3.04,1.68l-3.12,-0.28l-0.4,0.23l0.09,0.46l2.2,2.09l1.46,3.2l1.15,1.1l0.24,1.33l-0.42,0.67l-4.63,-0.77l-6.96,2.9l-2.19,0.44l-7.6,5.06l-0.84,1.45l-3.61,-2.37l-6.24,2.82l-0.94,-1.15l-0.53,-0.08l-2.28,1.52l-3.2,-0.49l-0.44,0.27l-0.78,2.37l-3.05,3.78l0.09,1.47l0.29,0.36l2.54,0.72l-0.29,4.53l-1.97,0.11l-0.35,0.26l-1.07,2.94l0.8,1.45l-3.91,1.58l-1.05,3.95l-3.48,0.77l-0.3,0.3l-0.72,3.29l-3.09,2.65l-0.7,-1.74l-2.44,-12.44l1.16,-4.71l2.04,-2.06l0.22,-1.64l3.8,-0.86l4.46,-4.61l4.28,-3.81l4.48,-3.01l2.17,-5.63l-0.42,-0.54l-3.04,0.33l-1.77,3.31l-5.86,3.86l-1.86,-4.25l-0.45,-0.23l-6.46,1.3l-6.47,6.44l-0.01,0.55l1.58,1.74l-8.24,1.17l0.15,-2.2l-0.34,-0.42l-3.89,-0.56l-3.25,1.81l-7.62,-0.62l-8.45,1.19l-17.71,15.41l0.22,0.7l3.74,0.41l1.36,2.17l2.43,0.76l1.88,-1.68l2.4,0.2l3.4,3.54l0.08,2.6l-1.95,3.42l-0.21,3.9l-1.1,5.06l-3.71,4.54l-0.87,2.21l-8.29,8.89l-3.19,1.7l-1.32,0.03l-1.45,-1.36l-0.49,-0.04l-2.27,1.5l0.41,-3.65l-0.59,-2.47l1.75,-0.89l2.91,0.53l0.42,-0.2l1.68,-3.03l0.87,-3.46l0.97,-1.18l1.32,-2.88l-0.45,-0.56l-4.14,0.95l-2.19,1.25l-3.41,-0.0l-1.06,-2.93l-2.97,-2.3l-4.28,-1.06l-1.75,-5.07l-2.66,-5.01l-2.29,-1.29l-3.75,-1.01l-3.44,0.08l-3.18,0.62l-2.24,1.77l0.05,0.66l1.18,0.69l0.02,1.43l-1.33,1.05l-2.26,3.51l-0.04,1.43l-3.16,1.84l-2.82,-1.16l-3.01,0.23l-1.35,-1.07l-1.5,-0.35l-3.9,2.31l-3.22,0.52l-2.27,0.79l-3.05,-0.51l-2.21,0.03l-1.48,-1.6l-2.6,-1.63l-2.63,-0.43l-5.46,1.01l-3.23,-1.25l-0.72,-2.57l-5.2,-1.24l-2.75,-1.36l-0.5,0.12l-2.59,3.45l0.84,2.1l-2.06,1.93l-3.41,-0.77l-2.42,-0.12l-1.83,-1.54l-2.53,-0.05l-2.42,-0.98l-3.86,1.57l-4.72,2.78l-3.3,0.75l-1.55,-1.92l-3.0,0.41l-1.11,-1.33l-1.62,-0.59l-1.31,-1.94l-1.38,-0.6l-3.7,0.79l-3.31,-1.83l-0.51,0.11l-0.99,1.29l-5.29,-8.05l-2.96,-2.48l0.65,-0.77l0.01,-0.51l-0.5,-0.11l-6.2,3.21l-1.84,0.15l0.15,-1.39l-0.26,-0.42l-3.22,-1.17l-2.46,0.7l-0.69,-3.16l-0.32,-0.31l-4.5,-0.75l-2.47,1.47l-6.19,1.27l-1.29,0.86l-9.51,1.3l-1.15,1.17l-0.03,0.53l1.47,1.9l-1.89,0.69l-0.22,0.56l0.31,0.6l-2.11,1.44l0.03,0.68l3.75,2.12l-0.39,0.98l-3.23,-0.13l-0.86,0.86l-3.09,-1.59l-3.97,0.07l-2.66,1.35l-8.32,-3.56l-4.07,0.06l-5.39,3.68l-0.39,2.0l-2.03,-1.5l-0.59,0.13l-2.0,3.59l0.57,0.93l-1.28,2.16l0.06,0.48l2.13,2.17l1.95,0.04l1.37,1.82l-0.23,1.46l0.25,0.43l0.83,0.33l-0.8,1.31l-2.49,0.62l-2.49,3.2l0.0,0.49l2.17,2.78l-0.15,2.18l2.5,3.24l-1.58,1.59l-0.7,-0.13l-1.63,-1.72l-2.29,-0.84l-0.94,-1.31l-2.34,-0.63l-1.48,0.4l-0.43,-0.47l-3.51,-1.48l-5.76,-1.01l-0.45,0.19l-2.89,-2.34l-2.9,-1.2l-1.53,-1.29l1.29,-0.43l2.08,-2.61l-0.05,-0.55l-0.89,-0.79l3.05,-1.06l0.27,-0.42l-0.07,-0.69l-0.49,-0.35l-1.73,0.39l0.04,-0.68l1.04,-0.72l2.66,-0.48l0.4,-1.32l-0.5,-1.6l0.92,-1.54l0.03,-1.17l-0.29,-0.37l-3.69,-1.06l-1.41,0.02l-1.42,-1.41l-2.19,0.38l-2.77,-1.01l-0.03,-0.59l-0.89,-1.43l-2.0,-0.32l-0.11,-0.54l0.49,-0.53l0.01,-0.53l-1.6,-1.9l-3.58,0.02l-0.88,0.73l-0.46,-0.07l-1.0,-2.79l2.22,-0.02l0.97,-0.74l0.07,-0.57l-0.9,-1.04l-1.35,-0.48l-0.11,-0.7l-0.95,-0.58l-1.38,-1.99l0.46,-0.98l-0.51,-1.96l-2.45,-0.84l-1.21,0.3l-0.46,-0.76l-2.46,-0.83l-0.72,-1.87l-0.21,-1.69l-0.99,-0.85l0.85,-1.17l-0.7,-3.21l1.66,-1.97l-0.16,-0.79ZM749.2,170.72l-0.6,0.4l-0.13,0.16l-0.01,-0.51l0.74,-0.05ZM874.85,67.94l-5.63,0.48l-0.26,-0.84l3.15,-1.89l1.94,0.01l3.19,1.16l-2.39,1.09ZM797.39,48.49l-2.0,1.36l-3.8,-0.42l-4.25,-1.8l0.35,-0.97l9.69,1.83ZM783.67,46.12l-1.63,3.09l-8.98,-0.13l-4.09,1.14l-4.54,-2.97l1.16,-3.01l3.05,-0.89l6.5,0.22l8.54,2.56ZM778.2,134.98l-0.56,-0.9l0.27,-0.12l0.29,1.01ZM778.34,135.48l0.94,3.53l-0.05,3.38l1.05,3.39l2.18,5.0l-2.89,-0.83l-0.49,0.26l-1.54,4.65l2.42,3.5l-0.04,1.13l-1.24,-1.24l-0.61,0.06l-1.09,1.61l-0.28,-1.61l0.27,-3.1l-0.28,-3.4l0.58,-2.47l0.11,-4.39l-1.46,-3.36l0.21,-4.32l2.15,-1.46l0.07,-0.34ZM771.95,56.61l1.76,-1.42l2.89,-0.42l3.28,1.71l0.14,0.6l-3.27,0.03l-4.81,-0.5ZM683.76,31.09l-13.01,1.93l4.03,-6.35l1.82,-0.56l1.73,0.34l5.99,2.98l-0.56,1.66ZM670.85,27.93l-5.08,0.64l-6.86,-1.57l-3.99,-2.05l-2.1,-4.16l-2.6,-0.87l5.72,-3.5l5.2,-1.28l4.69,2.85l5.59,5.4l-0.56,4.53ZM564.15,68.94l-0.64,0.17l-7.85,-0.57l-0.86,-2.04l-4.28,-1.17l-0.28,-1.94l2.27,-0.89l0.25,-0.39l-0.08,-2.38l4.81,-3.97l-0.15,-0.7l-1.47,-0.38l5.3,-3.81l0.15,-0.44l-0.58,-1.94l5.28,-2.51l8.21,-3.27l8.28,-0.96l4.35,-1.94l4.6,-0.64l1.36,1.61l-1.34,1.28l-16.43,4.94l-7.97,4.88l-7.74,9.63l0.66,4.14l4.16,3.27ZM548.81,18.48l-5.5,1.18l-0.58,1.02l-2.59,0.84l-2.13,-1.07l1.12,-1.42l-0.3,-0.65l-2.33,-0.07l1.68,-0.36l3.47,-0.06l0.42,1.29l0.66,0.16l1.38,-1.34l2.15,-0.88l2.94,1.01l-0.39,0.36ZM477.37,133.15l-4.08,0.05l-2.56,-0.32l0.33,-0.87l3.17,-1.03l3.24,0.96l-0.09,1.23Z\", \"name\": \"Russia\"}, \"RW\": {\"path\": \"M497.0,288.25l0.71,1.01l-0.11,1.09l-1.63,0.03l-1.04,1.39l-0.83,-0.11l0.51,-1.2l0.08,-1.34l0.42,-0.41l0.7,0.14l1.19,-0.61Z\", \"name\": \"Rwanda\"}, \"RS\": {\"path\": \"M469.4,163.99l0.42,-0.5l-0.01,-0.52l-1.15,-1.63l1.43,-0.62l1.33,0.12l1.17,1.06l0.46,1.13l1.34,0.64l0.35,1.35l1.46,0.9l0.76,-0.29l0.2,0.69l-0.48,0.78l0.22,1.12l1.05,1.22l-0.77,0.8l-0.37,1.52l-1.21,0.08l0.24,-0.64l-0.39,-0.54l-2.08,-1.64l-0.9,0.05l-0.48,0.94l-2.12,-1.37l0.53,-1.6l-1.11,-1.37l0.51,-1.1l-0.41,-0.57Z\", \"name\": \"Serbia\"}, \"LT\": {\"path\": \"M486.93,129.3l0.17,1.12l-1.81,0.98l-0.72,2.02l-2.47,1.18l-2.1,-0.02l-0.73,-1.05l-1.06,-0.3l-0.09,-1.87l-3.56,-1.13l-0.43,-2.36l2.48,-0.94l4.12,0.22l2.25,-0.31l0.52,0.69l1.24,0.21l2.19,1.56Z\", \"name\": \"Lithuania\"}, \"LU\": {\"path\": \"M436.08,149.45l-0.48,-0.07l0.3,-1.28l0.27,0.4l-0.09,0.96Z\", \"name\": \"Luxembourg\"}, \"LR\": {\"path\": \"M399.36,265.97l0.18,1.54l-0.48,0.99l0.08,0.47l2.47,1.8l-0.33,2.8l-2.65,-1.13l-5.78,-4.61l0.58,-1.32l2.1,-2.33l0.86,-0.22l0.77,1.14l-0.14,0.85l0.59,0.87l1.0,0.14l0.76,-0.99Z\", \"name\": \"Liberia\"}, \"RO\": {\"path\": \"M487.53,154.23l0.6,0.24l2.87,3.98l-0.17,2.69l0.45,1.42l1.32,0.81l1.35,-0.42l0.76,0.36l0.02,0.31l-0.83,0.45l-0.59,-0.22l-0.54,0.3l-0.62,3.3l-1.0,-0.22l-2.07,-1.13l-2.95,0.71l-1.25,0.76l-3.51,-0.15l-1.89,-0.47l-0.87,0.16l-0.82,-1.3l0.29,-0.26l-0.06,-0.64l-1.09,-0.34l-0.56,0.5l-1.05,-0.64l-0.39,-1.39l-1.36,-0.65l-0.35,-1.0l-0.83,-0.75l1.54,-0.54l2.66,-4.21l2.4,-1.24l2.96,0.34l1.48,0.73l0.79,-0.45l1.78,-0.3l0.75,-0.74l0.79,0.0Z\", \"name\": \"Romania\"}, \"GW\": {\"path\": \"M386.23,253.6l-0.29,0.84l0.15,0.6l-2.21,0.59l-0.86,0.96l-1.04,-0.83l-1.09,-0.23l-0.54,-1.06l-0.66,-0.49l2.41,-0.48l4.13,0.1Z\", \"name\": \"Guinea-Bissau\"}, \"GT\": {\"path\": \"M195.08,249.77l-2.48,-0.37l-1.03,-0.45l-1.14,-0.89l0.3,-0.99l-0.24,-0.68l0.96,-1.66l2.98,-0.01l0.4,-0.37l-0.19,-1.28l-1.67,-1.4l0.51,-0.4l0.0,-1.05l3.85,0.02l-0.21,4.53l0.4,0.43l1.46,0.38l-1.48,0.98l-0.35,0.7l0.12,0.57l-2.2,1.96Z\", \"name\": \"Guatemala\"}, \"GR\": {\"path\": \"M487.07,174.59l-0.59,1.43l-0.37,0.21l-2.84,-0.35l-3.03,0.77l-0.18,0.68l1.28,1.23l-0.61,0.23l-1.14,0.0l-1.2,-1.39l-0.63,0.03l-0.53,1.01l0.56,1.76l1.03,1.19l-0.56,0.38l-0.05,0.62l2.52,2.12l0.02,0.87l-1.78,-0.59l-0.48,0.56l0.5,1.0l-1.07,0.2l-0.3,0.53l0.75,2.01l-0.98,0.02l-1.84,-1.12l-1.37,-4.2l-2.21,-2.95l-0.11,-0.56l1.04,-1.28l0.2,-0.95l0.85,-0.66l0.03,-0.46l1.32,-0.21l1.01,-0.64l1.22,0.05l0.65,-0.56l2.26,-0.0l1.82,-0.75l1.85,1.0l2.28,-0.28l0.35,-0.39l0.01,-0.77l0.34,0.22ZM480.49,192.16l0.58,0.4l-0.68,-0.12l0.11,-0.28ZM482.52,192.82l2.51,0.06l0.24,0.32l-1.99,0.13l-0.77,-0.51Z\", \"name\": \"Greece\"}, \"GQ\": {\"path\": \"M448.79,279.62l0.02,2.22l-4.09,0.0l0.69,-2.27l3.38,0.05Z\", \"name\": \"Eq. Guinea\"}, \"GY\": {\"path\": \"M277.42,270.07l-0.32,1.83l-1.32,0.57l-0.23,0.46l-0.28,2.0l1.11,1.82l0.83,0.19l0.32,1.25l1.13,1.62l-1.21,-0.19l-1.08,0.71l-1.77,0.5l-0.44,0.46l-0.86,-0.09l-1.32,-1.01l-0.77,-2.27l0.36,-1.9l0.68,-1.23l-0.57,-1.17l-0.74,-0.43l0.12,-1.16l-0.9,-0.69l-1.1,0.09l-1.31,-1.48l0.53,-0.72l-0.04,-0.84l1.99,-0.86l0.05,-0.59l-0.71,-0.78l0.14,-0.57l1.66,-1.24l1.36,0.77l1.41,1.49l0.06,1.15l0.37,0.38l0.8,0.05l2.06,1.86Z\", \"name\": \"Guyana\"}, \"GE\": {\"path\": \"M521.71,168.93l5.29,0.89l4.07,2.01l1.41,-0.44l2.07,0.56l0.68,1.1l1.07,0.55l-0.12,0.59l0.98,1.29l-1.01,-0.13l-1.81,-0.83l-0.94,0.47l-3.23,0.43l-2.29,-1.39l-2.33,0.05l0.21,-0.97l-0.76,-2.26l-1.45,-1.12l-1.43,-0.39l-0.41,-0.42Z\", \"name\": \"Georgia\"}, \"GB\": {\"path\": \"M412.61,118.72l-2.19,3.22l-0.0,0.45l5.13,-0.3l-0.53,2.37l-2.2,3.12l0.29,0.63l2.37,0.21l2.33,4.3l1.76,0.69l2.2,5.12l2.94,0.77l-0.23,1.62l-1.15,0.88l-0.1,0.52l0.82,1.42l-1.86,1.43l-3.3,-0.02l-4.12,0.87l-1.04,-0.58l-0.47,0.06l-1.51,1.41l-2.12,-0.34l-1.86,1.18l-0.6,-0.29l3.19,-3.0l2.16,-0.69l0.28,-0.41l-0.34,-0.36l-3.73,-0.53l-0.4,-0.76l2.2,-0.87l0.17,-0.61l-1.26,-1.67l0.36,-1.7l3.38,0.28l0.43,-0.33l0.37,-1.99l-1.79,-2.49l-3.11,-0.72l-0.38,-0.59l0.79,-1.35l-0.04,-0.46l-0.82,-0.97l-0.61,0.01l-0.68,0.84l-0.1,-2.34l-1.23,-1.88l0.85,-3.47l1.77,-2.68l1.85,0.26l2.17,-0.22ZM406.26,132.86l-1.01,1.77l-1.57,-0.59l-1.16,0.01l0.37,-1.54l-0.39,-1.39l1.45,-0.1l2.3,1.84Z\", \"name\": \"United Kingdom\"}, \"GA\": {\"path\": \"M453.24,279.52l-0.08,0.98l0.7,1.29l2.36,0.24l-0.98,2.63l1.18,1.79l0.25,1.78l-0.29,1.52l-0.6,0.93l-1.84,-0.09l-1.23,-1.11l-0.66,0.23l-0.15,0.84l-1.42,0.26l-1.02,0.7l-0.11,0.52l0.77,1.35l-1.34,0.97l-3.94,-4.3l-1.44,-2.45l0.06,-0.6l0.54,-0.81l1.05,-3.46l4.17,-0.07l0.4,-0.4l-0.02,-2.66l2.39,0.21l1.25,-0.27Z\", \"name\": \"Gabon\"}, \"GN\": {\"path\": \"M391.8,254.11l0.47,0.8l1.11,-0.32l0.98,0.7l1.07,0.2l2.26,-1.22l0.64,0.44l1.13,1.56l-0.48,1.4l0.8,0.3l-0.08,0.48l0.46,0.68l-0.35,1.36l1.05,2.61l-1.0,0.69l0.03,1.41l-0.72,-0.06l-1.08,1.0l-0.24,-0.27l0.07,-1.11l-1.05,-1.54l-1.79,0.21l-0.35,-2.01l-1.6,-2.18l-2.0,-0.0l-1.31,0.54l-1.95,2.18l-1.86,-2.19l-1.2,-0.78l-0.3,-1.11l-0.8,-0.85l0.65,-0.72l0.81,-0.03l1.64,-0.8l0.23,-1.87l2.67,0.64l0.89,-0.3l1.21,0.15Z\", \"name\": \"Guinea\"}, \"GM\": {\"path\": \"M379.31,251.39l0.1,-0.35l2.43,-0.07l0.74,-0.61l0.51,-0.03l0.77,0.49l-1.03,-0.3l-1.87,0.9l-1.65,-0.04ZM384.03,250.91l0.91,0.05l0.75,-0.24l-0.59,0.31l-1.08,-0.13Z\", \"name\": \"Gambia\"}, \"GL\": {\"path\": \"M353.02,1.2l14.69,4.67l-3.68,1.89l-22.97,0.86l-0.36,0.27l0.12,0.43l1.55,1.18l8.79,-0.66l7.48,2.07l4.86,-1.77l1.66,1.73l-2.53,3.19l-0.01,0.48l0.46,0.15l6.35,-2.2l12.06,-2.31l7.24,1.13l1.09,1.99l-9.79,4.01l-1.44,1.32l-7.87,0.98l-0.35,0.41l0.38,0.38l5.07,0.24l-2.53,3.58l-2.07,3.81l0.08,6.05l2.57,3.11l-3.22,0.2l-4.12,1.66l-0.05,0.72l4.45,2.65l0.51,3.75l-2.3,0.4l-0.25,0.64l2.79,3.69l-4.82,0.31l-0.36,0.29l0.16,0.44l2.62,1.8l-0.59,1.22l-3.3,0.7l-3.45,0.01l-0.29,0.68l3.03,3.12l0.02,1.34l-4.4,-1.73l-1.72,1.35l0.15,0.66l3.31,1.15l3.13,2.71l0.81,3.16l-3.85,0.75l-4.89,-4.26l-0.47,-0.03l-0.17,0.44l0.79,2.86l-2.71,2.21l-0.13,0.44l0.37,0.27l8.73,0.34l-12.32,6.64l-7.24,1.48l-2.94,0.08l-2.69,1.75l-3.43,4.41l-5.24,2.84l-1.73,0.18l-7.12,2.1l-2.15,2.52l-0.13,2.99l-1.19,2.45l-4.01,3.09l-0.14,0.44l0.97,2.9l-2.28,6.48l-3.1,0.2l-3.83,-3.07l-4.86,-0.02l-2.25,-1.93l-1.7,-3.79l-4.3,-4.84l-1.21,-2.49l-0.44,-3.8l-3.32,-3.63l0.84,-2.86l-1.56,-1.7l2.28,-4.6l3.83,-1.74l1.03,-1.96l0.52,-3.47l-0.59,-0.41l-4.17,2.21l-2.07,0.58l-2.72,-1.28l-0.15,-2.71l0.85,-2.09l2.01,-0.06l5.06,1.2l0.46,-0.23l-0.14,-0.49l-6.54,-4.47l-2.67,0.55l-1.58,-0.86l2.56,-4.01l-0.03,-0.48l-1.5,-1.74l-4.98,-8.5l-3.13,-1.96l0.03,-1.88l-0.24,-0.37l-6.85,-3.02l-5.36,-0.38l-12.7,0.58l-2.78,-1.57l-3.66,-2.77l5.73,-1.45l5.0,-0.28l0.38,-0.38l-0.35,-0.41l-10.67,-1.38l-5.3,-2.06l0.25,-1.54l18.41,-5.26l1.22,-2.27l-0.25,-0.55l-6.14,-1.86l1.68,-1.77l8.55,-4.03l3.59,-0.63l0.3,-0.54l-0.88,-2.27l5.47,-1.47l7.65,-0.95l7.55,-0.05l3.04,1.85l6.48,-3.27l5.81,2.22l3.56,0.5l5.16,1.94l0.5,-0.21l-0.17,-0.52l-5.71,-3.13l0.28,-2.13l8.12,-3.6l8.7,0.28l3.35,-2.34l8.71,-0.6l19.93,0.8Z\", \"name\": \"Greenland\"}, \"KW\": {\"path\": \"M540.81,207.91l0.37,0.86l-0.17,0.76l0.6,1.53l-0.95,0.04l-0.82,-1.28l-1.57,-0.18l1.31,-1.88l1.22,0.17Z\", \"name\": \"Kuwait\"}, \"GH\": {\"path\": \"M420.53,257.51l-0.01,0.72l0.96,1.2l0.24,3.73l0.59,0.95l-0.51,2.1l0.19,1.41l1.02,2.21l-6.97,2.84l-1.8,-0.57l0.04,-0.89l-1.02,-2.04l0.61,-2.65l1.07,-2.32l-0.96,-6.47l5.01,0.07l0.94,-0.39l0.61,0.11Z\", \"name\": \"Ghana\"}, \"OM\": {\"path\": \"M568.09,230.93l-0.91,1.67l-1.22,0.04l-0.6,0.76l-0.41,1.51l0.27,1.58l-1.16,0.05l-1.56,0.97l-0.76,1.74l-1.62,0.05l-0.98,0.65l-0.17,1.15l-0.89,0.52l-1.49,-0.18l-2.4,0.94l-2.47,-5.4l7.35,-2.71l1.67,-5.23l-1.12,-2.09l0.05,-0.83l0.67,-1.0l0.07,-1.05l0.9,-0.42l-0.05,-2.07l0.7,-0.01l1.0,1.62l1.51,1.08l3.3,0.84l1.73,2.29l0.81,0.37l-1.23,2.35l-0.99,0.79Z\", \"name\": \"Oman\"}, \"_2\": {\"path\": \"M531.15,258.94l1.51,0.12l5.13,-0.95l5.3,-1.48l-0.01,4.4l-2.67,3.39l-1.85,0.01l-8.04,-2.94l-2.55,-3.17l1.12,-1.71l2.04,2.34Z\", \"name\": \"Somaliland\"}, \"_1\": {\"path\": \"M472.77,172.64l-1.08,-1.29l0.96,-0.77l0.29,-0.83l1.98,1.64l-0.36,0.67l-1.79,0.58Z\", \"name\": \"Kosovo\"}, \"_0\": {\"path\": \"M504.91,192.87l0.34,0.01l0.27,-0.07l-0.29,0.26l-0.31,-0.2Z\", \"name\": \"N. Cyprus\"}, \"JO\": {\"path\": \"M518.64,201.38l-5.14,1.56l-0.19,0.65l2.16,2.39l-0.89,1.14l-1.71,0.34l-1.71,1.8l-2.34,-0.37l1.21,-4.32l0.56,-4.07l2.8,0.94l4.46,-2.71l0.79,2.66Z\", \"name\": \"Jordan\"}, \"HR\": {\"path\": \"M455.59,162.84l1.09,0.07l-0.82,0.94l-0.27,-1.01ZM456.96,162.92l0.62,-0.41l1.73,0.45l0.42,-0.4l-0.01,-0.59l0.86,-0.52l0.2,-1.05l1.63,-0.68l2.57,1.68l2.07,0.6l0.87,-0.31l1.05,1.57l-0.52,0.63l-1.05,-0.56l-1.68,0.04l-2.1,-0.5l-1.29,0.06l-0.57,0.49l-0.59,-0.47l-0.62,0.16l-0.46,1.7l1.79,2.42l2.79,2.75l-1.18,-0.87l-2.21,-0.87l-1.67,-1.78l0.13,-0.63l-1.05,-1.19l-0.32,-1.27l-1.42,-0.43Z\", \"name\": \"Croatia\"}, \"HT\": {\"path\": \"M237.05,238.38l-1.16,0.43l-0.91,-0.55l0.05,-0.2l2.02,0.31ZM237.53,238.43l1.06,0.12l-0.05,0.01l-1.01,-0.12ZM239.25,238.45l0.79,-0.51l0.06,-0.62l-1.02,-1.0l0.02,-0.82l-0.3,-0.4l-0.93,-0.32l3.16,0.45l0.02,1.84l-0.48,0.34l-0.08,0.58l0.54,0.72l-1.78,-0.26Z\", \"name\": \"Haiti\"}, \"HU\": {\"path\": \"M462.08,157.89l0.65,-1.59l-0.09,-0.44l0.64,-0.0l0.39,-0.34l0.1,-0.69l1.75,0.87l2.32,-0.37l0.43,-0.66l3.49,-0.78l0.69,-0.78l0.57,-0.14l2.57,0.93l0.67,-0.23l1.03,0.65l0.08,0.37l-1.42,0.71l-2.59,4.14l-1.8,0.53l-1.68,-0.1l-2.74,1.23l-1.85,-0.54l-2.54,-1.66l-0.66,-1.1Z\", \"name\": \"Hungary\"}, \"HN\": {\"path\": \"M199.6,249.52l-1.7,-1.21l0.06,-0.94l3.04,-2.14l2.37,0.28l1.27,-0.09l1.1,-0.52l1.3,0.28l1.14,-0.25l1.38,0.37l2.23,1.37l-2.36,0.93l-1.23,-0.39l-0.88,1.3l-1.28,0.99l-0.98,-0.22l-0.42,0.52l-0.96,0.05l-0.36,0.41l0.04,0.88l-0.52,0.6l-0.3,0.04l-0.3,-0.55l-0.66,-0.31l0.11,-0.67l-0.48,-0.65l-0.87,-0.26l-0.73,0.2Z\", \"name\": \"Honduras\"}, \"PR\": {\"path\": \"M256.17,238.73l-0.26,0.27l-2.83,0.05l-0.07,-0.55l1.95,-0.1l1.22,0.33Z\", \"name\": \"Puerto Rico\"}, \"PS\": {\"path\": \"M509.21,203.07l0.1,-0.06l-0.02,0.03l-0.09,0.03ZM509.36,202.91l-0.02,-0.63l-0.33,-0.16l0.31,-1.09l0.24,0.1l-0.2,1.78Z\", \"name\": \"Palestine\"}, \"PT\": {\"path\": \"M401.84,187.38l-0.64,0.47l-1.13,-0.35l-0.91,0.17l0.28,-1.78l-0.24,-1.78l-1.25,-0.56l-0.45,-0.84l0.17,-1.66l1.01,-1.18l0.69,-2.92l-0.04,-1.39l-0.59,-1.9l1.3,-0.85l0.84,1.35l3.1,-0.3l0.46,0.99l-1.05,0.94l-0.03,2.16l-0.41,0.57l-0.08,1.1l-0.79,0.18l-0.26,0.59l0.91,1.6l-0.63,1.75l0.76,1.09l-1.1,1.52l0.07,1.05Z\", \"name\": \"Portugal\"}, \"PY\": {\"path\": \"M274.9,336.12l0.74,1.52l-0.16,3.45l0.32,0.41l2.64,0.5l1.11,-0.47l1.4,0.59l0.36,0.6l0.53,3.42l1.27,0.4l0.98,-0.38l0.51,0.27l-0.0,1.18l-1.21,5.32l-2.09,1.9l-1.8,0.4l-4.71,-0.98l2.2,-3.63l-0.32,-1.5l-2.78,-1.28l-3.03,-1.94l-2.07,-0.44l-4.34,-4.06l0.91,-2.9l0.08,-1.42l1.07,-2.04l4.13,-0.72l2.18,0.03l2.05,1.17l0.03,0.59Z\", \"name\": \"Paraguay\"}, \"PA\": {\"path\": \"M213.8,263.68l0.26,-1.52l-0.36,-0.26l-0.01,-0.49l0.44,-0.1l0.93,1.4l1.26,0.03l0.77,0.49l1.38,-0.23l2.51,-1.11l0.86,-0.72l3.45,0.85l1.4,1.18l0.41,1.74l-0.21,0.34l-0.53,-0.12l-0.47,0.29l-0.16,0.6l-0.68,-1.28l0.45,-0.49l-0.19,-0.66l-0.47,-0.13l-0.54,-0.84l-1.5,-0.75l-1.1,0.16l-0.75,0.99l-1.62,0.84l-0.18,0.96l0.85,0.97l-0.58,0.45l-0.69,0.08l-0.34,-1.18l-1.27,0.03l-0.71,-1.05l-2.59,-0.46Z\", \"name\": \"Panama\"}, \"PG\": {\"path\": \"M808.58,298.86l2.54,2.56l-0.13,0.26l-0.33,0.12l-0.87,-0.78l-1.22,-2.16ZM801.41,293.04l0.5,0.29l0.26,0.27l-0.49,-0.35l-0.27,-0.21ZM803.17,294.58l0.59,0.5l0.08,1.06l-0.29,-0.91l-0.38,-0.65ZM796.68,298.41l0.52,0.75l1.43,-0.19l2.27,-1.81l-0.01,-1.43l1.12,0.16l-0.04,1.1l-0.7,1.28l-1.12,0.18l-0.62,0.79l-2.46,1.11l-1.17,-0.0l-3.08,-1.25l3.41,0.0l0.45,-0.68ZM789.15,303.55l2.31,1.8l1.59,2.61l1.34,0.13l-0.06,0.66l0.31,0.43l1.06,0.24l0.06,0.65l2.25,1.05l-1.22,0.13l-0.72,-0.63l-4.56,-0.65l-3.22,-2.87l-1.49,-2.34l-3.27,-1.1l-2.38,0.72l-1.59,0.86l-0.2,0.42l0.27,1.55l-1.55,0.68l-1.36,-0.4l-2.21,-0.09l-0.08,-15.41l8.39,2.93l2.95,2.4l0.6,1.64l4.02,1.49l0.31,0.68l-1.76,0.21l-0.33,0.52l0.55,1.68Z\", \"name\": \"Papua New Guinea\"}, \"PE\": {\"path\": \"M244.96,295.21l-1.26,-0.07l-0.57,0.42l-1.93,0.45l-2.98,1.75l-0.36,1.36l-0.58,0.8l0.12,1.37l-1.24,0.59l-0.22,1.22l-0.62,0.84l1.04,2.27l1.28,1.44l-0.41,0.84l0.32,0.57l1.48,0.13l1.16,1.37l2.21,0.07l1.63,-1.08l-0.13,3.02l0.3,0.4l1.14,0.29l1.31,-0.34l1.9,3.59l-0.48,0.85l-0.17,3.85l-0.94,1.59l0.35,0.75l-0.47,1.07l0.98,1.97l-2.1,3.82l-0.98,0.5l-2.17,-1.28l-0.39,-1.16l-4.95,-2.58l-4.46,-2.79l-1.84,-1.51l-0.91,-1.84l0.3,-0.96l-2.11,-3.33l-4.82,-9.68l-1.04,-1.2l-0.87,-1.94l-3.4,-2.48l0.58,-1.18l-1.13,-2.23l0.66,-1.49l1.45,-1.15l-0.6,0.98l0.07,0.92l0.47,0.36l1.74,0.03l0.97,1.17l0.54,0.07l1.42,-1.03l0.6,-1.84l1.42,-2.02l3.04,-1.04l2.73,-2.62l0.86,-1.74l-0.1,-1.87l1.44,1.02l0.9,1.25l1.06,0.59l1.7,2.73l1.86,0.31l1.45,-0.61l0.96,0.39l1.36,-0.19l1.45,0.89l-1.4,2.21l0.31,0.61l0.59,0.05l0.47,0.5Z\", \"name\": \"Peru\"}, \"PK\": {\"path\": \"M615.09,192.34l-1.83,1.81l-2.6,0.39l-3.73,-0.68l-1.58,1.33l-0.09,0.42l1.77,4.39l1.7,1.23l-1.69,1.27l-0.12,2.14l-2.33,2.64l-1.6,2.8l-2.46,2.67l-3.03,-0.07l-2.76,2.83l0.05,0.6l1.5,1.11l0.26,1.9l1.44,1.5l0.37,1.68l-5.01,-0.01l-1.78,1.7l-1.42,-0.52l-0.76,-1.87l-2.27,-2.15l-11.61,0.86l0.71,-2.34l3.43,-1.32l0.25,-0.44l-0.21,-1.24l-1.2,-0.65l-0.28,-2.46l-2.29,-1.14l-1.28,-1.94l2.82,0.94l2.62,-0.38l1.42,0.33l0.76,-0.56l1.71,0.19l3.25,-1.14l0.27,-0.36l0.08,-2.19l1.18,-1.32l1.68,0.0l0.58,-0.82l1.6,-0.3l1.19,0.16l0.98,-0.78l0.02,-1.88l0.93,-1.47l1.48,-0.66l0.19,-0.55l-0.66,-1.25l2.04,-0.11l0.69,-1.01l-0.02,-1.16l1.11,-1.06l-0.17,-1.78l-0.49,-1.03l1.15,-0.98l5.42,-0.91l2.6,-0.82l1.6,1.16l0.97,2.34l3.45,0.97Z\", \"name\": \"Pakistan\"}, \"PH\": {\"path\": \"M737.01,263.84l0.39,2.97l-0.44,1.18l-0.55,-1.53l-0.67,-0.14l-1.17,1.28l0.65,2.09l-0.42,0.69l-2.48,-1.23l-0.57,-1.49l0.65,-1.03l-0.1,-0.54l-1.59,-1.19l-0.56,0.08l-0.65,0.87l-1.23,0.0l-1.58,0.97l0.83,-1.8l2.56,-1.42l0.65,0.84l0.45,0.13l1.9,-0.69l0.56,-1.11l1.5,-0.06l0.38,-0.43l-0.09,-1.19l1.21,0.71l0.36,2.02ZM733.59,256.58l0.05,0.75l0.08,0.26l-0.8,-0.42l-0.18,-0.71l0.85,0.12ZM734.08,256.1l-0.12,-1.12l-1.0,-1.27l1.36,0.03l0.53,0.73l0.51,2.04l-1.27,-0.4ZM733.76,257.68l0.38,0.98l-0.32,0.15l-0.07,-1.13ZM724.65,238.43l1.46,0.7l0.72,-0.31l-0.32,1.17l0.79,1.71l-0.57,1.84l-1.53,1.04l-0.39,2.25l0.56,2.04l1.63,0.57l1.16,-0.27l2.71,1.23l-0.19,1.08l0.76,0.84l-0.08,0.36l-1.4,-0.9l-0.88,-1.27l-0.66,0.0l-0.38,0.55l-1.6,-1.31l-2.15,0.36l-0.87,-0.39l0.07,-0.61l0.66,-0.55l-0.01,-0.62l-0.75,-0.59l-0.72,0.44l-0.74,-0.87l-0.39,-2.49l0.32,0.27l0.66,-0.28l0.26,-3.97l0.7,-2.02l1.14,0.0ZM731.03,258.87l-0.88,0.85l-1.19,1.94l-1.05,-1.19l0.93,-1.1l0.32,-1.47l0.52,-0.06l-0.27,1.15l0.22,0.45l0.49,-0.12l1.0,-1.32l-0.08,0.85ZM726.83,255.78l0.83,0.38l1.17,-0.0l-0.02,0.48l-2.0,1.4l0.03,-2.26ZM724.81,252.09l-0.38,1.27l-1.42,-1.95l1.2,0.05l0.6,0.63ZM716.55,261.82l1.1,-0.95l0.03,-0.03l-0.28,0.36l-0.85,0.61ZM719.22,259.06l0.04,-0.06l0.8,-1.53l0.16,0.75l-1.0,0.84Z\", \"name\": \"Philippines\"}, \"PL\": {\"path\": \"M468.44,149.42l-1.11,-1.54l-1.86,-0.33l-0.48,-1.05l-1.72,-0.37l-0.65,0.69l-0.72,-0.36l0.11,-0.61l-0.33,-0.46l-1.75,-0.27l-1.04,-0.93l-0.94,-1.94l0.16,-1.22l-0.62,-1.8l-0.78,-1.07l0.57,-1.04l-0.48,-1.43l1.41,-0.83l6.91,-2.71l2.14,0.5l0.52,0.91l5.51,0.44l4.55,-0.05l1.07,0.31l0.48,0.84l0.15,1.58l0.65,1.2l-0.01,0.99l-1.27,0.58l-0.19,0.54l0.73,1.48l0.08,1.55l1.2,2.76l-0.17,0.58l-1.23,0.44l-2.27,2.72l0.18,0.95l-1.97,-1.03l-1.98,0.4l-1.36,-0.28l-1.24,0.58l-1.07,-0.97l-1.16,0.24Z\", \"name\": \"Poland\"}, \"ZM\": {\"path\": \"M481.47,313.3l0.39,0.31l2.52,0.14l0.99,1.17l2.01,0.35l1.4,-0.64l0.69,1.17l1.78,0.33l1.84,2.35l2.23,0.18l0.4,-0.43l-0.21,-2.74l-0.62,-0.3l-0.48,0.32l-1.98,-1.17l0.72,-5.29l-0.51,-1.18l0.57,-1.3l3.68,-0.62l0.26,0.63l1.21,0.63l0.9,-0.22l2.16,0.67l1.33,0.71l1.07,1.02l0.56,1.87l-0.88,2.7l0.43,2.09l-0.73,0.87l-0.76,2.37l0.59,0.68l-6.6,1.83l-0.29,0.44l0.19,1.45l-1.68,0.35l-1.43,1.02l-0.38,0.87l-0.87,0.26l-3.48,3.69l-4.16,-0.53l-1.52,-1.0l-1.77,-0.13l-1.83,0.52l-3.04,-3.4l0.11,-7.59l4.82,0.03l0.39,-0.49l-0.18,-0.76l0.33,-0.83l-0.4,-1.36l0.24,-1.05Z\", \"name\": \"Zambia\"}, \"EH\": {\"path\": \"M384.42,230.28l0.25,-0.79l1.06,-1.29l0.8,-3.51l3.38,-2.78l0.7,-1.81l0.06,4.84l-1.98,0.2l-0.94,1.59l0.39,3.56l-3.7,-0.01ZM392.01,218.1l0.7,-1.8l1.77,-0.24l2.09,0.34l0.95,-0.62l1.28,-0.07l-0.0,2.51l-6.79,-0.12Z\", \"name\": \"W. Sahara\"}, \"EE\": {\"path\": \"M485.71,115.04l2.64,0.6l2.56,0.11l-1.6,1.91l0.61,3.54l-0.81,0.87l-1.78,-0.01l-3.22,-1.76l-1.8,0.45l0.21,-1.53l-0.58,-0.41l-0.69,0.34l-1.26,-1.03l-0.17,-1.63l2.83,-0.92l3.05,-0.52Z\", \"name\": \"Estonia\"}, \"EG\": {\"path\": \"M492.06,205.03l1.46,0.42l2.95,-1.64l2.04,-0.21l1.53,0.3l0.59,1.19l0.69,0.04l0.41,-0.64l1.81,0.58l1.95,0.16l1.04,-0.51l1.42,4.08l-2.03,4.54l-1.66,-1.77l-1.76,-3.85l-0.64,-0.12l-0.36,0.67l1.04,2.88l3.44,6.95l1.78,3.04l2.03,2.65l-0.36,0.53l0.23,2.01l2.7,2.19l-28.41,0.0l0.0,-18.96l-0.73,-2.2l0.59,-1.56l-0.32,-1.26l0.68,-0.99l3.06,-0.04l4.82,1.52Z\", \"name\": \"Egypt\"}, \"ZA\": {\"path\": \"M467.14,373.21l-0.13,-1.96l-0.68,-1.56l0.7,-0.68l-0.13,-2.33l-4.56,-8.19l0.77,-0.86l0.6,0.45l0.69,1.31l2.83,0.72l1.5,-0.26l2.24,-1.39l0.19,-9.55l1.35,2.3l-0.21,1.5l0.61,1.2l0.4,0.19l1.79,-0.27l2.6,-2.07l0.69,-1.32l0.96,-0.48l2.19,1.04l2.04,0.13l1.77,-0.65l0.85,-2.12l1.38,-0.33l1.59,-2.76l2.15,-1.89l3.41,-1.87l2.0,0.45l1.02,-0.28l0.99,0.2l1.75,5.29l-0.38,3.25l-0.81,-0.23l-1.0,0.46l-0.87,1.68l-0.05,1.16l1.97,1.84l1.47,-0.29l0.69,-1.18l1.09,0.01l-0.76,3.69l-0.58,1.09l-2.2,1.79l-3.17,4.76l-2.8,2.83l-3.57,2.88l-2.53,1.05l-1.22,0.14l-0.51,0.7l-1.18,-0.32l-1.39,0.5l-2.59,-0.52l-1.61,0.33l-1.18,-0.11l-2.55,1.1l-2.1,0.44l-1.6,1.07l-0.85,0.05l-0.93,-0.89l-0.93,-0.15l-0.97,-1.13l-0.25,0.05ZM491.45,364.19l0.62,-0.93l1.48,-0.59l1.18,-2.19l-0.07,-0.49l-1.99,-1.69l-1.66,0.56l-1.43,1.14l-1.34,1.73l0.02,0.51l1.88,2.11l1.31,-0.16Z\", \"name\": \"South Africa\"}, \"EC\": {\"path\": \"M231.86,285.53l0.29,1.59l-0.69,1.45l-2.61,2.51l-3.13,1.11l-1.53,2.18l-0.49,1.68l-1.0,0.73l-1.02,-1.11l-1.78,-0.16l0.67,-1.15l-0.24,-0.86l1.25,-2.13l-0.54,-1.09l-0.67,-0.08l-0.72,0.87l-0.87,-0.64l0.35,-0.69l-0.36,-1.96l0.81,-0.51l0.45,-1.51l0.92,-1.57l-0.07,-0.97l2.65,-1.33l2.75,1.35l0.77,1.05l2.12,0.35l0.76,-0.32l1.96,1.21Z\", \"name\": \"Ecuador\"}, \"AL\": {\"path\": \"M470.32,171.8l0.74,0.03l0.92,0.89l-0.17,1.95l0.36,1.28l1.01,0.82l-1.82,2.83l-0.19,-0.61l-1.25,-0.89l-0.18,-1.2l0.53,-2.82l-0.54,-1.47l0.6,-0.83Z\", \"name\": \"Albania\"}, \"AO\": {\"path\": \"M461.55,300.03l1.26,3.15l1.94,2.36l2.47,-0.53l1.25,0.32l0.44,-0.18l0.93,-1.92l1.31,-0.08l0.41,-0.44l0.47,-0.0l-0.1,0.41l0.39,0.49l2.65,-0.02l0.03,1.19l0.48,1.01l-0.34,1.52l0.18,1.55l0.83,1.04l-0.13,2.85l0.54,0.39l3.96,-0.41l-0.1,1.79l0.39,1.05l-0.24,1.43l-4.7,-0.03l-0.4,0.39l-0.12,8.13l2.92,3.49l-3.83,0.88l-5.89,-0.36l-1.88,-1.24l-10.47,0.22l-1.3,-1.01l-1.85,-0.16l-2.4,0.77l-0.15,-1.06l0.33,-2.16l1.0,-3.45l1.35,-3.2l2.24,-2.8l0.33,-2.06l-0.13,-1.53l-0.8,-1.08l-1.21,-2.87l0.87,-1.62l-1.27,-4.12l-1.17,-1.53l2.47,-0.63l7.03,0.03ZM451.71,298.87l-0.47,-1.25l1.25,-1.11l0.32,0.3l-0.99,1.03l-0.12,1.03Z\", \"name\": \"Angola\"}, \"KZ\": {\"path\": \"M552.8,172.89l0.46,-1.27l-0.48,-1.05l-2.96,-1.19l-1.06,-2.58l-1.37,-0.87l-0.03,-0.3l1.95,0.23l0.45,-0.38l0.08,-1.96l1.75,-0.41l2.1,0.45l0.48,-0.33l0.45,-3.04l-0.45,-2.09l-0.41,-0.31l-2.42,0.15l-2.36,-0.73l-2.87,1.37l-2.17,0.61l-0.85,-0.34l0.13,-1.61l-1.6,-2.12l-2.02,-0.08l-1.78,-1.82l1.29,-2.18l-0.57,-0.95l1.62,-2.91l2.21,1.63l0.63,-0.27l0.29,-2.22l4.92,-3.43l3.71,-0.08l8.4,3.6l2.92,-1.36l3.77,-0.06l3.11,1.66l0.51,-0.11l0.6,-0.81l3.31,0.13l0.39,-0.25l0.63,-1.57l-0.17,-0.5l-3.5,-1.98l1.87,-1.27l-0.13,-1.03l1.98,-0.72l0.18,-0.62l-1.59,-2.06l0.81,-0.82l9.23,-1.18l1.33,-0.88l6.18,-1.26l2.26,-1.42l4.08,0.68l0.73,3.33l0.51,0.3l2.48,-0.8l2.79,1.02l-0.17,1.56l0.43,0.44l2.55,-0.24l4.89,-2.53l0.03,0.32l3.15,2.61l5.56,8.47l0.65,0.02l1.12,-1.46l3.15,1.74l3.76,-0.78l1.15,0.49l1.14,1.8l1.84,0.76l0.99,1.29l3.35,-0.25l1.02,1.52l-1.6,1.81l-1.93,0.28l-0.34,0.38l-0.11,3.05l-1.13,1.16l-4.75,-1.0l-0.46,0.27l-1.76,5.47l-1.1,0.59l-4.91,1.23l-0.27,0.54l2.1,4.97l-1.37,0.63l-0.23,0.41l0.13,1.13l-0.88,-0.25l-1.42,-1.13l-7.89,-0.4l-0.92,0.31l-3.73,-1.22l-1.42,0.63l-0.53,1.66l-3.72,-0.94l-1.85,0.43l-0.76,1.4l-4.65,2.62l-1.13,2.08l-0.44,0.01l-0.92,-1.4l-2.87,-0.09l-0.45,-2.14l-0.38,-0.32l-0.8,-0.01l0.0,-2.96l-3.0,-2.22l-7.31,0.58l-2.35,-2.68l-6.71,-3.69l-6.45,1.83l-0.29,0.39l0.1,10.85l-0.7,0.08l-1.62,-2.17l-1.83,-0.96l-3.11,0.59l-0.64,0.51Z\", \"name\": \"Kazakhstan\"}, \"ET\": {\"path\": \"M516.04,247.79l1.1,0.84l1.63,-0.45l0.68,0.47l1.63,0.03l2.01,0.94l1.73,1.66l1.64,2.07l-1.52,2.04l0.16,1.72l0.39,0.38l2.05,0.0l-0.36,1.03l2.86,3.58l8.32,3.08l1.31,0.02l-6.32,6.75l-3.1,0.11l-2.36,1.77l-1.47,0.04l-0.86,0.79l-1.38,-0.0l-1.32,-0.81l-2.29,1.05l-0.76,0.98l-3.29,-0.41l-3.07,-2.07l-1.8,-0.07l-0.62,-0.6l0.0,-1.24l-0.28,-0.38l-1.15,-0.37l-1.4,-2.59l-1.19,-0.68l-0.47,-1.0l-1.27,-1.23l-1.16,-0.22l0.43,-0.72l1.45,-0.28l0.41,-0.95l-0.03,-2.21l0.68,-2.44l1.05,-0.63l1.43,-3.06l1.57,-1.37l1.02,-2.51l0.35,-1.88l2.52,0.46l0.44,-0.24l0.58,-1.43Z\", \"name\": \"Ethiopia\"}, \"ZW\": {\"path\": \"M498.91,341.09l-1.11,-0.22l-0.92,0.28l-2.09,-0.44l-1.5,-1.11l-1.89,-0.43l-0.62,-1.4l-0.01,-0.84l-0.3,-0.38l-0.97,-0.25l-2.71,-2.74l-1.92,-3.32l3.83,0.45l3.73,-3.82l1.08,-0.44l0.26,-0.77l1.25,-0.9l1.41,-0.26l0.5,0.89l1.99,-0.05l1.72,1.17l1.11,0.17l1.05,0.66l0.01,2.99l-0.59,3.76l0.38,0.86l-0.23,1.23l-0.39,0.35l-0.63,1.81l-2.43,2.75Z\", \"name\": \"Zimbabwe\"}, \"ES\": {\"path\": \"M416.0,169.21l1.07,1.17l4.61,1.38l1.06,-0.57l2.6,1.26l2.71,-0.3l0.09,1.12l-2.14,1.8l-3.11,0.61l-0.31,0.31l-0.2,0.89l-1.54,1.69l-0.97,2.4l0.84,1.74l-1.32,1.27l-0.48,1.68l-1.88,0.65l-1.66,2.07l-5.36,-0.01l-1.79,1.08l-0.89,0.98l-0.88,-0.17l-0.79,-0.82l-0.68,-1.59l-2.37,-0.63l-0.11,-0.5l1.21,-1.82l-0.77,-1.13l0.61,-1.68l-0.76,-1.62l0.87,-0.49l0.09,-1.25l0.42,-0.6l0.03,-2.11l0.99,-0.69l0.13,-0.5l-1.03,-1.73l-1.46,-0.11l-0.61,0.38l-1.06,0.0l-0.52,-1.23l-0.53,-0.21l-1.32,0.67l-0.01,-1.49l-0.75,-0.96l3.03,-1.88l2.99,0.53l3.32,-0.02l2.63,0.51l6.01,-0.06Z\", \"name\": \"Spain\"}, \"ER\": {\"path\": \"M520.38,246.23l3.42,2.43l3.5,3.77l0.84,0.54l-0.95,-0.01l-3.51,-3.89l-2.33,-1.15l-1.73,-0.07l-0.91,-0.51l-1.26,0.51l-1.34,-1.02l-0.61,0.17l-0.66,1.61l-2.35,-0.43l-0.17,-0.67l1.29,-5.29l0.61,-0.61l1.95,-0.53l0.87,-1.01l1.17,2.41l0.68,2.33l1.49,1.43Z\", \"name\": \"Eritrea\"}, \"ME\": {\"path\": \"M468.91,172.53l-1.22,-1.02l0.47,-1.81l0.89,-0.72l2.26,1.51l-0.5,0.57l-0.75,-0.27l-1.14,1.73Z\", \"name\": \"Montenegro\"}, \"MD\": {\"path\": \"M488.41,153.73l1.4,-0.27l1.72,0.93l1.07,0.15l0.85,0.65l-0.14,0.84l0.96,0.85l1.12,2.47l-1.15,-0.07l-0.66,-0.41l-0.52,0.25l-0.09,0.86l-1.08,1.89l-0.27,-0.86l0.25,-1.34l-0.16,-1.6l-3.29,-4.34Z\", \"name\": \"Moldova\"}, \"MG\": {\"path\": \"M545.91,319.14l0.4,3.03l0.62,1.21l-0.21,1.02l-0.57,-0.8l-0.69,-0.01l-0.47,0.76l0.41,2.12l-0.18,0.87l-0.73,0.78l-0.15,2.14l-4.71,15.2l-1.06,2.88l-3.92,1.64l-3.12,-1.49l-0.6,-1.21l-0.19,-2.4l-0.86,-2.05l-0.21,-1.77l0.38,-1.62l1.21,-0.75l0.01,-0.76l1.19,-2.04l0.23,-1.66l-1.06,-2.99l-0.19,-2.21l0.81,-1.33l0.32,-1.46l4.63,-1.22l3.44,-3.0l0.85,-1.4l-0.08,-0.7l0.78,-0.04l1.38,-1.77l0.13,-1.64l0.45,-0.61l1.16,1.69l0.59,1.6Z\", \"name\": \"Madagascar\"}, \"MA\": {\"path\": \"M378.78,230.02l0.06,-0.59l0.92,-0.73l0.82,-1.37l-0.09,-1.04l0.79,-1.7l1.31,-1.58l0.96,-0.59l0.66,-1.55l0.09,-1.47l0.81,-1.48l1.72,-1.07l1.55,-2.69l1.16,-0.96l2.44,-0.39l1.94,-1.82l1.31,-0.78l2.09,-2.28l-0.51,-3.65l1.24,-3.7l1.5,-1.75l4.46,-2.57l2.37,-4.47l1.44,0.01l1.68,1.21l2.32,-0.19l3.47,0.65l0.8,1.54l0.16,1.71l0.86,2.96l0.56,0.59l-0.26,0.61l-3.05,0.44l-1.26,1.05l-1.33,0.22l-0.33,0.37l-0.09,1.78l-2.68,1.0l-1.07,1.42l-4.47,1.13l-4.04,2.01l-0.54,4.64l-1.15,0.06l-0.92,0.61l-1.96,-0.35l-2.42,0.54l-0.74,1.9l-0.86,0.4l-1.14,3.26l-3.53,3.01l-0.8,3.55l-0.96,1.1l-0.29,0.82l-4.95,0.18Z\", \"name\": \"Morocco\"}, \"UZ\": {\"path\": \"M598.64,172.75l-1.63,1.52l0.06,0.64l1.85,1.12l1.97,-0.64l2.21,1.17l-2.52,1.68l-2.59,-0.22l-0.18,-0.41l0.46,-1.23l-0.45,-0.53l-3.35,0.69l-2.1,3.51l-1.87,-0.12l-1.03,1.51l0.22,0.55l1.64,0.62l0.46,1.83l-1.19,2.49l-2.66,-0.53l0.05,-1.36l-0.26,-0.39l-3.3,-1.23l-2.56,-1.4l-4.4,-3.34l-1.34,-3.14l-1.08,-0.6l-2.58,0.13l-0.69,-0.44l-0.47,-2.52l-3.37,-1.6l-0.43,0.05l-2.07,1.72l-2.1,1.01l-0.21,0.47l0.28,1.01l-1.91,0.03l-0.09,-10.5l5.99,-1.7l6.19,3.54l2.71,2.84l7.05,-0.67l2.71,2.01l-0.17,2.81l0.39,0.42l0.9,0.02l0.44,2.14l0.38,0.32l2.94,0.09l0.95,1.42l1.28,-0.24l1.05,-2.04l4.43,-2.5Z\", \"name\": \"Uzbekistan\"}, \"MM\": {\"path\": \"M673.9,230.21l-1.97,1.57l-0.57,0.96l-1.4,0.6l-1.36,1.05l-1.99,0.36l-1.08,2.66l-0.91,0.4l-0.19,0.55l1.21,2.27l2.52,3.43l-0.79,1.91l-0.74,0.41l-0.17,0.52l0.65,1.37l1.61,1.95l0.25,2.58l0.9,2.13l-1.92,3.57l0.68,-2.25l-0.81,-1.74l0.19,-2.65l-1.05,-1.53l-1.24,-6.17l-1.12,-2.26l-0.6,-0.13l-4.34,3.02l-2.39,-0.65l0.77,-2.84l-0.52,-2.61l-1.91,-2.96l0.25,-0.75l-0.29,-0.51l-1.33,-0.3l-1.61,-1.93l-0.1,-1.3l0.82,-0.24l0.04,-1.64l1.02,-0.52l0.21,-0.45l-0.23,-0.95l0.54,-0.96l0.08,-2.22l1.46,0.45l0.47,-0.2l1.12,-2.19l0.16,-1.35l1.33,-2.16l-0.0,-1.52l2.89,-1.66l1.63,0.44l0.5,-0.44l-0.17,-1.4l0.64,-0.36l0.08,-1.04l0.77,-0.11l0.71,1.35l1.06,0.69l-0.03,3.86l-2.38,2.37l-0.3,3.15l0.46,0.43l2.28,-0.38l0.51,2.08l1.47,0.67l-0.6,1.8l0.19,0.48l2.97,1.48l1.64,-0.55l0.02,0.32Z\", \"name\": \"Myanmar\"}, \"ML\": {\"path\": \"M392.61,254.08l-0.19,-2.37l-0.99,-0.87l-0.44,-1.3l-0.09,-1.28l0.81,-0.58l0.35,-1.24l2.37,0.65l1.31,-0.47l0.86,0.15l0.66,-0.56l9.83,-0.04l0.38,-0.28l0.56,-1.8l-0.44,-0.65l-2.35,-21.95l3.27,-0.04l16.7,11.38l0.74,1.31l2.5,1.09l0.02,1.38l0.44,0.39l2.34,-0.21l0.01,5.38l-1.28,1.61l-0.26,1.49l-5.31,0.57l-1.07,0.92l-2.9,0.1l-0.86,-0.48l-1.38,0.36l-2.4,1.08l-0.6,0.87l-1.85,1.09l-0.43,0.7l-0.79,0.39l-1.44,-0.21l-0.81,0.84l-0.34,1.64l-1.91,2.02l-0.06,1.03l-0.67,1.22l0.13,1.16l-0.97,0.39l-0.23,-0.64l-0.52,-0.24l-1.35,0.4l-0.34,0.55l-2.69,-0.28l-0.37,-0.35l-0.02,-0.9l-0.65,-0.35l0.45,-0.64l-0.03,-0.53l-2.12,-2.44l-0.76,-0.01l-2.0,1.16l-0.78,-0.15l-0.8,-0.67l-1.21,0.23Z\", \"name\": \"Mali\"}, \"MN\": {\"path\": \"M676.61,146.48l3.81,1.68l5.67,-1.0l2.37,0.41l2.34,1.5l1.79,1.75l2.29,-0.03l3.12,0.52l2.47,-0.81l3.41,-0.59l3.53,-2.21l1.25,0.29l1.53,1.13l2.27,-0.21l-2.66,5.01l0.64,1.68l0.47,0.21l1.32,-0.38l2.38,0.48l2.02,-1.11l1.76,0.89l2.06,2.02l-0.13,0.53l-1.72,-0.29l-3.77,0.46l-1.88,0.99l-1.76,1.99l-3.71,1.17l-2.45,1.6l-3.83,-0.87l-0.41,0.17l-1.31,1.99l1.04,2.24l-1.52,0.9l-1.74,1.57l-2.79,1.02l-3.78,0.13l-4.05,1.05l-2.77,1.52l-1.16,-0.85l-2.94,0.0l-3.62,-1.79l-2.58,-0.49l-3.4,0.41l-5.12,-0.67l-2.63,0.06l-1.31,-1.6l-1.4,-3.0l-1.48,-0.33l-3.13,-1.94l-6.16,-0.93l-0.71,-1.06l0.86,-3.82l-1.93,-2.71l-3.5,-1.18l-1.95,-1.58l-0.5,-1.72l2.34,-0.52l4.75,-2.8l3.62,-1.47l2.18,0.97l2.46,0.05l1.81,1.53l2.46,0.12l3.95,0.71l2.43,-2.28l0.08,-0.48l-0.9,-1.72l2.24,-2.98l2.62,1.27l4.94,1.17l0.43,2.24Z\", \"name\": \"Mongolia\"}, \"MK\": {\"path\": \"M472.8,173.98l0.49,-0.71l3.57,-0.71l1.0,0.77l0.13,1.45l-0.65,0.53l-1.15,-0.05l-1.12,0.67l-1.39,0.22l-0.79,-0.55l-0.29,-1.03l0.19,-0.6Z\", \"name\": \"Macedonia\"}, \"MW\": {\"path\": \"M505.5,309.31l0.85,1.95l0.15,2.86l-0.69,1.65l0.71,1.8l0.06,1.28l0.49,0.64l0.07,1.06l0.4,0.55l0.8,-0.23l0.55,0.61l0.69,-0.21l0.34,0.6l0.19,2.94l-1.04,0.62l-0.54,1.25l-1.11,-1.08l-0.16,-1.56l0.51,-1.31l-0.32,-1.3l-0.99,-0.65l-0.82,0.12l-2.36,-1.64l0.63,-1.96l0.82,-1.18l-0.46,-2.01l0.9,-2.86l-0.94,-2.51l0.96,0.18l0.29,0.4Z\", \"name\": \"Malawi\"}, \"MR\": {\"path\": \"M407.36,220.66l-2.58,0.03l-0.39,0.44l2.42,22.56l0.36,0.43l-0.39,1.24l-9.75,0.04l-0.56,0.53l-0.91,-0.11l-1.27,0.45l-1.61,-0.66l-0.97,0.03l-0.36,0.29l-0.38,1.35l-0.42,0.23l-2.93,-3.4l-2.96,-1.52l-1.62,-0.03l-1.27,0.54l-1.12,-0.2l-0.65,0.4l-0.08,-0.49l0.68,-1.29l0.31,-2.43l-0.57,-3.91l0.23,-1.21l-0.69,-1.5l-1.15,-1.02l0.25,-0.39l9.58,0.02l0.4,-0.45l-0.46,-3.68l0.47,-1.04l2.12,-0.21l0.36,-0.4l-0.08,-6.4l7.81,0.13l0.41,-0.4l0.01,-3.31l7.76,5.35Z\", \"name\": \"Mauritania\"}, \"UG\": {\"path\": \"M498.55,276.32l0.7,-0.46l1.65,0.5l1.96,-0.57l1.7,0.01l1.45,-0.98l0.91,1.33l1.33,3.95l-2.57,4.03l-1.46,-0.4l-2.54,0.91l-1.37,1.61l-0.01,0.81l-2.42,-0.01l-2.26,1.01l-0.17,-1.59l0.58,-1.04l0.14,-1.94l1.37,-2.28l1.78,-1.58l-0.17,-0.65l-0.72,-0.24l0.13,-2.43Z\", \"name\": \"Uganda\"}, \"MY\": {\"path\": \"M717.47,273.46l-1.39,0.65l-2.12,-0.41l-2.88,-0.0l-0.38,0.28l-0.84,2.75l-0.99,0.96l-1.21,3.29l-1.73,0.45l-2.45,-0.68l-1.39,0.31l-1.33,1.15l-1.59,-0.14l-1.41,0.44l-1.44,-1.19l-0.18,-0.73l1.34,0.53l1.93,-0.47l0.75,-2.22l4.02,-1.03l2.75,-3.21l0.82,0.94l0.64,-0.05l0.4,-0.65l0.96,0.06l0.42,-0.36l0.24,-2.68l1.81,-1.64l1.21,-1.86l0.63,-0.01l1.07,1.05l0.34,1.28l3.44,1.35l-0.06,0.35l-1.37,0.1l-0.35,0.54l0.32,0.88ZM673.68,269.59l0.17,1.09l0.47,0.33l1.65,-0.3l0.87,-0.94l1.61,1.52l0.98,1.56l-0.12,2.81l0.41,2.29l0.95,0.9l0.88,2.44l-1.27,0.12l-5.1,-3.67l-0.34,-1.29l-1.37,-1.59l-0.33,-1.97l-0.88,-1.4l0.25,-1.68l-0.46,-1.05l1.63,0.84Z\", \"name\": \"Malaysia\"}, \"MX\": {\"path\": \"M133.12,200.41l0.2,0.47l9.63,3.33l6.96,-0.02l0.4,-0.4l0.0,-0.74l3.77,0.0l3.55,2.93l1.39,2.83l1.52,1.04l2.08,0.82l0.47,-0.14l1.46,-2.0l1.73,-0.04l1.59,0.98l2.05,3.35l1.47,1.56l1.26,3.14l2.18,1.02l2.26,0.58l-1.18,3.72l-0.42,5.04l1.79,4.89l1.62,1.89l0.61,1.52l1.2,1.42l2.55,0.66l1.37,1.1l7.54,-1.89l1.86,-1.3l1.14,-4.3l4.1,-1.21l3.57,-0.11l0.32,0.3l-0.06,0.94l-1.26,1.45l-0.67,1.71l0.38,0.7l-0.72,2.27l-0.49,-0.3l-1.0,0.08l-1.0,1.39l-0.47,-0.11l-0.53,0.47l-4.26,-0.02l-0.4,0.4l-0.0,1.06l-1.1,0.26l0.1,0.44l1.82,1.44l0.56,0.91l-3.19,0.21l-1.21,2.09l0.24,0.72l-0.2,0.44l-2.24,-2.18l-1.45,-0.93l-2.22,-0.69l-1.52,0.22l-3.07,1.16l-10.55,-3.85l-2.86,-1.96l-3.78,-0.92l-1.08,-1.19l-2.62,-1.43l-1.18,-1.54l-0.38,-0.81l0.66,-0.63l-0.18,-0.53l0.52,-0.76l0.01,-0.91l-2.0,-3.82l-2.21,-2.63l-2.53,-2.09l-1.19,-1.62l-2.2,-1.17l-0.3,-0.43l0.34,-1.48l-0.21,-0.45l-1.23,-0.6l-1.36,-1.2l-0.59,-1.78l-1.54,-0.47l-2.44,-2.55l-0.16,-0.9l-1.33,-2.03l-0.84,-1.99l-0.16,-1.33l-1.81,-1.1l-0.97,0.05l-1.31,-0.7l-0.57,0.22l-0.4,1.12l0.72,3.77l3.51,3.89l0.28,0.78l0.53,0.26l0.41,1.43l1.33,1.73l1.58,1.41l0.8,2.39l1.43,2.41l0.13,1.32l0.37,0.36l1.04,0.08l1.67,2.28l-0.85,0.76l-0.66,-1.51l-1.68,-1.54l-2.91,-1.87l0.06,-1.82l-0.54,-1.68l-2.91,-2.03l-0.55,0.09l-1.95,-1.1l-0.88,-0.94l0.68,-0.08l0.93,-1.01l0.08,-1.78l-1.93,-1.94l-1.46,-0.77l-3.75,-7.56l4.88,-0.42Z\", \"name\": \"Mexico\"}, \"VU\": {\"path\": \"M839.04,322.8l0.22,1.14l-0.44,0.03l-0.2,-1.45l0.42,0.27Z\", \"name\": \"Vanuatu\"}, \"FR\": {\"path\": \"M444.48,172.62l-0.64,1.78l-0.58,-0.31l-0.49,-1.72l0.4,-0.89l1.0,-0.72l0.3,1.85ZM429.64,147.1l1.78,1.58l1.46,-0.13l2.1,1.42l1.35,0.27l1.23,0.83l3.04,0.5l-1.03,1.85l-0.3,2.12l-0.41,0.32l-0.95,-0.24l-0.5,0.43l0.06,0.61l-1.81,1.92l-0.04,1.42l0.55,0.38l0.88,-0.36l0.61,0.97l-0.03,1.0l0.57,0.91l-0.75,1.09l0.65,2.39l1.27,0.57l-0.18,0.82l-2.01,1.53l-4.77,-0.8l-3.82,1.0l-0.53,1.85l-2.49,0.34l-2.71,-1.31l-1.16,0.57l-4.31,-1.29l-0.72,-0.86l1.19,-1.78l0.39,-6.45l-2.58,-3.3l-1.9,-1.66l-3.72,-1.23l-0.19,-1.72l2.81,-0.61l4.12,0.81l0.47,-0.48l-0.6,-2.77l1.94,0.95l5.83,-2.54l0.92,-2.74l1.6,-0.49l0.24,0.78l1.36,0.33l1.05,1.19ZM289.01,278.39l-0.81,0.8l-0.78,0.12l-0.5,-0.66l-0.56,-0.1l-0.91,0.6l-0.46,-0.22l1.09,-2.96l-0.96,-1.77l-0.17,-1.49l1.07,-1.77l2.32,0.75l2.51,2.01l0.3,0.74l-2.14,3.96Z\", \"name\": \"France\"}, \"FI\": {\"path\": \"M492.17,76.39l-0.23,3.5l3.52,2.63l-2.08,2.88l-0.02,0.44l2.8,4.56l-1.59,3.31l2.16,3.24l-0.94,2.39l0.14,0.47l3.44,2.51l-0.77,1.62l-7.52,6.95l-4.5,0.31l-4.38,1.37l-3.8,0.74l-1.44,-1.96l-2.17,-1.11l0.5,-3.66l-1.16,-3.33l1.09,-2.08l2.21,-2.42l5.67,-4.32l1.64,-0.83l0.21,-0.42l-0.46,-2.02l-3.38,-1.89l-0.75,-1.43l-0.22,-6.74l-6.79,-4.8l0.8,-0.62l2.54,2.12l3.46,-0.12l3.0,0.96l2.51,-2.11l1.17,-3.08l3.55,-1.38l2.76,1.53l-0.95,2.79Z\", \"name\": \"Finland\"}, \"FJ\": {\"path\": \"M871.53,326.34l-2.8,1.05l-0.08,-0.23l2.97,-1.21l-0.1,0.39ZM867.58,329.25l0.43,0.37l-0.27,0.88l-1.24,0.28l-1.04,-0.24l-0.14,-0.66l0.63,-0.58l0.92,0.26l0.7,-0.31Z\", \"name\": \"Fiji\"}, \"FK\": {\"path\": \"M274.36,425.85l1.44,1.08l-0.47,0.73l-3.0,0.89l-0.96,-1.0l-0.52,-0.05l-1.83,1.29l-0.73,-0.88l2.46,-1.64l1.93,0.76l1.67,-1.19Z\", \"name\": \"Falkland Is.\"}, \"NI\": {\"path\": \"M202.33,252.67l0.81,-0.18l1.03,-1.02l-0.04,-0.88l0.68,-0.0l0.63,-0.54l0.97,0.22l1.53,-1.26l0.58,-0.99l1.17,0.34l2.41,-0.94l0.13,1.32l-0.81,1.94l0.1,2.74l-0.36,0.37l-0.11,1.75l-0.47,0.81l0.18,1.14l-1.73,-0.85l-0.71,0.27l-1.47,-0.6l-0.52,0.16l-4.01,-3.81Z\", \"name\": \"Nicaragua\"}, \"NL\": {\"path\": \"M430.31,143.39l0.6,-0.5l2.13,-4.8l3.2,-1.33l1.74,0.08l0.33,0.8l-0.59,2.92l-0.5,0.99l-1.26,0.0l-0.4,0.45l0.33,2.7l-2.2,-1.78l-2.62,0.58l-0.75,-0.11Z\", \"name\": \"Netherlands\"}, \"NO\": {\"path\": \"M491.44,67.41l6.8,2.89l-2.29,0.86l-0.15,0.65l2.33,2.38l-4.98,1.79l0.84,-2.45l-0.18,-0.48l-3.55,-1.8l-3.89,1.52l-1.42,3.38l-2.12,1.72l-2.64,-1.0l-3.11,0.21l-2.66,-2.22l-0.5,-0.01l-1.41,1.1l-1.44,0.17l-0.35,0.35l-0.32,2.47l-4.32,-0.64l-0.44,0.29l-0.58,2.11l-2.45,0.2l-4.15,7.68l-3.88,5.76l0.78,1.62l-0.64,1.16l-2.24,-0.06l-0.38,0.24l-1.66,3.89l0.15,5.17l1.57,2.04l-0.78,4.16l-2.02,2.48l-0.85,1.63l-1.3,-1.75l-0.58,-0.07l-4.87,4.19l-3.1,0.79l-3.16,-1.7l-0.85,-3.77l-0.77,-8.55l2.14,-2.31l6.55,-3.27l5.02,-4.17l10.63,-13.84l10.98,-8.7l5.35,-1.91l4.34,0.12l3.69,-3.64l4.49,0.19l4.37,-0.89ZM484.55,20.04l4.26,1.75l-3.1,2.55l-7.1,0.65l-7.08,-0.9l-0.37,-1.31l-0.37,-0.29l-3.44,-0.1l-2.08,-2.0l6.87,-1.44l3.9,1.31l2.39,-1.64l6.13,1.4ZM481.69,33.93l-4.45,1.74l-3.54,-0.99l1.12,-0.9l0.05,-0.58l-1.06,-1.22l4.22,-0.89l1.09,1.97l2.57,0.87ZM466.44,24.04l7.43,3.77l-5.41,1.86l-1.58,4.08l-2.26,1.2l-1.12,4.11l-2.61,0.18l-4.79,-2.86l1.84,-1.54l-0.1,-0.68l-3.69,-1.53l-4.77,-4.51l-1.73,-3.89l6.11,-1.82l1.54,1.92l3.57,-0.08l1.2,-1.96l3.32,-0.18l3.05,1.92Z\", \"name\": \"Norway\"}, \"NA\": {\"path\": \"M474.26,330.66l-0.97,0.04l-0.38,0.4l-0.07,8.9l-2.09,0.08l-0.39,0.4l-0.0,17.42l-1.98,1.23l-1.17,0.17l-2.44,-0.66l-0.48,-1.13l-0.99,-0.74l-0.54,0.05l-0.9,1.01l-1.53,-1.68l-0.93,-1.88l-1.99,-8.56l-0.06,-3.12l-0.33,-1.52l-2.3,-3.34l-1.91,-4.83l-1.96,-2.43l-0.12,-1.57l2.33,-0.79l1.43,0.07l1.81,1.13l10.23,-0.25l1.84,1.23l5.87,0.35ZM474.66,330.64l6.51,-1.6l1.9,0.39l-1.69,0.4l-1.31,0.83l-1.12,-0.94l-4.29,0.92Z\", \"name\": \"Namibia\"}, \"NC\": {\"path\": \"M838.78,341.24l-0.33,0.22l-2.9,-1.75l-3.26,-3.37l1.65,0.83l4.85,4.07Z\", \"name\": \"New Caledonia\"}, \"NE\": {\"path\": \"M454.75,226.53l1.33,1.37l0.48,0.07l1.27,-0.7l0.53,3.52l0.94,0.83l0.17,0.92l0.81,0.69l-0.44,0.95l-0.96,5.26l-0.13,3.22l-3.04,2.31l-1.22,3.57l1.02,1.24l-0.0,1.46l0.39,0.4l1.13,0.04l-0.9,1.25l-1.47,-2.42l-0.86,-0.29l-2.09,1.37l-1.74,-0.67l-1.45,-0.17l-0.85,0.35l-1.36,-0.07l-1.64,1.09l-1.06,0.05l-2.94,-1.28l-1.44,0.59l-1.01,-0.03l-0.97,-0.94l-2.7,-0.98l-2.69,0.3l-0.87,0.64l-0.47,1.6l-0.75,1.16l-0.12,1.53l-1.57,-1.1l-1.31,0.24l0.03,-0.81l-0.32,-0.41l-2.59,-0.52l-0.15,-1.16l-1.35,-1.6l-0.29,-1.0l0.13,-0.84l1.29,-0.08l1.08,-0.92l3.31,-0.22l2.22,-0.41l0.32,-0.34l0.2,-1.47l1.39,-1.88l-0.01,-5.66l3.36,-1.12l7.24,-5.12l8.42,-4.92l3.69,1.06Z\", \"name\": \"Niger\"}, \"NG\": {\"path\": \"M456.32,253.89l0.64,0.65l-0.28,1.04l-2.11,2.01l-2.03,5.18l-1.37,1.16l-1.15,3.18l-1.33,0.66l-1.46,-0.97l-1.21,0.16l-1.38,1.36l-0.91,0.24l-1.79,4.06l-2.33,0.81l-1.11,-0.07l-0.86,0.5l-1.71,-0.05l-1.19,-1.39l-0.89,-1.89l-1.77,-1.66l-3.95,-0.08l0.07,-5.21l0.42,-1.43l1.95,-2.3l-0.14,-0.91l0.43,-1.18l-0.53,-1.41l0.25,-2.92l0.72,-1.07l0.32,-1.34l0.46,-0.39l2.47,-0.28l2.34,0.89l1.15,1.02l1.28,0.04l1.22,-0.58l3.03,1.27l1.49,-0.14l1.36,-1.0l1.33,0.07l0.82,-0.35l3.45,0.8l1.82,-1.32l1.84,2.67l0.66,0.16Z\", \"name\": \"Nigeria\"}, \"NZ\": {\"path\": \"M857.8,379.65l1.86,3.12l0.44,0.18l0.3,-0.38l0.03,-1.23l0.38,0.27l0.57,2.31l2.02,0.94l1.81,0.27l1.57,-1.06l0.7,0.18l-1.15,3.59l-1.98,0.11l-0.74,1.2l0.2,1.11l-2.42,3.98l-1.49,0.92l-1.04,-0.85l1.21,-2.05l-0.81,-2.01l-2.63,-1.25l0.04,-0.57l1.82,-1.19l0.43,-2.34l-0.16,-2.03l-0.95,-1.82l-0.06,-0.72l-3.11,-3.64l-0.79,-1.52l1.56,1.45l1.76,0.66l0.65,2.34ZM853.83,393.59l0.57,1.24l0.59,0.16l1.42,-0.97l0.46,0.79l0.0,1.03l-2.47,3.48l-1.26,1.2l-0.06,0.5l0.55,0.87l-1.41,0.07l-2.33,1.38l-2.03,5.02l-3.02,2.16l-2.06,-0.06l-1.71,-1.04l-2.47,-0.2l-0.27,-0.73l1.22,-2.1l3.05,-2.94l1.62,-0.59l4.02,-2.82l1.57,-1.67l1.07,-2.16l0.88,-0.7l0.48,-1.75l1.24,-0.97l0.35,0.79Z\", \"name\": \"New Zealand\"}, \"NP\": {\"path\": \"M641.14,213.62l0.01,3.19l-1.74,0.04l-4.8,-0.86l-1.58,-1.39l-3.37,-0.34l-7.65,-3.7l0.8,-2.09l2.33,-1.7l1.77,0.75l2.49,1.76l1.38,0.41l0.99,1.35l1.9,0.52l1.99,1.17l5.49,0.9Z\", \"name\": \"Nepal\"}, \"CI\": {\"path\": \"M407.4,259.27l0.86,0.42l0.56,0.9l1.13,0.53l1.19,-0.61l0.97,-0.08l1.42,0.54l0.6,3.24l-1.03,2.08l-0.65,2.84l1.06,2.33l-0.06,0.53l-2.54,-0.47l-1.66,0.03l-3.06,0.46l-4.11,1.6l0.32,-3.06l-1.18,-1.31l-1.32,-0.66l0.42,-0.85l-0.2,-1.4l0.5,-0.67l0.01,-1.59l0.84,-0.32l0.26,-0.5l-1.15,-3.01l0.12,-0.5l0.51,-0.25l0.66,0.31l1.93,0.02l0.67,-0.71l0.71,-0.14l0.25,0.69l0.57,0.22l1.4,-0.61Z\", \"name\": \"C\\u00c3\\u00b4te d'Ivoire\"}, \"CH\": {\"path\": \"M444.62,156.35l-0.29,0.87l0.18,0.53l1.13,0.58l1.0,0.1l-0.1,0.65l-0.79,0.38l-1.72,-0.37l-0.45,0.23l-0.45,1.04l-0.75,0.06l-0.84,-0.4l-1.32,1.0l-0.96,0.12l-0.88,-0.55l-0.81,-1.3l-0.49,-0.16l-0.63,0.26l0.02,-0.65l1.71,-1.66l0.1,-0.56l0.93,0.08l0.58,-0.46l1.99,0.02l0.66,-0.61l2.19,0.79Z\", \"name\": \"Switzerland\"}, \"CO\": {\"path\": \"M242.07,254.93l-1.7,0.59l-0.59,1.18l-1.7,1.69l-0.38,1.93l-0.67,1.43l0.31,0.57l1.03,0.13l0.25,0.9l0.57,0.64l-0.04,2.34l1.64,1.42l3.16,-0.24l1.26,0.28l1.67,2.06l0.41,0.13l4.09,-0.39l0.45,0.22l-0.92,1.95l-0.2,1.8l0.52,1.83l0.75,1.05l-1.12,1.1l0.07,0.63l0.84,0.51l0.74,1.29l-0.39,-0.45l-0.59,-0.01l-0.71,0.74l-4.71,-0.05l-0.4,0.41l0.03,1.57l0.33,0.39l1.11,0.2l-1.68,0.4l-0.29,0.38l-0.01,1.82l1.16,1.14l0.34,1.25l-1.05,7.05l-1.04,-0.87l1.26,-1.99l-0.13,-0.56l-2.18,-1.23l-1.38,0.2l-1.14,-0.38l-1.27,0.61l-1.55,-0.26l-1.38,-2.46l-1.23,-0.75l-0.85,-1.2l-1.67,-1.19l-0.86,0.13l-2.11,-1.32l-1.01,0.31l-1.8,-0.29l-0.52,-0.91l-3.09,-1.68l0.77,-0.52l-0.1,-1.12l0.41,-0.64l1.34,-0.32l2.0,-2.88l-0.11,-0.57l-0.66,-0.43l0.39,-1.38l-0.52,-2.1l0.49,-0.83l-0.4,-2.13l-0.97,-1.35l0.17,-0.66l0.86,-0.08l0.47,-0.75l-0.46,-1.63l1.41,-0.07l1.8,-1.69l0.93,-0.24l0.3,-0.38l0.45,-2.76l1.22,-1.0l1.44,-0.04l0.45,-0.5l1.91,0.12l2.93,-1.84l1.15,-1.14l0.91,0.46l-0.25,0.45Z\", \"name\": \"Colombia\"}, \"CN\": {\"path\": \"M740.23,148.97l4.57,1.3l2.8,2.17l0.98,2.9l0.38,0.27l3.8,0.0l2.32,-1.28l3.29,-0.75l-0.96,2.09l-1.02,1.28l-0.85,3.4l-1.52,2.73l-2.76,-0.5l-2.4,1.13l-0.21,0.45l0.64,2.57l-0.32,3.2l-0.94,0.06l-0.37,0.89l-0.91,-1.01l-0.64,0.07l-0.92,1.57l-3.73,1.25l-0.26,0.48l0.26,1.06l-1.5,-0.08l-1.09,-0.86l-0.56,0.06l-1.67,2.06l-2.7,1.56l-2.03,1.88l-3.4,0.83l-1.93,1.4l-1.15,0.34l0.33,-0.7l-0.41,-0.89l1.79,-1.79l0.02,-0.54l-1.32,-1.56l-0.48,-0.1l-2.24,1.09l-2.83,2.06l-1.51,1.83l-2.28,0.13l-1.55,1.49l-0.04,0.5l1.32,1.97l2.0,0.58l0.31,1.35l1.98,0.84l3.0,-1.96l2.0,1.02l1.49,0.11l0.22,0.83l-3.37,0.86l-1.12,1.48l-2.5,1.52l-1.29,1.99l0.14,0.56l2.57,1.48l0.97,2.7l3.17,4.63l-0.03,1.66l-1.35,0.65l-0.2,0.51l0.6,1.47l1.4,0.91l-0.89,3.82l-1.43,0.38l-3.85,6.44l-2.27,3.11l-6.78,4.57l-2.73,0.29l-1.45,1.04l-0.62,-0.61l-0.55,-0.01l-1.36,1.25l-3.39,1.27l-2.61,0.4l-1.1,2.79l-0.81,0.09l-0.49,-1.42l0.5,-0.85l-0.25,-0.59l-3.36,-0.84l-1.3,0.4l-2.31,-0.62l-0.94,-0.84l0.33,-1.28l-0.3,-0.49l-2.19,-0.46l-1.13,-0.93l-0.47,-0.02l-2.06,1.36l-4.29,0.28l-2.76,1.05l-0.28,0.43l0.32,2.53l-0.59,-0.03l-0.19,-1.34l-0.55,-0.34l-1.68,0.7l-2.46,-1.23l0.62,-1.87l-0.26,-0.51l-1.37,-0.44l-0.54,-2.22l-0.45,-0.3l-2.13,0.35l0.24,-2.48l2.39,-2.4l0.03,-4.31l-1.19,-0.92l-0.78,-1.49l-0.41,-0.21l-1.41,0.19l-1.98,-0.3l0.46,-1.07l-1.17,-1.7l-0.55,-0.11l-1.63,1.05l-2.25,-0.57l-2.89,1.73l-2.25,1.98l-1.75,0.29l-1.17,-0.71l-3.31,-0.65l-1.48,0.79l-1.04,1.27l-0.12,-1.17l-0.54,-0.34l-1.44,0.54l-5.55,-0.86l-1.98,-1.16l-1.89,-0.54l-0.99,-1.35l-1.34,-0.37l-2.55,-1.79l-2.01,-0.84l-1.21,0.56l-5.57,-3.45l-0.53,-2.31l1.19,0.25l0.48,-0.37l0.08,-1.42l-0.98,-1.56l0.15,-2.44l-2.69,-3.32l-4.12,-1.23l-0.67,-2.0l-1.92,-1.48l-0.38,-0.7l-0.51,-3.01l-1.52,-0.66l-0.7,0.13l-0.48,-2.05l0.55,-0.51l-0.09,-0.82l2.03,-1.19l1.6,-0.54l2.56,0.38l0.42,-0.22l0.85,-1.7l3.0,-0.33l1.1,-1.26l4.05,-1.77l0.39,-0.91l-0.17,-1.44l1.45,-0.67l0.2,-0.52l-2.07,-4.9l4.51,-1.12l1.37,-0.73l1.89,-5.51l4.98,0.86l1.51,-1.7l0.11,-2.87l1.99,-0.38l1.83,-2.06l0.49,-0.13l0.68,2.08l2.23,1.77l3.44,1.16l1.55,2.29l-0.92,3.49l0.96,1.67l6.54,1.13l2.95,1.87l1.47,0.35l1.06,2.62l1.53,1.91l3.05,0.08l5.14,0.67l3.37,-0.41l2.36,0.43l3.65,1.8l3.06,0.04l1.45,0.88l2.87,-1.59l3.95,-1.02l3.83,-0.14l3.06,-1.14l1.77,-1.6l1.72,-1.01l0.17,-0.49l-1.1,-2.05l1.02,-1.54l4.02,0.8l2.45,-1.61l3.76,-1.19l1.96,-2.13l1.63,-0.83l3.51,-0.4l1.92,0.34l0.46,-0.3l0.17,-1.5l-2.27,-2.22l-2.11,-1.09l-2.18,1.11l-2.32,-0.47l-1.29,0.32l-0.4,-0.82l2.73,-5.16l3.02,1.06l3.53,-2.06l0.18,-1.68l2.16,-3.35l1.49,-1.35l-0.03,-1.85l-1.07,-0.85l1.54,-1.26l2.98,-0.59l3.23,-0.09l3.64,0.99l2.04,1.16l3.29,6.71l0.92,3.19ZM696.92,237.31l-1.87,1.08l-1.63,-0.64l-0.06,-1.79l1.03,-0.98l2.58,-0.69l1.16,0.05l0.3,0.54l-0.98,1.06l-0.53,1.37Z\", \"name\": \"China\"}, \"CM\": {\"path\": \"M457.92,257.49l1.05,1.91l-1.4,0.16l-1.05,-0.23l-0.45,0.22l-0.54,1.19l0.08,0.45l1.48,1.47l1.05,0.45l1.01,2.46l-1.52,2.99l-0.68,0.68l-0.13,3.69l2.38,3.84l1.09,0.8l0.24,2.48l-3.67,-1.14l-11.27,-0.13l0.23,-1.79l-0.98,-1.66l-1.19,-0.54l-0.44,-0.97l-0.6,-0.42l1.71,-4.27l0.75,-0.13l1.38,-1.36l0.65,-0.03l1.71,0.99l1.93,-1.12l1.14,-3.18l1.38,-1.17l2.0,-5.14l2.17,-2.13l0.3,-1.64l-0.86,-0.88l0.03,-0.33l0.94,1.28l0.07,3.22Z\", \"name\": \"Cameroon\"}, \"CL\": {\"path\": \"M246.5,429.18l-3.14,1.83l-0.57,3.16l-0.64,0.05l-2.68,-1.06l-2.82,-2.33l-3.04,-1.89l-0.69,-1.85l0.63,-2.14l-1.21,-2.11l-0.31,-5.37l1.01,-2.91l2.57,-2.38l-0.18,-0.68l-3.16,-0.77l2.05,-2.47l0.77,-4.65l2.32,0.9l0.54,-0.29l1.31,-6.31l-0.22,-0.44l-1.68,-0.8l-0.56,0.28l-0.7,3.36l-0.81,-0.22l1.56,-9.41l1.15,-2.24l-0.71,-2.82l-0.18,-2.84l1.01,-0.33l3.26,-9.14l1.07,-4.22l-0.56,-4.21l0.74,-2.34l-0.29,-3.27l1.46,-3.34l2.04,-16.59l-0.66,-7.76l1.03,-0.53l0.54,-0.9l0.79,1.14l0.32,1.78l1.25,1.16l-0.69,2.55l1.33,2.9l0.97,3.59l0.46,0.29l1.5,-0.3l0.11,0.23l-0.76,2.44l-2.57,1.23l-0.23,0.37l0.08,4.33l-0.46,0.77l0.56,1.21l-1.58,1.51l-1.68,2.62l-0.89,2.47l0.2,2.7l-1.48,2.73l1.12,5.09l0.64,0.61l-0.01,2.29l-1.38,2.68l0.01,2.4l-1.89,2.04l0.02,2.75l0.69,2.57l-1.43,1.13l-1.26,5.68l0.39,3.51l-0.97,0.89l0.58,3.5l1.02,1.14l-0.65,1.02l0.15,0.57l1.0,0.53l0.16,0.69l-1.03,0.85l0.26,1.75l-0.89,4.03l-1.31,2.66l0.24,1.75l-0.71,1.83l-1.99,1.7l0.3,3.67l0.88,1.19l1.58,0.01l0.01,2.21l1.04,1.95l5.98,0.63ZM248.69,430.79l0.0,7.33l0.4,0.4l3.52,0.05l-0.44,0.75l-1.94,0.98l-2.49,-0.37l-1.88,-1.06l-2.55,-0.49l-5.59,-3.71l-2.38,-2.63l4.1,2.48l3.32,1.23l0.45,-0.12l1.29,-1.57l0.83,-2.32l2.05,-1.24l1.31,0.29Z\", \"name\": \"Chile\"}, \"CA\": {\"path\": \"M280.06,145.6l-1.67,2.88l0.07,0.49l0.5,0.04l1.46,-0.98l1.0,0.42l-0.56,0.72l0.17,0.62l2.22,0.89l1.35,-0.71l1.95,0.78l-0.66,2.01l0.5,0.51l1.32,-0.42l0.98,3.17l-0.91,2.41l-0.8,0.08l-1.23,-0.45l0.47,-2.25l-0.89,-0.83l-0.48,0.06l-2.78,2.63l-0.34,-0.02l1.02,-0.85l-0.14,-0.69l-2.4,-0.77l-7.4,0.08l-0.17,-0.41l1.3,-0.94l0.02,-0.64l-0.73,-0.58l1.85,-1.74l2.57,-5.16l1.47,-1.79l1.99,-1.05l0.46,0.06l-1.53,2.45ZM68.32,74.16l4.13,0.95l4.02,2.14l2.61,0.4l2.47,-1.89l2.88,-1.31l3.85,0.48l3.71,-1.94l3.82,-1.04l1.56,1.68l0.49,0.08l1.87,-1.04l0.65,-1.98l1.24,0.35l4.16,3.94l0.54,0.01l2.75,-2.49l0.26,2.59l0.49,0.35l3.08,-0.73l1.04,-1.27l2.73,0.23l3.83,1.86l5.86,1.61l3.47,0.75l2.44,-0.26l2.73,1.78l-2.98,1.81l-0.19,0.41l0.31,0.32l4.53,0.92l6.87,-0.5l2.0,-0.69l2.49,2.39l0.53,0.02l2.72,-2.16l-0.02,-0.64l-2.16,-1.54l1.15,-1.06l4.83,-0.61l1.84,0.95l2.48,2.31l3.01,-0.23l4.55,1.92l3.85,-0.67l3.61,0.1l0.41,-0.44l-0.25,-2.36l1.79,-0.61l3.49,1.32l-0.01,3.77l0.31,0.39l0.45,-0.22l1.48,-3.16l1.74,0.1l0.41,-0.3l1.13,-4.37l-2.78,-3.11l-2.8,-1.74l0.19,-4.64l2.71,-3.07l2.98,0.67l2.41,1.95l3.19,4.8l-1.99,1.97l0.21,0.68l4.33,0.84l-0.01,4.15l0.25,0.37l0.44,-0.09l3.07,-3.15l2.54,2.39l-0.61,3.33l2.42,2.88l0.61,0.0l2.61,-3.08l1.88,-3.82l0.17,-4.58l6.72,0.94l3.13,2.04l0.13,1.82l-1.76,2.19l-0.01,0.49l1.66,2.16l-0.26,1.71l-4.68,2.8l-3.28,0.61l-2.47,-1.2l-0.55,0.23l-0.73,2.04l-2.38,3.43l-0.74,1.77l-2.74,2.57l-3.44,0.25l-2.21,1.78l-0.28,2.53l-2.82,0.55l-3.12,3.22l-2.72,4.31l-1.03,3.17l-0.14,4.31l0.33,0.41l3.44,0.57l2.24,5.95l0.45,0.23l3.4,-0.69l4.52,1.51l2.43,1.31l1.91,1.73l3.1,0.96l2.62,1.46l6.6,0.54l-0.35,2.74l0.81,3.53l1.81,3.78l3.83,3.3l0.45,0.04l2.1,-1.28l1.37,-3.69l-1.31,-5.38l-1.45,-1.58l3.57,-1.47l2.84,-2.46l1.52,-2.8l-0.25,-2.55l-1.7,-3.07l-2.85,-2.61l2.8,-3.95l-1.08,-3.37l-0.79,-5.67l1.36,-0.7l6.76,1.41l2.12,-0.96l5.12,3.36l1.05,1.61l4.08,0.26l-0.06,2.87l0.83,4.7l0.3,0.32l2.16,0.54l1.73,2.06l0.5,0.09l3.63,-2.03l2.52,-4.19l1.26,-1.32l7.6,11.72l-0.92,2.04l0.16,0.51l3.3,1.97l2.22,1.98l4.1,0.98l1.43,0.99l0.95,2.79l2.1,0.68l0.84,1.08l0.17,3.45l-3.37,2.26l-4.22,1.24l-3.06,2.63l-4.06,0.51l-5.35,-0.69l-6.39,0.2l-2.3,2.41l-3.26,1.51l-6.47,7.15l-0.06,0.48l0.44,0.19l2.13,-0.52l4.17,-4.24l5.12,-2.62l3.52,-0.3l1.69,1.21l-2.12,2.21l0.81,3.47l1.02,2.61l3.47,1.6l4.14,-0.45l2.15,-2.8l0.26,1.48l1.14,0.8l-2.56,1.69l-5.5,1.82l-2.54,1.27l-2.74,2.15l-1.4,-0.16l-0.07,-2.01l4.14,-2.44l0.18,-0.45l-0.39,-0.29l-6.63,0.45l-1.39,-1.49l-0.14,-4.43l-1.11,-0.91l-1.82,0.39l-0.66,-0.66l-0.6,0.03l-1.91,2.39l-0.82,2.52l-0.8,1.27l-1.67,0.56l-0.46,0.76l-8.31,0.07l-1.21,0.62l-2.35,1.97l-0.71,-0.14l-1.37,0.96l-1.12,-0.48l-4.74,1.26l-0.9,1.17l0.21,0.62l1.73,0.3l-1.81,0.31l-1.85,0.81l-2.11,-0.13l-2.95,1.78l-0.69,-0.09l1.39,-2.1l1.73,-1.21l0.1,-2.29l1.16,-1.99l0.49,0.53l2.03,0.42l1.2,-1.16l0.02,-0.47l-2.66,-3.51l-2.28,-0.61l-5.64,-0.71l-0.4,-0.57l-0.79,0.13l0.2,-0.41l-0.22,-0.55l-0.68,-0.26l0.19,-1.26l-0.78,-0.73l0.31,-0.64l-0.29,-0.57l-2.6,-0.44l-0.75,-1.63l-0.94,-0.66l-4.31,-0.65l-1.13,1.19l-1.48,0.59l-0.85,1.06l-2.83,-0.76l-2.09,0.39l-2.39,-0.97l-4.24,-0.7l-0.57,-0.4l-0.41,-1.63l-0.4,-0.3l-0.85,0.02l-0.39,0.4l-0.01,0.85l-69.13,-0.01l-6.51,-4.52l-4.5,-1.38l-1.26,-2.66l0.33,-1.93l-0.23,-0.43l-3.01,-1.35l-0.55,-2.77l-2.89,-2.38l-0.04,-1.45l1.39,-1.83l-0.28,-2.55l-4.16,-2.2l-4.07,-6.6l-4.02,-3.22l-1.3,-1.88l-0.5,-0.13l-2.51,1.21l-2.23,1.87l-3.85,-3.88l-2.44,-1.04l-2.22,-0.13l0.03,-37.49ZM260.37,148.65l3.04,0.76l2.26,1.2l-3.78,-0.95l-1.53,-1.01ZM249.4,3.81l6.68,0.49l5.32,0.79l4.26,1.57l-0.07,1.1l-5.85,2.53l-6.02,1.21l-2.39,1.39l-0.18,0.45l0.39,0.29l4.01,-0.02l-4.65,2.82l-4.2,1.74l-4.19,4.59l-5.03,0.92l-1.67,1.15l-7.47,0.59l-0.37,0.37l0.32,0.42l2.41,0.49l-0.81,0.47l-0.12,0.59l1.83,2.41l-2.02,1.59l-3.81,1.51l-1.32,2.16l-3.38,1.53l-0.22,0.48l0.35,1.19l0.4,0.29l3.88,-0.18l0.03,0.61l-6.33,2.95l-6.41,-1.4l-7.43,0.79l-3.72,-0.62l-4.4,-0.25l-0.23,-1.83l4.29,-1.11l0.28,-0.51l-1.1,-3.45l1.0,-0.25l6.58,2.28l0.47,-0.16l-0.05,-0.49l-3.41,-3.45l-3.58,-0.98l1.48,-1.55l4.34,-1.29l0.97,-2.19l-0.16,-0.48l-3.42,-2.13l-0.81,-2.26l6.2,0.22l2.24,0.58l3.91,-2.1l0.2,-0.43l-0.35,-0.32l-5.64,-0.67l-8.73,0.36l-4.26,-1.9l-2.12,-2.4l-2.78,-1.66l-0.41,-1.52l3.31,-1.03l2.93,-0.2l4.91,-0.99l3.7,-2.27l2.87,0.3l2.62,1.67l0.56,-0.14l1.82,-3.2l3.13,-0.94l4.44,-0.69l7.53,-0.26l1.48,0.67l7.19,-1.06l10.8,0.79ZM203.85,57.54l0.01,0.42l1.97,2.97l0.68,-0.02l2.24,-3.72l5.95,-1.86l4.01,4.64l-0.35,2.91l0.5,0.43l4.95,-1.36l2.32,-1.8l5.31,2.28l3.27,2.11l0.3,1.84l0.48,0.33l4.42,-0.99l2.64,2.87l5.97,1.77l2.06,1.72l2.11,3.71l-4.19,1.86l-0.01,0.73l5.9,2.83l3.94,0.94l3.78,3.95l3.46,0.25l-0.63,2.37l-4.11,4.47l-2.76,-1.56l-3.9,-3.94l-3.59,0.41l-0.33,0.34l-0.19,2.72l2.63,2.38l3.42,1.89l0.94,0.97l1.55,3.75l-0.7,2.29l-2.74,-0.92l-6.25,-3.15l-0.51,0.13l0.05,0.52l6.07,5.69l0.18,0.59l-6.09,-1.39l-5.31,-2.24l-2.63,-1.66l0.6,-0.77l-0.12,-0.6l-7.39,-4.01l-0.59,0.37l0.03,0.79l-6.73,0.6l-1.69,-1.1l1.36,-2.46l4.51,-0.07l5.15,-0.52l0.31,-0.6l-0.74,-1.3l0.78,-1.84l3.21,-4.05l-0.67,-2.35l-1.11,-1.6l-3.84,-2.1l-4.35,-1.28l0.91,-0.63l0.06,-0.61l-2.65,-2.75l-2.34,-0.36l-1.89,-1.46l-0.53,0.03l-1.24,1.23l-4.36,0.55l-9.04,-0.99l-9.26,-1.98l-1.6,-1.22l2.22,-1.77l0.13,-0.44l-0.38,-0.27l-3.22,-0.02l-0.72,-4.25l1.83,-4.04l2.42,-1.85l5.5,-1.1l-1.39,2.35ZM261.19,159.33l2.07,0.61l1.44,-0.04l-1.15,0.63l-2.94,-1.23l-0.4,-0.68l0.36,-0.37l0.61,1.07ZM230.83,84.39l-2.37,0.18l-0.49,-1.63l0.93,-2.09l1.94,-0.51l1.62,0.99l0.02,1.52l-1.66,1.54ZM229.43,58.25l0.11,0.65l-4.87,-0.21l-2.72,0.62l-3.1,-2.57l0.08,-1.26l0.86,-0.23l5.57,0.51l4.08,2.5ZM222.0,105.02l-0.72,1.49l-0.63,-0.19l-0.48,-0.84l0.81,-0.99l0.65,0.05l0.37,0.46ZM183.74,38.32l2.9,1.7l4.79,-0.01l1.84,1.46l-0.49,1.68l0.23,0.48l2.82,1.14l1.76,1.26l7.01,0.65l4.1,-1.1l5.03,-0.43l3.93,0.35l2.48,1.77l0.46,1.7l-1.3,1.1l-3.56,1.01l-3.23,-0.59l-7.17,0.76l-5.09,0.09l-3.99,-0.6l-6.42,-1.54l-0.79,-2.51l-0.3,-2.49l-2.64,-2.5l-5.32,-0.72l-2.52,-1.4l0.68,-1.57l4.78,0.31ZM207.38,91.35l0.4,1.56l0.56,0.26l1.06,-0.52l1.32,0.96l5.42,2.57l0.2,1.68l0.46,0.35l1.68,-0.28l1.15,0.85l-1.55,0.87l-3.61,-0.88l-1.32,-1.69l-0.57,-0.06l-2.45,2.1l-3.12,1.79l-0.7,-1.87l-0.42,-0.26l-2.16,0.24l1.39,-1.39l0.32,-3.14l0.76,-3.35l1.18,0.22ZM215.49,102.6l-2.67,1.95l-1.4,-0.07l-0.3,-0.58l1.53,-1.48l2.84,0.18ZM202.7,24.12l2.53,1.59l-2.87,1.4l-4.53,4.05l-4.25,0.38l-5.03,-0.68l-2.45,-2.04l0.03,-1.62l1.82,-1.37l0.14,-0.45l-0.38,-0.27l-4.45,0.04l-2.59,-1.76l-1.41,-2.29l1.57,-2.32l1.62,-1.66l2.44,-0.39l0.25,-0.65l-0.6,-0.74l4.86,-0.25l3.24,3.11l8.16,2.3l1.9,3.61ZM187.47,59.2l-2.76,3.49l-2.38,-0.15l-1.44,-3.84l0.04,-2.2l1.19,-1.88l2.3,-1.23l5.07,0.17l4.11,1.02l-3.24,3.72l-2.88,0.89ZM186.07,48.79l-1.08,1.53l-3.34,-0.34l-2.56,-1.1l1.03,-1.75l3.25,-1.23l1.95,1.58l0.75,1.3ZM185.71,35.32l-5.3,-0.2l-0.32,-0.71l4.31,0.07l1.3,0.84ZM180.68,32.48l-3.34,1.0l-1.79,-1.1l-0.98,-1.87l-0.15,-1.73l4.1,0.53l2.67,1.7l-0.51,1.47ZM180.9,76.31l-1.1,1.08l-3.13,-1.23l-2.12,0.43l-2.71,-1.57l1.72,-1.09l1.55,-1.72l3.81,1.9l1.98,2.2ZM169.74,54.87l2.96,0.97l4.17,-0.57l0.41,0.88l-2.14,2.11l0.09,0.64l3.55,1.92l-0.4,3.72l-3.79,1.65l-2.17,-0.35l-1.72,-1.74l-6.02,-3.5l0.03,-0.85l4.68,0.54l0.4,-0.21l-0.05,-0.45l-2.48,-2.81l2.46,-1.95ZM174.45,40.74l1.37,1.73l0.07,2.44l-1.05,3.45l-3.79,0.47l-2.32,-0.69l0.05,-2.64l-0.44,-0.41l-3.68,0.35l-0.12,-3.1l2.45,0.1l3.67,-1.73l3.41,0.29l0.37,-0.26ZM170.05,31.55l0.67,1.56l-3.33,-0.49l-4.22,-1.77l-4.35,-0.16l1.4,-0.94l-0.06,-0.7l-2.81,-1.23l-0.12,-1.39l4.39,0.68l6.62,1.98l1.81,2.47ZM134.5,58.13l-1.02,1.82l0.45,0.58l5.4,-1.39l3.33,2.29l0.49,-0.03l2.6,-2.23l1.94,1.32l2.0,4.5l0.7,0.06l1.3,-2.29l-1.63,-4.46l1.69,-0.54l2.31,0.71l2.65,1.81l2.49,7.92l8.48,4.27l-0.19,1.35l-3.79,0.33l-0.26,0.67l1.4,1.49l-0.58,1.1l-4.23,-0.64l-4.43,-1.19l-3.0,0.28l-4.66,1.47l-10.52,1.04l-1.43,-2.02l-3.42,-1.2l-2.21,0.43l-2.51,-2.86l4.84,-1.05l3.6,0.19l3.27,-0.78l0.31,-0.39l-0.31,-0.39l-4.84,-1.06l-8.79,0.27l-0.85,-1.07l5.26,-1.66l0.27,-0.45l-0.4,-0.34l-3.8,0.06l-3.81,-1.06l1.81,-3.01l1.66,-1.79l6.48,-2.81l1.97,0.71ZM158.7,56.61l-1.7,2.44l-3.2,-2.75l0.37,-0.3l3.11,-0.18l1.42,0.79ZM149.61,42.73l1.01,1.89l0.5,0.18l2.14,-0.82l2.23,0.19l0.36,2.04l-1.33,2.09l-8.28,0.76l-6.35,2.15l-3.41,0.1l-0.19,-0.96l4.9,-2.08l0.23,-0.46l-0.41,-0.31l-11.25,0.59l-2.89,-0.74l3.04,-4.44l2.14,-1.32l6.81,1.69l4.58,3.06l4.37,0.39l0.36,-0.63l-3.36,-4.6l1.85,-1.53l2.18,0.51l0.77,2.26ZM144.76,34.41l-4.36,1.44l-3.0,-1.4l1.46,-1.24l3.47,-0.52l2.96,0.71l-0.52,1.01ZM145.13,29.83l-1.9,0.66l-3.67,-0.0l2.27,-1.61l3.3,0.95ZM118.92,65.79l-6.03,2.02l-1.33,-1.9l-5.38,-2.28l2.59,-5.05l2.16,-3.14l-0.02,-0.48l-1.97,-2.41l7.64,-0.7l3.6,1.02l6.3,0.27l4.42,2.95l-2.53,0.98l-6.24,3.43l-3.1,3.28l-0.11,2.01ZM129.54,35.53l-0.28,3.37l-1.72,1.62l-2.33,0.28l-4.61,2.19l-3.86,0.76l-2.64,-0.87l3.72,-3.4l5.01,-3.34l3.72,0.07l3.0,-0.67ZM111.09,152.69l-0.67,0.24l-3.85,-1.37l-0.83,-1.17l-2.12,-1.07l-0.66,-1.02l-2.4,-0.55l-0.74,-1.71l6.02,1.45l2.0,2.55l2.52,1.39l0.73,1.27ZM87.8,134.64l0.89,0.29l1.86,-0.21l-0.65,3.34l1.69,2.33l-1.31,-1.33l-0.99,-1.62l-1.17,-0.98l-0.33,-1.82Z\", \"name\": \"Canada\"}, \"CG\": {\"path\": \"M466.72,276.48l-0.1,1.03l-1.25,2.97l-0.19,3.62l-0.46,1.78l-0.23,0.63l-1.61,1.19l-1.21,1.39l-1.09,2.43l0.04,2.09l-3.25,3.24l-0.5,-0.24l-0.5,-0.83l-1.36,-0.02l-0.98,0.89l-1.68,-0.99l-1.54,1.24l-1.52,-1.96l1.57,-1.14l0.11,-0.52l-0.77,-1.35l2.1,-0.66l0.39,-0.73l1.05,0.82l2.21,0.11l1.12,-1.37l0.37,-1.81l-0.27,-2.09l-1.13,-1.5l1.0,-2.69l-0.13,-0.45l-0.92,-0.58l-1.6,0.17l-0.51,-0.94l0.1,-0.61l2.75,0.09l3.97,1.24l0.51,-0.33l0.17,-1.28l1.24,-2.21l1.28,-1.14l2.76,0.49Z\", \"name\": \"Congo\"}, \"CF\": {\"path\": \"M461.16,278.2l-0.26,-1.19l-1.09,-0.77l-0.84,-1.17l-0.29,-1.0l-1.04,-1.15l0.08,-3.43l0.58,-0.49l1.16,-2.35l1.85,-0.17l0.61,-0.62l0.97,0.58l3.15,-0.96l2.48,-1.92l0.02,-0.96l2.81,0.02l2.36,-1.17l1.93,-2.85l1.16,-0.93l1.11,-0.3l0.27,0.86l1.34,1.47l-0.39,2.01l0.3,1.01l4.01,2.75l0.17,0.93l2.63,2.31l0.6,1.44l2.08,1.4l-3.84,-0.21l-1.94,0.88l-1.23,-0.49l-2.67,1.2l-1.29,-0.18l-0.51,0.36l-0.6,1.22l-3.35,-0.65l-1.57,-0.91l-2.42,-0.83l-1.45,0.91l-0.97,1.27l-0.26,1.56l-3.22,-0.43l-1.49,1.33l-0.94,1.62Z\", \"name\": \"Central African Rep.\"}, \"CD\": {\"path\": \"M487.01,272.38l2.34,-0.14l1.35,1.84l1.34,0.45l0.86,-0.39l1.21,0.12l1.07,-0.41l0.54,0.89l2.04,1.54l-0.14,2.72l0.7,0.54l-1.38,1.13l-1.53,2.54l-0.17,2.05l-0.59,1.08l-0.02,1.72l-0.72,0.84l-0.66,3.01l0.63,1.32l-0.44,4.26l0.64,1.47l-0.37,1.22l0.86,1.8l1.53,1.41l0.3,1.26l0.44,0.5l-4.08,0.75l-0.92,1.81l0.51,1.34l-0.74,5.43l0.17,0.38l2.45,1.46l0.54,-0.1l0.12,1.62l-1.28,-0.01l-1.85,-2.35l-1.94,-0.45l-0.48,-1.13l-0.55,-0.2l-1.41,0.74l-1.71,-0.3l-1.01,-1.18l-2.49,-0.19l-0.44,-0.77l-1.98,-0.21l-2.88,0.36l0.11,-2.41l-0.85,-1.13l-0.16,-1.36l0.32,-1.73l-0.46,-0.89l-0.04,-1.49l-0.4,-0.39l-2.53,0.02l0.1,-0.41l-0.39,-0.49l-1.28,0.01l-0.43,0.45l-1.62,0.32l-0.83,1.79l-1.09,-0.28l-2.4,0.52l-1.37,-1.91l-1.3,-3.3l-0.38,-0.27l-7.39,-0.03l-2.46,0.42l0.5,-0.45l0.37,-1.47l0.66,-0.38l0.92,0.08l0.73,-0.82l0.87,0.02l0.31,0.68l1.4,0.36l3.59,-3.63l0.01,-2.23l1.02,-2.29l2.69,-2.39l0.43,-0.99l0.49,-1.96l0.17,-3.51l1.25,-2.95l0.36,-3.14l0.86,-1.13l1.1,-0.66l3.57,1.73l3.65,0.73l0.46,-0.21l0.8,-1.46l1.24,0.19l2.61,-1.17l0.81,0.44l1.04,-0.03l0.59,-0.66l0.7,-0.16l1.81,0.25Z\", \"name\": \"Dem. Rep. Congo\"}, \"CZ\": {\"path\": \"M458.46,144.88l1.22,1.01l1.47,0.23l0.13,0.93l1.36,0.68l0.54,-0.2l0.24,-0.55l1.15,0.25l0.53,1.09l1.68,0.18l0.6,0.84l-1.04,0.73l-0.96,1.28l-1.6,0.17l-0.55,0.56l-1.04,-0.46l-1.05,0.15l-2.12,-0.96l-1.05,0.34l-1.2,1.12l-1.56,-0.87l-2.57,-2.1l-0.53,-1.88l4.7,-2.52l0.71,0.26l0.9,-0.28Z\", \"name\": \"Czech Rep.\"}, \"CY\": {\"path\": \"M504.36,193.47l0.43,0.28l-1.28,0.57l-0.92,-0.28l-0.24,-0.46l2.01,-0.13Z\", \"name\": \"Cyprus\"}, \"CR\": {\"path\": \"M211.34,258.05l0.48,0.99l1.6,1.6l-0.54,0.45l0.29,1.42l-0.25,1.19l-1.09,-0.59l-0.05,-1.25l-2.46,-1.42l-0.28,-0.77l-0.66,-0.45l-0.45,-0.0l-0.11,1.04l-1.32,-0.95l0.31,-1.3l-0.36,-0.6l0.31,-0.27l1.42,0.58l1.29,-0.14l0.56,0.56l0.74,0.17l0.55,-0.27Z\", \"name\": \"Costa Rica\"}, \"CU\": {\"path\": \"M221.21,227.25l1.27,1.02l2.19,-0.28l4.43,3.33l2.08,0.43l-0.1,0.38l0.36,0.5l1.75,0.1l1.48,0.84l-3.11,0.51l-4.15,-0.03l0.77,-0.67l-0.04,-0.64l-1.2,-0.74l-1.49,-0.16l-0.7,-0.61l-0.56,-1.4l-0.4,-0.25l-1.34,0.1l-2.2,-0.66l-0.88,-0.58l-3.18,-0.4l-0.27,-0.16l0.58,-0.74l-0.36,-0.29l-2.72,-0.05l-1.7,1.29l-0.91,0.03l-0.61,0.69l-1.01,0.22l1.11,-1.29l1.01,-0.52l3.69,-1.01l3.98,0.21l2.21,0.84Z\", \"name\": \"Cuba\"}, \"SZ\": {\"path\": \"M500.35,351.36l0.5,2.04l-0.38,0.89l-1.05,0.21l-1.23,-1.2l-0.02,-0.64l0.83,-1.57l1.34,0.27Z\", \"name\": \"Swaziland\"}, \"SY\": {\"path\": \"M511.0,199.79l0.05,-1.33l0.54,-1.36l1.28,-0.99l0.13,-0.45l-0.41,-1.11l-1.14,-0.36l-0.19,-1.74l0.52,-1.0l1.29,-1.21l0.2,-1.18l0.59,0.23l2.62,-0.76l1.36,0.52l2.06,-0.01l2.95,-1.08l3.25,-0.26l-0.67,0.94l-1.28,0.66l-0.21,0.4l0.23,2.01l-0.88,3.19l-10.15,5.73l-2.15,-0.85Z\", \"name\": \"Syria\"}, \"KG\": {\"path\": \"M621.35,172.32l-3.87,1.69l-0.96,1.18l-3.04,0.34l-1.13,1.86l-2.36,-0.35l-1.99,0.63l-2.39,1.4l0.06,0.95l-0.4,0.37l-4.52,0.43l-3.02,-0.93l-2.37,0.17l0.11,-0.79l2.32,0.42l1.13,-0.88l1.99,0.2l3.21,-2.14l-0.03,-0.69l-2.97,-1.57l-1.94,0.65l-1.22,-0.74l1.71,-1.58l-0.12,-0.67l-0.36,-0.15l0.32,-0.77l1.36,-0.35l4.02,1.02l0.49,-0.3l0.35,-1.59l1.09,-0.48l3.42,1.22l1.11,-0.31l7.64,0.39l1.16,1.0l1.23,0.39Z\", \"name\": \"Kyrgyzstan\"}, \"KE\": {\"path\": \"M506.26,284.69l1.87,-2.56l0.93,-2.15l-1.38,-4.08l-1.06,-1.6l2.82,-2.75l0.79,0.26l0.12,1.41l0.86,0.83l1.9,0.11l3.28,2.13l3.57,0.44l1.05,-1.12l1.96,-0.9l0.82,0.68l1.16,0.09l-1.78,2.45l0.03,9.12l1.3,1.94l-1.37,0.78l-0.67,1.03l-1.08,0.46l-0.34,1.67l-0.81,1.07l-0.45,1.55l-0.68,0.56l-3.2,-2.23l-0.35,-1.58l-8.86,-4.98l0.14,-1.6l-0.57,-1.04Z\", \"name\": \"Kenya\"}, \"SS\": {\"path\": \"M481.71,263.34l1.07,-0.72l1.2,-3.18l1.36,-0.26l1.61,1.99l0.87,0.34l1.1,-0.41l1.5,0.07l0.57,0.53l2.49,0.0l0.44,-0.63l1.07,-0.4l0.45,-0.84l0.59,-0.33l1.9,1.33l1.6,-0.2l2.83,-3.33l-0.32,-2.21l1.59,-0.52l-0.24,1.6l0.3,1.83l1.35,1.18l0.2,1.87l0.35,0.41l0.02,1.53l-0.23,0.47l-1.42,0.25l-0.85,1.44l0.3,0.6l1.4,0.16l1.11,1.08l0.59,1.13l1.03,0.53l1.28,2.36l-4.41,3.98l-1.74,0.01l-1.89,0.55l-1.47,-0.52l-1.15,0.57l-2.96,-2.62l-1.3,0.49l-1.06,-0.15l-0.79,0.39l-0.82,-0.22l-1.8,-2.7l-1.91,-1.1l-0.66,-1.5l-2.62,-2.32l-0.18,-0.94l-2.37,-1.6Z\", \"name\": \"S. Sudan\"}, \"SR\": {\"path\": \"M283.12,270.19l2.1,0.53l-1.08,1.95l0.2,1.72l0.93,1.49l-0.59,2.03l-0.43,0.71l-1.12,-0.42l-1.32,0.22l-0.93,-0.2l-0.46,0.26l-0.25,0.73l0.33,0.7l-0.89,-0.13l-1.39,-1.97l-0.31,-1.34l-0.97,-0.31l-0.89,-1.47l0.35,-1.61l1.45,-0.82l0.33,-1.87l2.61,0.44l0.57,-0.47l1.75,-0.16Z\", \"name\": \"Suriname\"}, \"KH\": {\"path\": \"M689.52,249.39l0.49,1.45l-0.28,2.74l-4.0,1.86l-0.16,0.6l0.68,0.95l-2.06,0.17l-2.05,0.97l-1.82,-0.32l-2.12,-3.7l-0.55,-2.85l1.4,-1.85l3.02,-0.45l2.23,0.35l2.01,0.98l0.51,-0.14l0.95,-1.48l1.74,0.74Z\", \"name\": \"Cambodia\"}, \"SV\": {\"path\": \"M195.8,250.13l1.4,-1.19l2.24,1.45l0.98,-0.27l0.44,0.2l-0.27,1.05l-1.14,-0.03l-3.64,-1.21Z\", \"name\": \"El Salvador\"}, \"SK\": {\"path\": \"M476.82,151.17l-1.14,1.9l-2.73,-0.92l-0.82,0.2l-0.74,0.8l-3.46,0.73l-0.47,0.69l-1.76,0.33l-1.88,-1.0l-0.18,-0.81l0.38,-0.75l1.87,-0.32l1.74,-1.89l0.83,0.16l0.79,-0.34l1.51,1.04l1.34,-0.63l1.25,0.3l1.65,-0.42l1.81,0.95Z\", \"name\": \"Slovakia\"}, \"KR\": {\"path\": \"M737.51,185.84l0.98,-0.1l0.87,-1.17l2.69,-0.32l0.33,-0.29l1.76,2.79l0.58,1.76l0.02,3.12l-0.8,1.32l-2.21,0.55l-1.93,1.13l-1.8,0.19l-0.2,-1.1l0.43,-2.28l-0.95,-2.56l1.43,-0.37l0.23,-0.62l-1.43,-2.06Z\", \"name\": \"Korea\"}, \"SI\": {\"path\": \"M456.18,162.07l-0.51,-1.32l0.18,-1.05l1.69,0.2l1.42,-0.71l2.09,-0.07l0.62,-0.51l0.21,0.47l-1.61,0.67l-0.44,1.34l-0.66,0.24l-0.26,0.82l-1.22,-0.49l-0.84,0.46l-0.69,-0.04Z\", \"name\": \"Slovenia\"}, \"KP\": {\"path\": \"M736.77,185.16l-0.92,-0.42l-0.88,0.62l-1.21,-0.88l0.96,-1.15l0.59,-2.59l-0.46,-0.74l-2.09,-0.77l1.64,-1.52l2.72,-1.58l1.58,-1.91l1.11,0.78l2.17,0.11l0.41,-0.5l-0.3,-1.22l3.52,-1.18l0.94,-1.4l0.98,1.08l-2.19,2.18l0.01,2.14l-1.06,0.54l-1.41,1.4l-1.7,0.52l-1.25,1.09l-0.14,1.98l0.94,0.45l1.15,1.04l-0.13,0.26l-2.6,0.29l-1.13,1.29l-1.22,0.08Z\", \"name\": \"Dem. Rep. Korea\"}, \"SO\": {\"path\": \"M525.13,288.48l-1.13,-1.57l-0.03,-8.86l2.66,-3.38l1.67,-0.13l2.13,-1.69l3.41,-0.23l7.08,-7.55l2.91,-3.69l0.08,-4.82l2.98,-0.67l1.24,-0.86l0.45,-0.0l-0.2,3.0l-1.21,3.62l-2.73,5.97l-2.13,3.65l-5.03,6.16l-8.56,6.4l-2.78,3.08l-0.8,1.56Z\", \"name\": \"Somalia\"}, \"SN\": {\"path\": \"M390.09,248.21l0.12,1.55l0.49,1.46l0.96,0.82l0.05,1.28l-1.26,-0.19l-0.75,0.33l-1.84,-0.61l-5.84,-0.13l-2.54,0.51l-0.22,-1.03l1.77,0.04l2.01,-0.91l1.03,0.48l1.09,0.04l1.29,-0.62l0.14,-0.58l-0.51,-0.74l-1.81,0.25l-1.13,-0.63l-0.79,0.04l-0.72,0.61l-2.31,0.06l-0.92,-1.77l-0.81,-0.64l0.64,-0.35l2.46,-3.74l1.04,0.19l1.38,-0.56l1.19,-0.02l2.72,1.37l3.03,3.48Z\", \"name\": \"Senegal\"}, \"SL\": {\"path\": \"M394.46,264.11l-1.73,1.98l-0.58,1.33l-2.07,-1.06l-1.22,-1.26l-0.65,-2.39l1.16,-0.96l0.67,-1.17l1.21,-0.52l1.66,0.0l1.03,1.64l0.52,2.41Z\", \"name\": \"Sierra Leone\"}, \"SB\": {\"path\": \"M826.69,311.6l-0.61,0.09l-0.2,-0.33l0.37,0.15l0.44,0.09ZM824.18,307.38l-0.26,-0.3l-0.31,-0.91l0.03,0.0l0.54,1.21ZM823.04,309.33l-1.66,-0.22l-0.2,-0.52l1.16,0.28l0.69,0.46ZM819.28,304.68l1.14,0.65l0.02,0.03l-0.81,-0.44l-0.35,-0.23Z\", \"name\": \"Solomon Is.\"}, \"SA\": {\"path\": \"M537.53,210.34l2.0,0.24l0.9,1.32l1.49,-0.06l0.87,2.08l1.29,0.76l0.51,0.99l1.56,1.03l-0.1,1.9l0.32,0.9l1.58,2.47l0.76,0.53l0.7,-0.04l1.68,4.23l7.53,1.33l0.51,-0.29l0.77,1.25l-1.55,4.87l-7.29,2.52l-7.3,1.03l-2.34,1.17l-1.88,2.74l-0.76,0.28l-0.82,-0.78l-0.91,0.12l-2.88,-0.51l-3.51,0.25l-0.86,-0.56l-0.57,0.15l-0.66,1.27l0.16,1.11l-0.43,0.32l-0.93,-1.4l-0.33,-1.16l-1.23,-0.88l-1.27,-2.06l-0.78,-2.22l-1.73,-1.79l-1.14,-0.48l-1.54,-2.31l-0.21,-3.41l-1.44,-2.93l-1.27,-1.16l-1.33,-0.57l-1.31,-3.37l-0.77,-0.67l-0.97,-1.97l-2.8,-4.03l-1.06,-0.17l0.37,-1.96l0.2,-0.72l2.74,0.3l1.08,-0.84l0.6,-0.94l1.74,-0.35l0.65,-1.03l0.71,-0.4l0.1,-0.62l-2.06,-2.28l4.39,-1.22l0.48,-0.37l2.77,0.69l3.66,1.9l7.03,5.5l4.87,0.3Z\", \"name\": \"Saudi Arabia\"}, \"SE\": {\"path\": \"M480.22,89.3l-4.03,1.17l-2.43,2.86l0.26,2.57l-8.77,6.64l-1.78,5.79l1.78,2.68l2.22,1.96l-2.07,3.77l-2.72,1.13l-0.95,6.04l-1.29,3.01l-2.74,-0.31l-0.4,0.22l-1.31,2.59l-2.34,0.13l-0.75,-3.09l-2.08,-4.03l-1.83,-4.96l1.0,-1.93l2.14,-2.7l0.83,-4.45l-1.6,-2.17l-0.15,-4.94l1.48,-3.39l2.58,-0.15l0.87,-1.59l-0.78,-1.57l3.76,-5.59l4.04,-7.48l2.17,0.01l0.39,-0.29l0.57,-2.07l4.37,0.64l0.46,-0.34l0.33,-2.56l1.1,-0.13l6.94,4.87l0.06,6.32l0.66,1.36Z\", \"name\": \"Sweden\"}, \"SD\": {\"path\": \"M505.98,259.4l-0.34,-0.77l-1.17,-0.9l-0.26,-1.61l0.29,-1.81l-0.34,-0.46l-1.16,-0.17l-0.54,0.59l-1.23,0.11l-0.28,0.65l0.53,0.65l0.17,1.22l-2.44,3.0l-0.96,0.19l-2.39,-1.4l-0.95,0.52l-0.38,0.78l-1.11,0.41l-0.29,0.5l-1.94,0.0l-0.54,-0.52l-1.81,-0.09l-0.95,0.4l-2.45,-2.35l-2.07,0.54l-0.73,1.26l-0.6,2.1l-1.25,0.58l-0.75,-0.62l0.27,-2.65l-1.48,-1.78l-0.22,-1.48l-0.92,-0.96l-0.02,-1.29l-0.57,-1.16l-0.68,-0.16l0.69,-1.29l-0.18,-1.14l0.65,-0.62l0.03,-0.55l-0.36,-0.41l1.55,-2.97l1.91,0.16l0.43,-0.4l-0.1,-10.94l2.49,-0.01l0.4,-0.4l-0.0,-4.82l29.02,0.0l0.64,2.04l-0.49,0.66l0.36,2.69l0.93,3.16l2.12,1.55l-0.89,1.04l-1.72,0.39l-0.98,0.9l-1.43,5.65l0.24,1.15l-0.38,2.06l-0.96,2.38l-1.53,1.31l-1.32,2.91l-1.22,0.86l-0.37,1.34Z\", \"name\": \"Sudan\"}, \"DO\": {\"path\": \"M241.8,239.2l0.05,-0.65l-0.46,-0.73l0.42,-0.44l0.19,-1.0l-0.09,-1.53l1.66,0.01l1.99,0.63l0.33,0.67l1.28,0.19l0.33,0.76l1.0,0.08l0.8,0.62l-0.45,0.51l-1.13,-0.47l-1.88,-0.01l-1.27,0.59l-0.75,-0.55l-1.01,0.54l-0.79,1.4l-0.23,-0.61Z\", \"name\": \"Dominican Rep.\"}, \"DJ\": {\"path\": \"M528.43,256.18l-0.45,0.66l-0.58,-0.25l-1.51,0.13l-0.18,-1.01l1.45,-1.95l0.83,0.17l0.77,-0.44l0.2,1.0l-1.2,0.51l-0.06,0.7l0.73,0.47Z\", \"name\": \"Djibouti\"}, \"DK\": {\"path\": \"M452.28,129.07l-1.19,2.24l-2.13,-1.6l-0.23,-0.95l2.98,-0.95l0.57,1.26ZM447.74,126.31l-0.26,0.57l-0.88,-0.07l-1.8,2.53l0.48,1.69l-1.09,0.36l-1.61,-0.39l-0.89,-1.69l-0.07,-3.43l0.96,-1.73l2.02,-0.2l1.09,-1.07l1.33,-0.67l-0.05,1.06l-0.73,1.41l0.3,1.0l1.2,0.64Z\", \"name\": \"Denmark\"}, \"DE\": {\"path\": \"M453.14,155.55l-0.55,-0.36l-1.2,-0.1l-1.87,0.57l-2.13,-0.13l-0.56,0.63l-0.86,-0.6l-0.96,0.09l-2.57,-0.93l-0.85,0.67l-1.47,-0.02l0.24,-1.75l1.23,-2.14l-0.28,-0.59l-3.52,-0.58l-0.92,-0.66l0.12,-1.2l-0.48,-0.88l0.27,-2.17l-0.37,-3.03l1.41,-0.22l0.63,-1.26l0.66,-3.19l-0.41,-1.18l0.26,-0.39l1.66,-0.15l0.33,0.54l0.62,0.07l1.7,-1.69l-0.54,-3.02l1.37,0.33l1.31,-0.37l0.31,1.18l2.25,0.71l-0.02,0.92l0.5,0.4l2.55,-0.65l1.34,-0.87l2.57,1.24l1.06,0.98l0.48,1.44l-0.57,0.74l-0.0,0.48l0.87,1.15l0.57,1.64l-0.14,1.29l0.82,1.7l-1.5,-0.07l-0.56,0.57l-4.47,2.15l-0.22,0.54l0.68,2.26l2.58,2.16l-0.66,1.11l-0.79,0.36l-0.23,0.43l0.32,1.87Z\", \"name\": \"Germany\"}, \"YE\": {\"path\": \"M528.27,246.72l0.26,-0.42l-0.22,-1.01l0.19,-1.5l0.92,-0.69l-0.07,-1.35l0.39,-0.75l1.01,0.47l3.34,-0.27l3.76,0.41l0.95,0.81l1.36,-0.58l1.74,-2.62l2.18,-1.09l6.86,-0.94l2.48,5.41l-1.64,0.76l-0.56,1.9l-6.23,2.16l-2.29,1.8l-1.93,0.05l-1.41,1.02l-4.24,0.74l-1.72,1.49l-3.28,0.19l-0.52,-1.18l0.02,-1.51l-1.34,-3.29Z\", \"name\": \"Yemen\"}, \"AT\": {\"path\": \"M462.89,152.8l0.04,2.25l-1.07,0.0l-0.33,0.63l0.36,0.51l-1.04,2.13l-2.02,0.07l-1.33,0.7l-5.29,-0.99l-0.47,-0.93l-0.44,-0.21l-2.47,0.55l-0.42,0.51l-3.18,-0.81l0.43,-0.91l1.12,0.78l0.6,-0.17l0.25,-0.58l1.93,0.12l1.86,-0.56l1.0,0.08l0.68,0.57l0.62,-0.15l0.26,-0.77l-0.3,-1.78l0.8,-0.44l0.68,-1.15l1.52,0.85l0.47,-0.06l1.34,-1.25l0.64,-0.17l1.81,0.92l1.28,-0.11l0.7,0.37Z\", \"name\": \"Austria\"}, \"DZ\": {\"path\": \"M441.46,188.44l-0.32,1.07l0.39,2.64l-0.54,2.16l-1.58,1.82l0.37,2.39l1.91,1.55l0.18,0.8l1.42,1.03l1.84,7.23l0.12,1.16l-0.57,5.0l0.2,1.51l-0.87,0.99l-0.02,0.51l1.41,1.86l0.14,1.2l0.89,1.48l0.5,0.16l0.98,-0.41l1.73,1.08l0.82,1.23l-8.22,4.81l-7.23,5.11l-3.43,1.13l-2.3,0.21l-0.28,-1.59l-2.56,-1.09l-0.67,-1.25l-26.12,-17.86l0.01,-3.47l3.77,-1.88l2.44,-0.41l2.12,-0.75l1.08,-1.42l2.81,-1.05l0.35,-2.08l1.33,-0.29l1.04,-0.94l3.47,-0.69l0.46,-1.08l-0.1,-0.45l-0.58,-0.52l-0.82,-2.81l-0.19,-1.83l-0.78,-1.49l2.03,-1.31l2.63,-0.48l1.7,-1.22l2.31,-0.84l8.24,-0.73l1.49,0.38l2.28,-1.1l2.46,-0.02l0.92,0.6l1.35,-0.05Z\", \"name\": \"Algeria\"}, \"US\": {\"path\": \"M892.72,99.2l1.31,0.53l1.41,-0.37l1.89,0.98l1.89,0.42l-1.32,0.58l-2.9,-1.53l-2.08,0.22l-0.26,-0.15l0.07,-0.67ZM183.22,150.47l0.37,1.47l1.12,0.85l4.23,0.7l2.39,0.98l2.17,-0.38l1.85,0.5l-1.55,0.65l-3.49,2.61l-0.16,0.77l0.5,0.39l2.33,-0.61l1.77,1.02l5.15,-2.4l-0.31,0.65l0.25,0.56l1.36,0.38l1.71,1.16l4.7,-0.88l0.67,0.85l1.31,0.21l0.58,0.58l-1.34,0.17l-2.18,-0.32l-3.6,0.89l-2.71,3.25l0.35,0.9l0.59,-0.0l0.55,-0.6l-1.36,4.65l0.29,3.09l0.67,1.58l0.61,0.45l1.77,-0.44l1.6,-1.96l0.14,-2.21l-0.82,-1.96l0.11,-1.13l1.19,-2.37l0.44,-0.33l0.48,0.75l0.4,-0.29l0.4,-1.37l0.6,-0.47l0.24,-0.8l1.69,0.49l1.65,1.08l-0.03,2.37l-1.27,1.13l-0.0,1.13l0.87,0.36l1.66,-1.29l0.5,0.17l0.5,2.6l-2.49,3.75l0.17,0.61l1.54,0.62l1.48,0.17l1.92,-0.44l4.72,-2.15l2.16,-1.8l-0.05,-1.24l0.75,-0.22l3.92,0.36l2.12,-1.05l0.21,-0.4l-0.28,-1.48l3.27,-2.4l8.32,-0.02l0.56,-0.82l1.9,-0.77l0.93,-1.51l0.74,-2.37l1.58,-1.98l0.92,0.62l1.47,-0.47l0.8,0.66l-0.0,4.09l1.96,2.6l-2.34,1.31l-5.37,2.09l-1.83,2.72l0.02,1.79l0.83,1.59l0.54,0.23l-6.19,0.94l-2.2,0.89l-0.23,0.48l0.45,0.29l2.99,-0.46l-2.19,0.56l-1.13,0.0l-0.15,-0.32l-0.48,0.08l-0.76,0.82l0.22,0.67l0.32,0.06l-0.41,1.62l-1.27,1.58l-1.48,-1.07l-0.49,-0.04l-0.16,0.46l0.52,1.58l0.61,0.59l0.03,0.79l-0.95,1.38l-1.21,-1.22l-0.27,-2.27l-0.35,-0.35l-0.42,0.25l-0.48,1.27l0.33,1.41l-0.97,-0.27l-0.48,0.24l0.18,0.5l1.52,0.83l0.1,2.52l0.79,0.51l0.52,3.42l-1.42,1.88l-2.47,0.8l-1.71,1.66l-1.31,0.25l-1.27,1.03l-0.43,0.99l-2.69,1.78l-2.64,3.03l-0.45,2.12l0.45,2.08l0.85,2.38l1.09,1.9l0.04,1.2l1.16,3.06l-0.18,2.69l-0.55,1.43l-0.47,0.21l-0.89,-0.23l-0.49,-1.18l-0.87,-0.56l-2.75,-5.16l0.48,-1.68l-0.72,-1.78l-2.01,-2.38l-1.12,-0.53l-2.72,1.18l-1.47,-1.35l-1.57,-0.68l-2.99,0.31l-2.17,-0.3l-2.0,0.19l-1.15,0.46l-0.19,0.58l0.39,0.63l0.14,1.34l-0.84,-0.2l-0.84,0.46l-1.58,-0.07l-2.08,-1.44l-2.09,0.33l-1.91,-0.62l-3.73,0.84l-2.39,2.07l-2.54,1.22l-1.45,1.41l-0.61,1.38l0.34,3.71l-0.29,0.02l-3.5,-1.33l-1.25,-3.11l-1.44,-1.5l-2.24,-3.56l-1.76,-1.09l-2.27,-0.01l-1.71,2.07l-1.76,-0.69l-1.16,-0.74l-1.52,-2.98l-3.93,-3.16l-4.34,-0.0l-0.4,0.4l-0.0,0.74l-6.5,0.02l-9.02,-3.14l-0.34,-0.71l-5.7,0.49l-0.43,-1.29l-1.62,-1.61l-1.14,-0.38l-0.55,-0.88l-1.28,-0.13l-1.01,-0.77l-2.22,-0.27l-0.43,-0.3l-0.36,-1.58l-2.4,-2.83l-2.01,-3.85l-0.06,-0.9l-2.92,-3.26l-0.33,-2.29l-1.3,-1.66l0.52,-2.37l-0.09,-2.57l-0.78,-2.3l0.95,-2.82l0.61,-5.68l-0.47,-4.27l-1.46,-4.08l3.19,0.79l1.26,2.83l0.69,0.08l0.69,-1.14l-1.1,-4.79l68.76,-0.0l0.4,-0.4l0.14,-0.86ZM32.44,67.52l1.73,1.97l0.55,0.05l0.99,-0.79l3.65,0.24l-0.09,0.62l0.32,0.45l3.83,0.77l2.61,-0.43l5.19,1.4l4.84,0.43l1.89,0.57l3.42,-0.7l6.14,1.87l-0.03,38.06l0.38,0.4l2.39,0.11l2.31,0.98l3.9,3.99l0.55,0.04l2.4,-2.03l2.16,-1.04l1.2,1.71l3.95,3.14l4.09,6.63l4.2,2.29l0.06,1.83l-1.02,1.23l-1.16,-1.08l-2.04,-1.03l-0.67,-2.89l-3.28,-3.03l-1.65,-3.57l-6.35,-0.32l-2.82,-1.01l-5.26,-3.85l-6.77,-2.04l-3.53,0.3l-4.81,-1.69l-3.25,-1.63l-2.78,0.8l-0.28,0.46l0.44,2.21l-3.91,0.96l-2.26,1.27l-2.3,0.65l-0.27,-1.65l1.05,-3.42l2.49,-1.09l0.16,-0.6l-0.69,-0.96l-0.55,-0.1l-3.19,2.12l-1.78,2.56l-3.55,2.61l-0.04,0.61l1.56,1.52l-2.07,2.29l-5.11,2.57l-0.77,1.66l-3.76,1.77l-0.92,1.73l-2.69,1.38l-1.81,-0.22l-6.95,3.32l-3.97,0.91l4.85,-2.5l2.59,-1.86l3.26,-0.52l1.19,-1.4l3.42,-2.1l2.59,-2.27l0.42,-2.68l1.23,-2.1l-0.04,-0.46l-0.45,-0.11l-2.68,1.03l-0.63,-0.49l-0.53,0.03l-1.05,1.04l-1.36,-1.54l-0.66,0.08l-0.32,0.62l-0.58,-1.14l-0.56,-0.16l-2.41,1.42l-1.07,-0.0l-0.17,-1.75l0.3,-1.71l-1.61,-1.33l-3.41,0.59l-1.96,-1.63l-1.57,-0.84l-0.15,-2.21l-1.7,-1.43l0.82,-1.88l1.99,-2.12l0.88,-1.92l1.71,-0.24l2.04,0.51l1.87,-1.77l1.91,0.25l1.91,-1.23l0.17,-0.43l-0.47,-1.82l-1.07,-0.7l1.39,-1.17l0.12,-0.45l-0.39,-0.26l-1.65,0.07l-2.66,0.88l-0.75,0.78l-1.92,-0.8l-3.46,0.44l-3.44,-0.91l-1.06,-1.61l-2.65,-1.99l2.91,-1.43l5.5,-2.0l1.52,0.0l-0.26,1.62l0.41,0.46l5.29,-0.16l0.3,-0.65l-2.03,-2.59l-3.14,-1.68l-1.79,-2.12l-2.4,-1.83l-3.09,-1.24l1.04,-1.69l4.23,-0.14l3.36,-2.07l0.73,-2.27l2.39,-1.99l2.42,-0.52l4.65,-1.97l2.46,0.23l3.71,-2.35l3.5,0.89ZM37.6,123.41l-2.25,1.23l-0.95,-0.69l-0.29,-1.24l3.21,-1.63l1.42,0.21l0.67,0.7l-1.8,1.42ZM31.06,234.03l0.98,0.47l0.74,0.87l-1.77,1.07l-0.44,-1.53l0.49,-0.89ZM29.34,232.07l0.18,0.05l0.08,0.05l-0.16,0.03l-0.11,-0.14ZM25.16,230.17l0.05,-0.03l0.18,0.22l-0.13,-0.01l-0.1,-0.18ZM5.89,113.26l-1.08,0.41l-2.21,-1.12l1.53,-0.4l1.62,0.28l0.14,0.83Z\", \"name\": \"United States\"}, \"LV\": {\"path\": \"M489.16,122.85l0.96,0.66l0.22,1.65l0.68,1.76l-3.65,1.7l-2.23,-1.58l-1.29,-0.26l-0.68,-0.77l-2.42,0.34l-4.16,-0.23l-2.47,0.9l0.06,-1.98l1.13,-2.06l1.95,-1.02l2.12,2.58l2.01,-0.07l0.38,-0.33l0.44,-2.52l1.76,-0.53l3.06,1.7l2.15,0.07Z\", \"name\": \"Latvia\"}, \"UY\": {\"path\": \"M286.85,372.74l-0.92,1.5l-2.59,1.44l-1.69,-0.52l-1.42,0.26l-2.39,-1.19l-1.52,0.08l-1.27,-1.3l0.16,-1.5l0.56,-0.79l-0.02,-2.73l1.21,-4.74l1.19,-0.21l2.37,2.0l1.08,0.03l4.36,3.17l1.22,1.6l-0.96,1.5l0.61,1.4Z\", \"name\": \"Uruguay\"}, \"LB\": {\"path\": \"M510.37,198.01l-0.88,0.51l1.82,-3.54l0.62,0.08l0.22,0.61l-1.13,0.88l-0.65,1.47Z\", \"name\": \"Lebanon\"}, \"LA\": {\"path\": \"M689.54,248.53l-1.76,-0.74l-0.49,0.15l-0.94,1.46l-1.32,-0.64l0.62,-0.98l0.11,-2.17l-2.04,-2.42l-0.25,-2.65l-1.9,-2.1l-2.15,-0.31l-0.78,0.91l-1.12,0.06l-1.05,-0.4l-2.06,1.2l-0.04,-1.59l0.61,-2.68l-0.36,-0.49l-1.35,-0.1l-0.11,-1.23l-0.96,-0.88l1.96,-1.89l0.39,0.36l1.33,0.07l0.42,-0.45l-0.34,-2.66l0.7,-0.21l1.28,1.81l1.11,2.35l0.36,0.23l2.82,0.02l0.71,1.67l-1.39,0.65l-0.72,0.93l0.13,0.6l2.91,1.51l3.6,5.25l1.88,1.78l0.56,1.62l-0.35,1.96Z\", \"name\": \"Lao PDR\"}, \"TW\": {\"path\": \"M724.01,226.68l-0.74,1.48l-0.9,-1.52l-0.25,-1.74l1.38,-2.44l1.73,-1.74l0.64,0.44l-1.85,5.52Z\", \"name\": \"Taiwan\"}, \"TT\": {\"path\": \"M266.64,259.32l0.28,-1.16l1.13,-0.22l-0.06,1.2l-1.35,0.18Z\", \"name\": \"Trinidad and Tobago\"}, \"TR\": {\"path\": \"M513.21,175.47l3.64,1.17l3.05,-0.44l2.1,0.26l3.11,-1.56l2.46,-0.13l2.19,1.33l0.33,0.82l-0.22,1.33l0.25,0.44l2.28,1.13l-1.17,0.57l-0.21,0.45l0.75,3.2l-0.41,1.16l1.13,1.92l-0.55,0.22l-0.9,-0.67l-2.91,-0.37l-1.24,0.46l-4.23,0.41l-2.81,1.05l-1.91,0.01l-1.52,-0.53l-2.58,0.75l-0.66,-0.45l-0.62,0.3l-0.12,1.45l-0.89,0.84l-0.47,-0.67l0.79,-1.3l-0.41,-0.2l-1.43,0.23l-2.0,-0.63l-2.02,1.65l-3.51,0.3l-2.13,-1.53l-2.7,-0.1l-0.86,1.24l-1.38,0.27l-2.29,-1.44l-2.71,-0.01l-1.37,-2.65l-1.68,-1.52l1.07,-1.99l-0.09,-0.49l-1.27,-1.12l2.37,-2.41l3.7,-0.11l1.28,-2.24l4.49,0.37l3.21,-1.97l2.81,-0.82l3.99,-0.06l4.29,2.07ZM488.79,176.72l-1.72,1.31l-0.5,-0.88l1.37,-2.57l-0.7,-0.85l1.7,-0.63l1.8,0.34l0.46,1.17l1.76,0.78l-2.87,0.32l-1.3,1.01Z\", \"name\": \"Turkey\"}, \"LK\": {\"path\": \"M624.16,268.99l-1.82,0.48l-0.99,-1.67l-0.42,-3.46l0.95,-3.43l1.21,0.98l2.26,4.19l-0.34,2.33l-0.85,0.58Z\", \"name\": \"Sri Lanka\"}, \"TN\": {\"path\": \"M448.1,188.24l-1.0,1.27l-0.02,1.32l0.84,0.88l-0.28,2.09l-1.53,1.32l-0.12,0.42l0.48,1.54l1.42,0.32l0.53,1.11l0.9,0.52l-0.11,1.67l-3.54,2.64l-0.1,2.38l-0.58,0.3l-0.96,-4.45l-1.54,-1.25l-0.16,-0.78l-1.92,-1.56l-0.18,-1.76l1.51,-1.62l0.59,-2.34l-0.38,-2.78l0.42,-1.21l2.45,-1.05l1.29,0.26l-0.06,1.11l0.58,0.38l1.47,-0.73Z\", \"name\": \"Tunisia\"}, \"TL\": {\"path\": \"M734.55,307.93l-0.1,-0.97l4.5,-0.86l-2.82,1.28l-1.59,0.55Z\", \"name\": \"Timor-Leste\"}, \"TM\": {\"path\": \"M553.03,173.76l-0.04,0.34l-0.09,-0.22l0.13,-0.12ZM555.87,172.66l0.45,-0.1l1.48,0.74l2.06,2.43l4.07,-0.18l0.38,-0.51l-0.32,-1.19l1.92,-0.94l1.91,-1.59l2.94,1.39l0.43,2.47l1.19,0.67l2.58,-0.13l0.62,0.4l1.32,3.12l4.54,3.44l2.67,1.45l3.06,1.14l-0.04,1.05l-1.33,-0.75l-0.59,0.19l-0.32,0.84l-2.2,0.81l-0.46,2.13l-1.21,0.74l-1.91,0.42l-0.73,1.33l-1.56,0.31l-2.22,-0.94l-0.2,-2.17l-0.38,-0.36l-1.73,-0.09l-2.76,-2.46l-2.14,-0.4l-2.84,-1.48l-1.78,-0.27l-1.24,0.53l-1.57,-0.08l-2.0,1.69l-1.7,0.43l-0.36,-1.58l0.36,-2.98l-0.22,-0.4l-1.65,-0.84l0.54,-1.69l-0.34,-0.52l-1.22,-0.13l0.36,-1.64l2.22,0.59l2.2,-0.95l0.12,-0.65l-1.77,-1.74l-0.66,-1.57Z\", \"name\": \"Turkmenistan\"}, \"TJ\": {\"path\": \"M597.75,178.82l-2.54,-0.44l-0.47,0.34l-0.24,1.7l0.43,0.45l2.64,-0.22l3.18,0.95l4.39,-0.41l0.56,2.37l0.52,0.29l0.67,-0.24l1.11,0.49l0.21,2.13l-3.76,-0.21l-1.8,1.32l-1.76,0.74l-0.61,-0.58l0.21,-2.23l-0.64,-0.49l-0.07,-0.93l-1.36,-0.66l-0.45,0.07l-1.08,1.01l-0.55,1.48l-1.31,-0.05l-0.95,1.16l-0.9,-0.35l-1.86,0.74l1.26,-2.83l-0.54,-2.17l-1.67,-0.82l0.33,-0.66l2.18,-0.04l1.19,-1.63l0.76,-1.79l2.43,-0.5l-0.26,1.0l0.73,1.05Z\", \"name\": \"Tajikistan\"}, \"LS\": {\"path\": \"M491.06,363.48l-0.49,0.15l-1.49,-1.67l1.1,-1.43l2.19,-1.44l1.51,1.27l-0.98,1.82l-1.23,0.38l-0.62,0.93Z\", \"name\": \"Lesotho\"}, \"TH\": {\"path\": \"M670.27,255.86l-1.41,3.87l0.15,2.0l0.38,0.36l1.38,0.07l0.9,2.04l0.55,2.34l1.4,1.44l1.61,0.38l0.96,0.97l-0.5,0.64l-1.1,0.2l-0.34,-1.18l-2.04,-1.1l-0.63,0.23l-0.63,-0.62l-0.48,-1.3l-2.56,-2.63l-0.73,0.41l0.95,-3.89l2.16,-4.22ZM670.67,254.77l-0.92,-2.18l-0.26,-2.61l-2.14,-3.06l0.71,-0.49l0.89,-2.59l-3.61,-5.45l0.87,-0.51l1.05,-2.58l1.74,-0.18l2.6,-1.59l0.76,0.56l0.13,1.39l0.37,0.36l1.23,0.09l-0.51,2.28l0.05,2.42l0.6,0.34l2.43,-1.42l0.77,0.39l1.47,-0.07l0.71,-0.88l1.48,0.14l1.71,1.88l0.25,2.65l1.92,2.11l-0.1,1.89l-0.61,0.86l-2.22,-0.33l-3.5,0.64l-1.6,2.12l0.36,2.58l-1.51,-0.79l-1.84,-0.01l0.28,-1.52l-0.4,-0.47l-2.21,0.01l-0.4,0.37l-0.19,2.74l-0.34,0.93Z\", \"name\": \"Thailand\"}, \"TF\": {\"path\": \"M596.68,420.38l-3.2,0.18l-0.05,-1.26l0.39,-1.41l1.3,0.78l2.08,0.35l-0.52,1.36Z\", \"name\": \"Fr. S. Antarctic Lands\"}, \"TG\": {\"path\": \"M422.7,257.63l-0.09,1.23l1.53,1.52l0.08,1.09l0.5,0.65l-0.11,5.62l0.49,1.47l-1.31,0.35l-1.02,-2.13l-0.18,-1.12l0.53,-2.19l-0.63,-1.16l-0.22,-3.68l-1.01,-1.4l0.07,-0.28l1.37,0.03Z\", \"name\": \"Togo\"}, \"TD\": {\"path\": \"M480.25,235.49l0.12,9.57l-2.1,0.05l-1.14,1.89l-0.69,1.63l0.34,0.73l-0.66,0.91l0.24,0.89l-0.86,1.95l0.45,0.5l0.6,-0.1l0.34,0.64l0.03,1.38l0.9,1.04l-1.45,0.43l-1.27,1.03l-1.83,2.76l-2.16,1.07l-2.31,-0.15l-0.86,0.25l-0.26,0.49l0.17,0.61l-2.11,1.68l-2.85,0.87l-1.09,-0.57l-0.73,0.66l-1.12,0.1l-1.1,-3.12l-1.25,-0.64l-1.22,-1.22l0.29,-0.64l3.01,0.04l0.35,-0.6l-1.3,-2.2l-0.08,-3.31l-0.97,-1.66l0.22,-1.04l-0.38,-0.48l-1.22,-0.04l0.0,-1.25l-0.98,-1.07l0.96,-3.01l3.25,-2.65l0.13,-3.33l0.95,-5.18l0.52,-1.07l-0.1,-0.48l-0.91,-0.78l-0.2,-0.96l-0.8,-0.58l-0.55,-3.65l2.1,-1.2l19.57,9.83Z\", \"name\": \"Chad\"}, \"LY\": {\"path\": \"M483.48,203.15l-0.75,1.1l0.29,1.39l-0.6,1.83l0.73,2.14l0.0,24.12l-2.48,0.01l-0.41,0.85l-19.41,-9.76l-4.41,2.28l-1.37,-1.33l-3.82,-1.1l-1.14,-1.65l-1.98,-1.23l-1.22,0.32l-0.66,-1.11l-0.17,-1.26l-1.28,-1.69l0.87,-1.19l-0.07,-4.34l0.43,-2.27l-0.86,-3.45l1.13,-0.76l0.22,-1.16l-0.2,-1.03l3.48,-2.61l0.29,-1.94l2.45,0.8l1.18,-0.21l1.98,0.44l3.15,1.18l1.37,2.54l5.72,1.67l2.64,1.35l1.61,-0.72l1.29,-1.34l-0.44,-2.34l0.66,-1.13l1.67,-1.21l1.57,-0.35l3.14,0.53l1.08,1.28l3.99,0.78l0.36,0.54Z\", \"name\": \"Libya\"}, \"AE\": {\"path\": \"M550.76,223.97l1.88,-0.4l3.84,0.02l4.78,-4.75l0.19,0.36l0.26,1.58l-0.81,0.01l-0.39,0.35l-0.08,2.04l-0.81,0.63l-0.01,0.96l-0.66,0.99l-0.39,1.41l-7.08,-1.25l-0.7,-1.96Z\", \"name\": \"United Arab Emirates\"}, \"VE\": {\"path\": \"M240.68,256.69l0.53,0.75l-0.02,1.06l-1.07,1.78l0.95,2.0l0.42,0.22l1.4,-0.44l0.56,-1.83l-0.77,-1.17l-0.1,-1.47l2.82,-0.93l0.26,-0.49l-0.28,-0.96l0.3,-0.28l0.66,1.31l1.96,0.26l1.4,1.22l0.08,0.68l0.39,0.35l4.81,-0.22l1.49,1.11l1.92,0.31l1.67,-0.84l0.22,-0.6l3.44,-0.14l-0.17,0.55l0.86,1.19l2.19,0.35l1.67,1.1l0.37,1.86l0.41,0.32l1.55,0.17l-1.66,1.35l-0.22,0.92l0.65,0.97l-1.67,0.54l-0.3,0.4l0.04,0.99l-0.56,0.57l-0.01,0.55l1.85,2.27l-0.66,0.69l-4.47,1.29l-0.72,0.54l-3.69,-0.9l-0.71,0.27l-0.02,0.7l0.91,0.53l-0.08,1.54l0.35,1.58l0.35,0.31l1.66,0.17l-1.3,0.52l-0.48,1.13l-2.68,0.91l-0.6,0.77l-1.57,0.13l-1.17,-1.13l-0.8,-2.52l-1.25,-1.26l1.02,-1.23l-1.29,-2.95l0.18,-1.62l1.0,-2.21l-0.2,-0.49l-1.14,-0.46l-4.02,0.36l-1.82,-2.1l-1.57,-0.33l-2.99,0.22l-1.06,-0.97l0.25,-1.23l-0.2,-1.01l-0.59,-0.69l-0.29,-1.06l-1.08,-0.39l0.78,-2.79l1.9,-2.11Z\", \"name\": \"Venezuela\"}, \"AF\": {\"path\": \"M600.7,188.88l-1.57,1.3l-0.1,0.48l0.8,2.31l-1.09,1.04l-0.03,1.27l-0.48,0.71l-2.16,-0.08l-0.37,0.59l0.78,1.48l-1.38,0.69l-1.06,1.69l0.06,1.7l-0.65,0.52l-0.91,-0.21l-1.91,0.36l-0.48,0.77l-1.88,0.13l-1.4,1.56l-0.18,2.32l-2.91,1.02l-1.65,-0.23l-0.71,0.55l-1.41,-0.3l-2.41,0.39l-3.52,-1.17l1.96,-2.35l-0.21,-1.78l-0.3,-0.34l-1.63,-0.4l-0.19,-1.58l-0.75,-2.03l0.95,-1.36l-0.19,-0.6l-0.73,-0.28l1.47,-4.8l2.14,0.9l2.12,-0.36l0.74,-1.34l1.77,-0.39l1.54,-0.92l0.63,-2.31l1.87,-0.5l0.49,-0.81l0.94,0.56l2.13,0.11l2.55,0.92l1.95,-0.83l0.65,0.43l0.56,-0.13l0.69,-1.12l1.57,-0.08l0.72,-1.66l0.79,-0.74l0.8,0.39l-0.17,0.56l0.71,0.58l-0.08,2.39l1.11,0.95ZM601.37,188.71l1.73,-0.71l1.43,-1.18l4.03,0.35l-2.23,0.74l-4.95,0.8Z\", \"name\": \"Afghanistan\"}, \"IQ\": {\"path\": \"M530.82,187.47l0.79,0.66l1.26,-0.28l1.46,3.08l1.63,0.94l0.14,1.23l-1.22,1.05l-0.53,2.52l1.73,2.67l3.12,1.62l1.15,1.88l-0.38,1.85l0.39,0.48l0.41,-0.0l0.02,1.07l0.76,0.94l-2.47,-0.1l-1.71,2.44l-4.31,-0.2l-7.02,-5.48l-3.73,-1.94l-2.88,-0.73l-0.85,-2.87l5.45,-3.02l0.95,-3.43l-0.19,-1.96l1.27,-0.7l1.22,-1.7l0.87,-0.36l2.69,0.34Z\", \"name\": \"Iraq\"}, \"IS\": {\"path\": \"M384.14,88.06l-0.37,2.61l2.54,2.51l-2.9,2.75l-9.19,3.4l-9.25,-1.66l1.7,-1.22l-0.1,-0.7l-4.05,-1.47l2.96,-0.53l0.33,-0.43l-0.11,-1.2l-0.33,-0.36l-4.67,-0.85l1.28,-2.04l3.45,-0.56l3.77,2.72l0.44,0.02l3.64,-2.16l3.3,1.08l3.98,-2.16l3.58,0.26Z\", \"name\": \"Iceland\"}, \"IR\": {\"path\": \"M533.43,187.16l-1.27,-2.15l0.42,-0.98l-0.71,-3.04l1.03,-0.5l0.33,0.83l1.26,1.35l2.05,0.51l1.11,-0.16l2.89,-2.11l0.62,-0.14l0.39,0.46l-0.72,1.2l0.06,0.49l1.56,1.53l0.65,0.04l0.67,1.81l2.56,0.83l1.87,1.48l3.69,0.49l3.91,-0.76l0.47,-0.73l2.17,-0.6l1.66,-1.54l1.51,0.08l1.18,-0.53l1.59,0.24l2.83,1.48l1.88,0.3l2.77,2.47l1.77,0.18l0.18,1.99l-1.68,5.49l0.24,0.5l0.61,0.23l-0.82,1.48l0.8,2.18l0.19,1.71l0.3,0.34l1.63,0.4l0.15,1.32l-2.15,2.35l-0.01,0.53l2.21,3.03l2.34,1.24l0.06,2.14l1.24,0.72l0.11,0.69l-3.31,1.27l-1.08,3.03l-9.68,-1.68l-0.99,-3.05l-1.43,-0.73l-2.17,0.46l-2.47,1.26l-2.83,-0.82l-2.46,-2.02l-2.41,-0.8l-3.42,-6.06l-0.48,-0.2l-1.18,0.39l-1.44,-0.82l-0.5,0.08l-0.65,0.74l-0.97,-1.01l-0.02,-1.31l-0.71,-0.39l0.26,-1.81l-1.29,-2.11l-3.13,-1.63l-1.58,-2.43l0.5,-1.9l1.31,-1.26l-0.19,-1.66l-1.74,-1.1l-1.57,-3.3Z\", \"name\": \"Iran\"}, \"AM\": {\"path\": \"M536.99,182.33l-0.28,0.03l-1.23,-2.13l-0.93,0.01l-0.62,-0.66l-0.69,-0.07l-0.96,-0.81l-1.56,-0.62l0.19,-1.12l-0.26,-0.79l2.72,-0.36l1.09,1.01l-0.17,0.92l1.02,0.78l-0.47,0.62l0.08,0.56l2.04,1.23l0.04,1.4Z\", \"name\": \"Armenia\"}, \"IT\": {\"path\": \"M451.59,158.63l3.48,0.94l-0.21,1.17l0.3,0.83l-1.49,-0.24l-2.04,1.1l-0.21,0.39l0.13,1.45l-0.25,1.12l0.82,1.57l2.39,1.63l1.31,2.54l2.79,2.43l2.05,0.08l0.21,0.23l-0.39,0.33l0.09,0.67l4.05,1.97l2.17,1.76l-0.16,0.36l-1.17,-1.08l-2.18,-0.49l-0.44,0.2l-1.05,1.91l0.14,0.54l1.57,0.95l-0.19,0.98l-1.06,0.33l-1.25,2.34l-0.37,0.08l0.0,-0.33l1.0,-2.45l-1.73,-3.17l-1.12,-0.51l-0.88,-1.33l-1.51,-0.51l-1.27,-1.25l-1.75,-0.18l-4.12,-3.21l-1.62,-1.65l-1.03,-3.19l-3.53,-1.36l-1.3,0.51l-1.69,1.41l0.16,-0.72l-0.28,-0.47l-1.14,-0.33l-0.53,-1.96l0.72,-0.78l0.04,-0.48l-0.65,-1.17l0.8,0.39l1.4,-0.23l1.11,-0.84l0.52,0.35l1.19,-0.1l0.75,-1.2l1.53,0.33l1.36,-0.56l0.35,-1.14l1.08,0.32l0.68,-0.64l1.98,-0.44l0.42,0.82ZM459.19,184.75l-0.65,1.65l0.32,1.05l-0.31,0.89l-1.5,-0.85l-4.5,-1.67l0.19,-0.82l2.67,0.23l3.78,-0.48ZM443.93,176.05l1.18,1.66l-0.3,3.32l-1.06,-0.01l-0.77,0.73l-0.53,-0.44l-0.1,-3.37l-0.39,-1.22l1.04,0.01l0.92,-0.68Z\", \"name\": \"Italy\"}, \"VN\": {\"path\": \"M690.56,230.25l-2.7,1.82l-2.09,2.46l-0.63,1.95l4.31,6.45l2.32,1.65l1.43,1.94l1.11,4.59l-0.32,4.24l-1.93,1.54l-2.84,1.61l-2.11,2.15l-2.73,2.06l-0.59,-1.05l0.63,-1.53l-0.13,-0.47l-1.34,-1.04l1.51,-0.71l2.55,-0.18l0.3,-0.63l-0.82,-1.14l4.0,-2.07l0.31,-3.05l-0.57,-1.77l0.42,-2.66l-0.73,-1.97l-1.86,-1.76l-3.63,-5.29l-2.72,-1.46l0.36,-0.47l1.5,-0.64l0.21,-0.52l-0.97,-2.27l-0.37,-0.24l-2.83,-0.02l-2.24,-3.9l0.83,-0.4l4.39,-0.29l2.06,-1.31l1.15,0.89l1.88,0.4l-0.17,1.51l1.35,1.16l1.67,0.45Z\", \"name\": \"Vietnam\"}, \"AR\": {\"path\": \"M249.29,428.93l-2.33,-0.52l-5.83,-0.43l-0.89,-1.66l0.05,-2.37l-0.45,-0.4l-1.43,0.18l-0.67,-0.91l-0.2,-3.13l1.88,-1.47l0.79,-2.04l-0.25,-1.7l1.3,-2.68l0.91,-4.15l-0.22,-1.69l0.85,-0.45l0.2,-0.44l-0.27,-1.16l-0.98,-0.68l0.59,-0.92l-0.05,-0.5l-1.04,-1.07l-0.52,-3.1l0.97,-0.86l-0.42,-3.58l1.2,-5.43l1.38,-0.98l0.16,-0.43l-0.75,-2.79l-0.01,-2.43l1.78,-1.75l0.06,-2.57l1.43,-2.85l0.01,-2.58l-0.69,-0.74l-1.09,-4.52l1.47,-2.7l-0.18,-2.79l0.85,-2.35l1.59,-2.46l1.73,-1.64l0.05,-0.52l-0.6,-0.84l0.44,-0.85l-0.07,-4.19l2.7,-1.44l0.86,-2.75l-0.21,-0.71l1.76,-2.01l2.9,0.57l1.38,1.78l0.68,-0.08l0.87,-1.87l2.39,0.09l4.95,4.77l2.17,0.49l3.0,1.92l2.47,1.0l0.25,0.82l-2.37,3.93l0.23,0.59l5.39,1.16l2.12,-0.44l2.45,-2.16l0.5,-2.38l0.76,-0.31l0.98,1.2l-0.04,1.8l-3.67,2.51l-2.85,2.66l-3.43,3.88l-1.3,5.07l0.01,2.72l-0.54,0.73l-0.36,3.28l3.14,2.64l-0.16,2.11l1.4,1.11l-0.1,1.09l-2.29,3.52l-3.55,1.49l-4.92,0.6l-2.71,-0.29l-0.43,0.51l0.5,1.65l-0.49,2.1l0.38,1.42l-1.19,0.83l-2.36,0.38l-2.3,-1.04l-1.38,0.83l0.41,3.64l1.69,0.91l1.4,-0.71l0.36,0.76l-2.04,0.86l-2.01,1.89l-0.97,4.63l-2.34,0.1l-2.09,1.78l-0.61,2.75l2.46,2.31l2.17,0.63l-0.7,2.32l-2.83,1.73l-1.73,3.86l-2.17,1.22l-1.16,1.67l0.75,3.76l1.04,1.28ZM256.71,438.88l-2.0,0.15l-1.4,-1.22l-3.82,-0.1l-0.0,-5.83l1.6,3.05l3.26,2.07l3.08,0.78l-0.71,1.1Z\", \"name\": \"Argentina\"}, \"AU\": {\"path\": \"M705.8,353.26l0.26,0.04l0.17,-0.47l-0.48,-1.42l0.92,1.11l0.45,0.15l0.27,-0.39l-0.1,-1.56l-1.98,-3.63l1.09,-3.31l-0.24,-1.57l0.34,-0.62l0.38,1.06l0.43,-0.19l0.99,-1.7l1.91,-0.83l1.29,-1.15l1.81,-0.91l0.96,-0.17l0.92,0.26l1.92,-0.95l1.47,-0.28l1.03,-0.8l1.43,0.04l2.78,-0.84l1.36,-1.15l0.71,-1.45l1.41,-1.26l0.3,-2.58l1.27,-1.59l0.78,1.65l0.54,0.19l1.07,-0.51l0.15,-0.6l-0.73,-1.0l0.45,-0.71l0.78,0.39l0.58,-0.3l0.28,-1.82l1.87,-2.14l1.12,-0.39l0.28,-0.58l0.62,0.17l0.53,-0.73l1.87,-0.57l1.65,1.05l1.35,1.48l3.39,0.38l0.43,-0.54l-0.46,-1.23l1.05,-1.79l1.04,-0.61l0.14,-0.55l-0.25,-0.41l0.88,-1.17l1.31,-0.77l1.3,0.27l2.1,-0.48l0.31,-0.4l-0.05,-1.3l-0.92,-0.77l1.48,0.56l1.41,1.07l2.11,0.65l0.81,-0.2l1.4,0.7l1.69,-0.66l0.8,0.19l0.64,-0.33l0.71,0.77l-1.33,1.94l-0.71,0.07l-0.35,0.51l0.24,0.86l-1.52,2.35l0.12,1.05l2.15,1.65l1.97,0.85l3.04,2.36l1.97,0.65l0.55,0.88l2.72,0.85l1.84,-1.1l2.07,-5.97l-0.42,-3.59l0.3,-1.73l0.47,-0.87l-0.31,-0.68l1.09,-3.28l0.46,-0.47l0.4,0.71l0.16,1.51l0.65,0.52l0.16,1.04l0.85,1.21l0.12,2.38l0.9,2.0l0.57,0.18l1.3,-0.78l1.69,1.7l-0.2,1.08l0.53,2.2l0.39,1.3l0.68,0.48l0.6,1.95l-0.19,1.48l0.81,1.76l6.01,3.69l-0.11,0.76l1.38,1.58l0.95,2.77l0.58,0.22l0.72,-0.41l0.8,0.9l0.61,0.01l0.46,2.41l4.81,4.71l0.66,2.02l-0.07,3.31l1.14,2.2l-0.13,2.24l-1.1,3.68l0.03,1.64l-0.47,1.89l-1.05,2.4l-1.9,1.47l-1.72,3.51l-2.38,6.09l-0.24,2.82l-1.14,0.8l-2.85,0.15l-2.31,1.19l-2.51,2.25l-3.09,-1.57l0.3,-1.15l-0.54,-0.47l-1.5,0.63l-2.01,1.94l-7.12,-2.18l-1.48,-1.63l-1.14,-3.74l-1.45,-1.26l-1.81,-0.26l0.56,-1.18l-0.61,-2.1l-0.72,-0.1l-1.14,1.82l-0.9,0.21l0.63,-0.82l0.36,-1.55l0.92,-1.31l-0.13,-2.34l-0.7,-0.22l-2.0,2.34l-1.51,0.93l-0.94,2.01l-1.35,-0.81l-0.02,-1.52l-1.57,-2.04l-1.09,-0.88l0.24,-0.33l-0.14,-0.59l-3.21,-1.69l-1.83,-0.12l-2.54,-1.35l-4.58,0.28l-6.02,1.9l-2.53,-0.13l-2.62,1.41l-2.13,0.63l-1.49,2.6l-3.49,0.31l-2.29,-0.5l-3.48,0.43l-1.6,1.47l-0.81,-0.04l-2.37,1.63l-3.26,-0.1l-3.72,-2.21l0.04,-1.05l1.19,-0.46l0.49,-0.89l0.21,-2.97l-0.28,-1.64l-1.34,-2.86l-0.38,-1.47l0.05,-1.72l-0.95,-1.7l-0.18,-0.97l-1.01,-0.99l-0.29,-1.98l-1.13,-1.75ZM784.92,393.44l2.65,1.02l3.23,-0.96l1.09,0.14l0.15,3.06l-0.85,1.13l-0.17,1.63l-0.87,-0.24l-1.57,1.91l-1.68,-0.18l-1.4,-2.36l-0.37,-2.04l-1.39,-2.51l0.04,-0.8l1.15,0.18Z\", \"name\": \"Australia\"}, \"IL\": {\"path\": \"M507.76,203.05l0.4,-0.78l0.18,0.4l-0.33,1.03l0.52,0.44l0.68,-0.22l-0.86,3.6l-1.16,-3.32l0.59,-0.74l-0.03,-0.41ZM508.73,200.34l0.37,-1.02l0.64,0.0l0.52,-0.51l-0.49,1.53l-0.56,-0.24l-0.48,0.23Z\", \"name\": \"Israel\"}, \"IN\": {\"path\": \"M623.34,207.03l-1.24,1.04l-0.97,2.55l0.22,0.51l8.04,3.87l3.42,0.37l1.57,1.38l4.92,0.88l2.18,-0.04l0.38,-0.3l0.29,-1.24l-0.32,-1.64l0.14,-0.87l0.82,-0.31l0.45,2.48l2.28,1.02l1.77,-0.38l4.14,0.1l0.38,-0.36l0.18,-1.66l-0.5,-0.65l1.37,-0.29l2.25,-1.99l2.7,-1.62l1.93,0.62l1.8,-0.98l0.79,1.14l-0.68,0.91l0.26,0.63l2.42,0.36l0.09,0.47l-0.83,0.75l0.13,1.07l-1.52,-0.29l-3.24,1.86l-0.13,1.78l-1.32,2.14l-0.18,1.39l-0.93,1.82l-1.64,-0.5l-0.52,0.37l-0.09,2.63l-0.56,1.11l0.19,0.81l-0.53,0.27l-1.18,-3.73l-1.08,-0.27l-0.38,0.31l-0.24,1.0l-0.66,-0.66l0.54,-1.06l1.22,-0.34l1.15,-2.25l-0.24,-0.56l-1.57,-0.47l-4.34,-0.28l-0.18,-1.56l-0.35,-0.35l-1.11,-0.12l-1.91,-1.12l-0.56,0.17l-0.88,1.82l0.11,0.49l1.36,1.07l-1.09,0.69l-0.69,1.11l0.18,0.56l1.24,0.57l-0.32,1.54l0.85,1.94l0.36,2.01l-0.22,0.59l-4.58,0.52l-0.33,0.42l0.13,1.8l-1.17,1.36l-3.65,1.81l-2.79,3.03l-4.32,3.28l-0.18,1.27l-4.65,1.79l-0.77,2.16l0.64,5.3l-1.06,2.49l-0.01,3.94l-1.24,0.28l-1.14,1.93l0.39,0.84l-1.68,0.53l-1.04,1.83l-0.65,0.47l-2.06,-2.05l-2.1,-6.02l-2.2,-3.64l-1.05,-4.75l-2.29,-3.57l-1.76,-8.2l0.01,-3.11l-0.49,-2.53l-0.55,-0.29l-3.53,1.52l-1.53,-0.27l-2.86,-2.77l0.85,-0.67l0.08,-0.55l-0.74,-1.03l-2.67,-2.06l1.24,-1.32l5.34,0.01l0.39,-0.49l-0.5,-2.29l-1.42,-1.46l-0.27,-1.93l-1.43,-1.2l2.31,-2.37l3.05,0.06l2.62,-2.85l1.6,-2.81l2.4,-2.73l0.07,-2.04l1.97,-1.48l-0.02,-0.65l-1.93,-1.31l-0.82,-1.78l-0.8,-2.21l0.9,-0.89l3.59,0.65l2.92,-0.42l2.33,-2.19l2.31,2.85l-0.24,2.13l0.99,1.59l-0.05,0.82l-1.34,-0.28l-0.47,0.48l0.7,3.06l2.62,1.99l2.99,1.65Z\", \"name\": \"India\"}, \"TZ\": {\"path\": \"M495.56,296.42l2.8,-3.12l-0.02,-0.81l-0.64,-1.3l0.68,-0.52l0.14,-1.47l-0.76,-1.25l0.31,-0.11l2.26,0.03l-0.51,2.76l0.76,1.3l0.5,0.12l1.05,-0.53l1.19,-0.12l0.61,0.24l1.43,-0.62l0.1,-0.67l-0.71,-0.62l1.57,-1.7l8.65,4.86l0.32,1.53l3.34,2.33l-1.05,2.8l0.13,1.61l1.63,1.12l-0.6,1.76l-0.01,2.33l1.89,4.03l0.57,0.43l-1.46,1.08l-2.61,0.94l-1.43,-0.04l-1.06,0.77l-2.29,0.36l-2.87,-0.68l-0.83,0.07l-0.63,-0.75l-0.31,-2.78l-1.32,-1.35l-3.25,-0.77l-3.96,-1.58l-1.18,-2.41l-0.32,-1.75l-1.76,-1.49l0.42,-1.05l-0.44,-0.89l0.08,-0.96l-0.46,-0.58l0.06,-0.56Z\", \"name\": \"Tanzania\"}, \"AZ\": {\"path\": \"M539.29,175.73l1.33,0.32l1.94,-1.8l2.3,3.34l1.43,0.43l-1.26,0.15l-0.35,0.32l-0.8,3.14l-0.99,0.96l0.05,1.11l-1.26,-1.13l0.7,-1.18l-0.04,-0.47l-0.74,-0.86l-1.48,0.15l-2.34,1.71l-0.03,-1.27l-2.03,-1.35l0.47,-0.62l-0.08,-0.56l-1.03,-0.79l0.29,-0.43l-0.14,-0.58l-1.13,-0.86l1.89,0.68l1.69,0.06l0.37,-0.87l-0.81,-1.37l0.42,0.06l1.63,1.72ZM533.78,180.57l0.61,0.46l0.69,-0.0l0.59,1.15l-0.68,-0.15l-1.21,-1.45Z\", \"name\": \"Azerbaijan\"}, \"IE\": {\"path\": \"M405.08,135.42l0.35,2.06l-1.75,2.78l-4.22,1.88l-2.84,-0.4l1.73,-3.0l-1.18,-3.53l4.6,-3.74l0.32,1.15l-0.49,1.74l0.4,0.51l1.47,-0.04l1.6,0.6Z\", \"name\": \"Ireland\"}, \"ID\": {\"path\": \"M756.47,287.89l0.69,4.01l2.79,1.78l0.51,-0.1l2.04,-2.59l2.71,-1.43l2.05,-0.0l3.9,1.73l2.46,0.45l0.08,15.12l-1.75,-1.54l-2.54,-0.51l-0.88,0.71l-2.32,0.06l0.69,-1.33l1.45,-0.64l0.23,-0.46l-0.65,-2.74l-1.24,-2.21l-5.04,-2.29l-2.09,-0.23l-3.68,-2.27l-0.55,0.13l-0.65,1.07l-0.52,0.12l-0.55,-1.89l-1.21,-0.78l1.84,-0.62l1.72,0.05l0.39,-0.52l-0.21,-0.66l-0.38,-0.28l-3.45,-0.0l-1.13,-1.48l-2.1,-0.43l-0.52,-0.6l2.69,-0.48l1.28,-0.78l3.66,0.94l0.3,0.71ZM757.91,300.34l-0.62,0.82l-0.1,-0.8l0.59,-1.12l0.13,1.1ZM747.38,292.98l0.34,0.72l-1.22,-0.57l-4.68,-0.1l0.27,-0.62l2.78,-0.09l2.52,0.67ZM741.05,285.25l-0.67,-2.88l0.64,-2.01l0.41,0.86l1.21,0.18l0.16,0.7l-0.1,1.68l-0.84,-0.16l-0.46,0.3l-0.34,1.34ZM739.05,293.5l-0.5,0.44l-1.34,-0.36l-0.17,-0.37l1.73,-0.08l0.27,0.36ZM721.45,284.51l-0.19,1.97l2.24,2.23l0.54,0.02l1.27,-1.07l2.75,-0.5l-0.9,1.21l-2.11,0.93l-0.16,0.6l2.22,3.01l-0.3,1.07l1.36,1.74l-2.26,0.85l-0.28,-0.31l0.12,-1.19l-1.64,-1.34l0.17,-2.23l-0.56,-0.39l-1.67,0.76l-0.23,0.39l0.3,6.17l-1.1,0.25l-0.69,-0.47l0.64,-2.21l-0.39,-2.42l-0.39,-0.34l-0.8,-0.01l-0.58,-1.29l0.98,-1.6l0.35,-1.96l1.32,-3.87ZM728.59,296.27l0.38,0.49l-0.02,1.28l-0.88,0.49l-0.53,-0.47l1.04,-1.79ZM729.04,286.98l0.27,-0.05l-0.02,0.13l-0.24,-0.08ZM721.68,284.05l0.16,-0.32l1.89,-1.65l1.83,0.68l3.16,0.35l2.94,-0.1l2.39,-1.66l-1.73,2.13l-1.66,0.43l-2.41,-0.48l-4.17,0.13l-2.39,0.51ZM730.55,310.47l1.11,-1.93l2.03,-0.82l0.08,0.62l-1.45,1.67l-1.77,0.46ZM728.12,305.88l-0.1,0.38l-3.46,0.66l-2.91,-0.27l-0.0,-0.25l1.54,-0.41l1.66,0.73l1.67,-0.19l1.61,-0.65ZM722.9,310.24l-0.64,0.03l-2.26,-1.2l1.11,-0.24l1.78,1.41ZM716.26,305.77l0.88,0.51l1.28,-0.17l0.2,0.35l-4.65,0.73l0.39,-0.67l1.15,-0.02l0.75,-0.73ZM711.66,293.84l-0.38,-0.16l-2.54,1.01l-1.12,-1.44l-1.69,-0.13l-1.16,-0.75l-3.04,0.77l-1.1,-1.15l-3.31,-0.11l-0.35,-3.05l-1.35,-0.95l-1.11,-1.98l-0.33,-2.06l0.27,-2.14l0.9,-1.01l0.37,1.15l2.09,1.49l1.53,-0.48l1.82,0.08l1.38,-1.19l1.0,-0.18l2.28,0.67l2.26,-0.53l1.52,-3.64l1.01,-0.99l0.78,-2.57l4.1,0.3l-1.11,1.77l0.02,0.46l1.7,2.2l-0.23,1.39l2.07,1.71l-2.33,0.42l-0.88,1.9l0.1,2.05l-2.4,1.9l-0.06,2.45l-0.7,2.79ZM692.58,302.03l0.35,0.26l4.8,0.25l0.78,-0.97l4.17,1.09l1.13,1.68l3.69,0.45l2.13,1.04l-1.8,0.6l-2.77,-0.99l-4.8,-0.12l-5.24,-1.41l-1.84,-0.25l-1.11,0.3l-4.26,-0.97l-0.7,-1.14l-1.59,-0.13l1.18,-1.65l2.74,0.13l2.87,1.13l0.26,0.68ZM685.53,299.17l-2.22,0.04l-2.06,-2.03l-3.15,-2.01l-2.93,-3.51l-3.11,-5.33l-2.2,-2.12l-1.64,-4.06l-2.32,-1.69l-1.27,-2.07l-1.96,-1.5l-2.51,-2.65l-0.11,-0.66l4.81,0.53l2.15,2.38l3.31,2.74l2.35,2.66l2.7,0.17l1.95,1.59l1.54,2.17l1.59,0.95l-0.84,1.71l0.15,0.52l1.44,0.87l0.79,0.1l0.4,1.58l0.87,1.4l1.96,0.39l1.0,1.31l-0.6,3.01l-0.09,3.5Z\", \"name\": \"Indonesia\"}, \"UA\": {\"path\": \"M492.5,162.44l1.28,-2.49l1.82,0.19l0.66,-0.23l0.09,-0.71l-0.25,-0.75l-0.79,-0.72l-0.33,-1.21l-0.86,-0.62l-0.02,-1.19l-1.13,-0.86l-1.15,-0.19l-2.04,-1.0l-1.66,0.32l-0.66,0.47l-0.92,-0.0l-0.84,0.78l-2.48,0.7l-1.18,-0.71l-3.07,-0.36l-0.89,0.43l-0.24,-0.55l-1.11,-0.7l0.35,-0.93l1.26,-1.02l-0.54,-1.23l2.04,-2.43l1.4,-0.62l0.25,-1.19l-1.04,-2.39l0.83,-0.13l1.28,-0.84l1.8,-0.07l2.47,0.26l2.86,0.81l1.88,0.06l0.86,0.44l1.04,-0.41l0.77,0.66l2.18,-0.15l0.92,0.3l0.52,-0.34l0.15,-1.53l0.56,-0.54l2.85,-0.05l0.84,-0.72l3.04,-0.18l1.23,1.46l-0.48,0.77l0.21,1.03l0.36,0.32l1.8,0.14l0.93,2.08l3.18,1.15l1.94,-0.45l1.67,1.49l1.4,-0.03l3.35,0.96l0.02,0.54l-0.96,1.59l0.47,1.97l-0.26,0.7l-2.36,0.28l-1.29,0.89l-0.23,1.38l-1.83,0.27l-1.58,0.97l-2.41,0.21l-2.16,1.17l-0.21,0.38l0.34,2.26l1.23,0.75l2.13,-0.08l-0.14,0.31l-2.65,0.53l-3.23,1.69l-0.87,-0.39l0.42,-1.1l-0.25,-0.52l-2.21,-0.73l2.35,-1.06l0.12,-0.65l-0.93,-0.82l-3.62,-0.74l-0.13,-0.89l-0.46,-0.34l-2.61,0.59l-0.91,1.69l-1.71,2.04l-0.86,-0.4l-1.62,0.27Z\", \"name\": \"Ukraine\"}, \"QA\": {\"path\": \"M549.33,221.64l-0.76,-0.23l-0.14,-1.64l0.84,-1.29l0.47,0.52l0.04,1.34l-0.45,1.3Z\", \"name\": \"Qatar\"}, \"MZ\": {\"path\": \"M508.58,318.75l-0.34,-2.57l0.51,-2.05l3.55,0.63l2.5,-0.38l1.02,-0.76l1.49,0.01l2.74,-0.98l1.66,-1.2l0.5,9.24l0.41,1.23l-0.68,1.67l-0.93,1.71l-1.5,1.5l-5.16,2.28l-2.78,2.73l-1.02,0.53l-1.71,1.8l-0.98,0.57l-0.35,2.41l1.16,1.94l0.49,2.17l0.43,0.31l-0.06,2.06l-0.39,1.17l0.5,0.72l-0.25,0.73l-0.92,0.83l-5.12,2.39l-1.22,1.36l0.21,1.13l0.58,0.39l-0.11,0.72l-1.22,-0.01l-0.73,-2.97l0.42,-3.09l-1.78,-5.37l2.49,-2.81l0.69,-1.89l0.44,-0.43l0.28,-1.53l-0.39,-0.93l0.59,-3.65l-0.01,-3.26l-1.49,-1.16l-1.2,-0.22l-1.74,-1.17l-1.92,0.01l-0.29,-2.08l7.06,-1.96l1.28,1.09l0.89,-0.1l0.67,0.44l0.1,0.73l-0.51,1.29l0.19,1.81l1.75,1.83l0.65,-0.13l0.71,-1.65l1.17,-0.86l-0.26,-3.47l-1.05,-1.85l-1.04,-0.94Z\", \"name\": \"Mozambique\"}}, \"height\": 440.70631074413296, \"projection\": {\"type\": \"mill\", \"centralMeridian\": 11.5}, \"width\": 900.0});","/*!\n * Date picker for pickadate.js v3.6.3\n * http://amsul.github.io/pickadate.js/date.htm\n */\n\n(function (factory) {\n\n  // AMD.\n  if (typeof define == 'function' && define.amd)\n    define(['picker', 'jquery'], factory);\n\n  // Node.js/browserify.\n  else if (typeof exports == 'object')\n    module.exports = factory(require('./picker.js'), require('jquery'));\n\n  // Browser globals.\n  else factory(Picker, jQuery);\n\n}(function (Picker, $) {\n\n\n  /**\n   * Globals and constants\n   */\n  var DAYS_IN_WEEK = 7,\n    WEEKS_IN_CALENDAR = 6,\n    _ = Picker._;\n\n\n\n  /**\n   * The date picker constructor\n   */\n  function DatePicker(picker, settings) {\n\n    var calendar = this,\n      element = picker.$node[0],\n      elementValue = element.value,\n      elementDataValue = picker.$node.data('value'),\n      valueString = elementDataValue || elementValue,\n      formatString = elementDataValue ? settings.formatSubmit : settings.format,\n      isRTL = function () {\n\n        return element.currentStyle ?\n\n          // For IE.\n          element.currentStyle.direction == 'rtl' :\n\n          // For normal browsers.\n          getComputedStyle(picker.$root[0]).direction == 'rtl';\n      };\n\n    calendar.settings = settings;\n    calendar.$node = picker.$node;\n\n    // The queue of methods that will be used to build item objects.\n    calendar.queue = {\n      min: 'measure create',\n      max: 'measure create',\n      now: 'now create',\n      select: 'parse create validate',\n      highlight: 'parse navigate create validate',\n      currentView: 'toggleView',\n      view: 'parse create validate viewset',\n      disable: 'deactivate',\n      enable: 'activate',\n    };\n\n    // The component's item object.\n    calendar.item = {};\n\n    calendar.item.clear = null;\n    calendar.item.disable = (settings.disable || []).slice(0);\n    calendar.item.enable = -(function (collectionDisabled) {\n      return collectionDisabled[0] === true ? collectionDisabled.shift() : -1;\n    })(calendar.item.disable);\n    calendar.item.currentView = 'days';\n    calendar.item.currentVisibleMinYear;\n\n    calendar.\n    set('min', settings.min).\n    set('max', settings.max).\n    set('now');\n\n    // When there’s a value, set the `select`, which in turn\n    // also sets the `highlight` and `view`.\n    if (valueString) {\n      calendar.set('select', valueString, {\n        format: formatString,\n        defaultValue: true\n      });\n    }\n\n    // If there’s no value, default to highlighting “today”.\n    else {\n      calendar.\n      set('select', null).\n      set('highlight', calendar.item.now);\n    }\n\n\n    // The keycode to movement mapping.\n    calendar.key = {\n      40: 7, // Down\n      38: -7, // Up\n      39: function () {\n        return isRTL() ? -1 : 1;\n      }, // Right\n      37: function () {\n        return isRTL() ? 1 : -1;\n      }, // Left\n      go: function (timeChange) {\n        var highlightedObject = calendar.item.highlight,\n          targetDate = new Date(highlightedObject.year, highlightedObject.month, highlightedObject.date + timeChange);\n        calendar.set(\n          'highlight',\n          targetDate, {\n            interval: timeChange\n          }\n        );\n        this.render();\n      }\n    };\n\n\n    // Bind some picker events.\n    picker.on('render', function () { \n        var value = this.value;\n        if (value) {\n          picker.set('highlight', [value, picker.get('view').month, picker.get('highlight').date]);\n          picker.$root.find('.' + settings.klass.selectYear).trigger('focus');\n        }\n    }, 1).\n    on('open', function () {\n      var includeToday = '';\n      if (calendar.disabled(calendar.get('now'))) {\n        includeToday = ':not(.' + settings.klass.buttonToday + ')';\n      }\n      picker.$root.find('button' + includeToday + ', select').attr('disabled', false);\n    }, 1).\n    on('close', function () {\n      picker.$root.find('button, select').attr('disabled', true);\n    }, 1);\n  } //DatePicker\n\n\n  /**\n   * Set a datepicker item object.\n   */\n  DatePicker.prototype.set = function (type, value, options) {\n\n    var calendar = this,\n      calendarItem = calendar.item;\n\n    // If the value is `null` just set it immediately.\n    if (value === null) {\n      if (type == 'clear') type = 'select';\n      calendarItem[type] = value;\n      return calendar;\n    }\n    // Otherwise go through the queue of methods, and invoke the functions.\n    // Update this as the time unit, and set the final value as this item.\n    // * In the case of `enable`, keep the queue but set `disable` instead.\n    //   And in the case of `flip`, keep the queue but set `enable` instead.\n    calendarItem[(type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type)] = calendar.queue[type].split(' ').map(function (method) {\n      value = calendar[method](type, value, options);\n      return value;\n    }).pop();\n    // Check if we need to cascade through more updates.\n    if (type == 'select') {\n      calendar.set('highlight', calendarItem.select, options);\n    } else if (type == 'highlight') {\n      calendar.set('view', calendarItem.highlight, options);\n    } else if (type.match(/^(flip|min|max|disable|enable)$/)) {\n      if (calendarItem.select && calendar.disabled(calendarItem.select)) {\n        calendar.set('select', calendarItem.select, options);\n      }\n      if (calendarItem.highlight && calendar.disabled(calendarItem.highlight)) {\n        calendar.set('highlight', calendarItem.highlight, options);\n      }\n    }\n\n    return calendar;\n  }; //DatePicker.prototype.set\n\n\n  /**\n   * Get a datepicker item object.\n   */\n  DatePicker.prototype.get = function (type) {\n    return this.item[type];\n  }; //DatePicker.prototype.get\n\n\n  /**\n   * Create a picker date object.\n   */\n  DatePicker.prototype.create = function (type, value, options) {\n\n    var isInfiniteValue,\n      calendar = this;\n\n    // If there’s no value, use the type as the value.\n    value = value === undefined ? type : value;\n\n\n    // If it’s infinity, update the value.\n    if (value == -Infinity || value == Infinity) {\n      isInfiniteValue = value;\n    }\n\n    // If it’s an object, use the native date object.\n    else if ($.isPlainObject(value) && _.isInteger(value.pick)) {\n      value = value.obj;\n    }\n\n    // If it’s an array, convert it into a date and make sure\n    // that it’s a valid date – otherwise default to today.\n    else if ($.isArray(value)) {\n      value = new Date(value[0], value[1], value[2]);\n      value = _.isDate(value) ? value : calendar.create().obj;\n    }\n\n    // If it’s a number or date object, make a normalized date.\n    else if (_.isInteger(value) || _.isDate(value)) {\n      value = calendar.normalize(new Date(value), options);\n    }\n\n    // If it’s a literal true or any other case, set it to now.\n    else /*if ( value === true )*/ {\n      value = calendar.now(type, value, options);\n    }\n\n    // Return the compiled object.\n    return {\n      year: isInfiniteValue || value.getFullYear(),\n      month: isInfiniteValue || value.getMonth(),\n      date: isInfiniteValue || value.getDate(),\n      day: isInfiniteValue || value.getDay(),\n      obj: isInfiniteValue || value,\n      pick: isInfiniteValue || value.getTime()\n    };\n  };//DatePicker.prototype.create\n\n\n  /**\n   * Create a range limit object using an array, date object,\n   * literal “true”, or integer relative to another time.\n   */\n  DatePicker.prototype.createRange = function (from, to) {\n\n    var calendar = this,\n      createDate = function (date) {\n        if (date === true || $.isArray(date) || _.isDate(date)) {\n          return calendar.create(date);\n        }\n        return date;\n      };\n\n    // Create objects if possible.\n    if (!_.isInteger(from)) {\n      from = createDate(from);\n    }\n    if (!_.isInteger(to)) {\n      to = createDate(to);\n    }\n\n    // Create relative dates.\n    if (_.isInteger(from) && $.isPlainObject(to)) {\n      from = [to.year, to.month, to.date + from];\n    } else if (_.isInteger(to) && $.isPlainObject(from)) {\n      to = [from.year, from.month, from.date + to];\n    }\n\n    return {\n      from: createDate(from),\n      to: createDate(to)\n    };\n  }; //DatePicker.prototype.createRange\n\n\n  /**\n   * Check if a date unit falls within a date range object.\n   */\n  DatePicker.prototype.withinRange = function (range, dateUnit) {\n    range = this.createRange(range.from, range.to);\n    return dateUnit.pick >= range.from.pick && dateUnit.pick <= range.to.pick;\n  };\n\n\n  /**\n   * Check if two date range objects overlap.\n   */\n  DatePicker.prototype.overlapRanges = function (one, two) {\n\n    var calendar = this;\n\n    // Convert the ranges into comparable dates.\n    one = calendar.createRange(one.from, one.to);\n    two = calendar.createRange(two.from, two.to);\n\n    return calendar.withinRange(one, two.from) || calendar.withinRange(one, two.to) ||\n      calendar.withinRange(two, one.from) || calendar.withinRange(two, one.to);\n  };\n\n\n  /**\n   * Get the date today.\n   */\n  DatePicker.prototype.now = function (type, value, options) {\n    value = new Date();\n    if (options && options.rel) {\n      value.setDate(value.getDate() + options.rel);\n    }\n    return this.normalize(value, options);\n  };\n\n\n  /**\n   * Navigate to next/prev month.\n   */\n  DatePicker.prototype.navigate = function (type, value, options) {\n\n    var calendar = this,\n      targetDateObject,\n      targetYear,\n      targetMonth,\n      targetDate,\n      isTargetArray = $.isArray(value),\n      isTargetObject = $.isPlainObject(value),\n      viewsetObject = this.item.view;\n    /*,\n          safety = 100*/\n\n\n    if (isTargetArray || isTargetObject) {\n\n      if (isTargetObject) {\n        targetYear = value.year;\n        targetMonth = value.month;\n        targetDate = value.date;\n      } else {\n        targetYear = +value[0];\n        targetMonth = +value[1];\n        targetDate = +value[2];\n      }\n\n      // If we’re navigating months but the view is in a different\n      // month, navigate to the view’s year and month.\n      if (options && options.nav && viewsetObject && viewsetObject.month !== targetMonth) {\n        targetYear = viewsetObject.year;\n        targetMonth = viewsetObject.month;\n      }\n\n      if (calendar.item.currentView === 'months') {\n        targetDateObject = new Date(targetYear + (options && options.nav ? options.nav : 0), targetMonth, 1);\n      } else if (calendar.item.currentView === 'years') {\n        targetDateObject = new Date(targetYear + (options && options.nav ? options.nav * 24 : 0), targetMonth, 1);\n      } else if (calendar.item.currentView === 'days') {\n        targetDateObject = new Date(targetYear, targetMonth + (options && options.nav ? options.nav : 0), 1);\n      }\n      \n      targetYear = targetDateObject.getFullYear();\n      targetMonth = targetDateObject.getMonth();\n\n      // If the month we’re going to doesn’t have enough days,\n      // keep decreasing the date until we reach the month’s last date.\n      while ( /*safety &&*/ new Date(targetYear, targetMonth, targetDate).getMonth() !== targetMonth) {\n        targetDate -= 1;\n        /*safety -= 1\n        if ( !safety ) {\n            throw 'Fell into an infinite loop while navigating to ' + new Date( targetYear, targetMonth, targetDate ) + '.'\n        }*/\n      }\n\n      value = [targetYear, targetMonth, targetDate];\n    }\n\n    return value;\n  }; //DatePicker.prototype.navigate\n\n\n  /**\n   * Normalize a date by setting the hours to midnight.\n   */\n  DatePicker.prototype.normalize = function (value /*, options*/ ) {\n    value.setHours(0, 0, 0, 0);\n    return value;\n  };\n\n\n  /**\n   * Measure the range of dates.\n   */\n  DatePicker.prototype.measure = function (type, value /*, options*/ ) {\n\n    var calendar = this;\n\n    // If it's an integer, get a date relative to today.\n    if (_.isInteger(value)) {\n      value = calendar.now(type, value, {\n        rel: value\n      });\n    }\n\n    // If it’s anything false-y, remove the limits.\n    else if (!value) {\n      value = type == 'min' ? -Infinity : Infinity;\n    }\n\n    // If it’s a string, parse it.\n    else if (typeof value == 'string') {\n      value = calendar.parse(type, value);\n    }\n\n    return value;\n  }; ///DatePicker.prototype.measure\n\n\n  /**\n   * Create a viewset object based on navigation.\n   */\n  DatePicker.prototype.viewset = function (type, dateObject /*, options*/ ) {\n    return this.create([dateObject.year, dateObject.month, 1]);\n  };\n\n\n  /**\n   * Validate a date as enabled and shift if needed.\n   */\n  DatePicker.prototype.validate = function (type, dateObject, options) {\n\n    var calendar = this,\n\n      // Keep a reference to the original date.\n      originalDateObject = dateObject,\n\n      // Make sure we have an interval.\n      interval = options && options.interval ? options.interval : 1,\n\n      // Check if the calendar enabled dates are inverted.\n      isFlippedBase = calendar.item.enable === -1,\n\n      // Check if we have any enabled dates after/before now.\n      hasEnabledBeforeTarget, hasEnabledAfterTarget,\n\n      // The min & max limits.\n      minLimitObject = calendar.item.min,\n      maxLimitObject = calendar.item.max,\n\n      // Check if we’ve reached the limit during shifting.\n      reachedMin, reachedMax,\n\n      // Check if the calendar is inverted and at least one weekday is enabled.\n      hasEnabledWeekdays = isFlippedBase && calendar.item.disable.filter(function (value) {\n\n        // If there’s a date, check where it is relative to the target.\n        if ($.isArray(value)) {\n          var dateTime = calendar.create(value).pick;\n          if (dateTime < dateObject.pick) hasEnabledBeforeTarget = true;\n          else if (dateTime > dateObject.pick) hasEnabledAfterTarget = true;\n        }\n\n        // Return only integers for enabled weekdays.\n        return _.isInteger(value);\n      }).length;\n    /*,\n\n          safety = 100*/\n\n\n\n    // Cases to validate for:\n    // [1] Not inverted and date disabled.\n    // [2] Inverted and some dates enabled.\n    // [3] Not inverted and out of range.\n    //\n    // Cases to **not** validate for:\n    // • Navigating months.\n    // • Not inverted and date enabled.\n    // • Inverted and all dates disabled.\n    // • ..and anything else.\n    if (!options || (!options.nav && !options.defaultValue))\n      if (\n        /* 1 */\n        (!isFlippedBase && calendar.disabled(dateObject)) ||\n        /* 2 */\n        (isFlippedBase && calendar.disabled(dateObject) && (hasEnabledWeekdays || hasEnabledBeforeTarget || hasEnabledAfterTarget)) ||\n        /* 3 */\n        (!isFlippedBase && (dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick))\n      ) {\n\n\n        // When inverted, flip the direction if there aren’t any enabled weekdays\n        // and there are no enabled dates in the direction of the interval.\n        if (isFlippedBase && !hasEnabledWeekdays && ((!hasEnabledAfterTarget && interval > 0) || (!hasEnabledBeforeTarget && interval < 0))) {\n          interval *= -1;\n        }\n\n\n        // Keep looping until we reach an enabled date.\n        while ( /*safety &&*/ calendar.disabled(dateObject)) {\n\n          /*safety -= 1\n          if ( !safety ) {\n              throw 'Fell into an infinite loop while validating ' + dateObject.obj + '.'\n          }*/\n\n\n          // If we’ve looped into the next/prev month with a large interval, return to the original date and flatten the interval.\n          if (Math.abs(interval) > 1 && (dateObject.month < originalDateObject.month || dateObject.month > originalDateObject.month)) {\n            dateObject = originalDateObject;\n            interval = interval > 0 ? 1 : -1;\n          }\n\n\n          // If we’ve reached the min/max limit, reverse the direction, flatten the interval and set it to the limit.\n          if (dateObject.pick <= minLimitObject.pick) {\n            reachedMin = true;\n            interval = 1;\n            dateObject = calendar.create([\n              minLimitObject.year,\n              minLimitObject.month,\n              minLimitObject.date + (dateObject.pick === minLimitObject.pick ? 0 : -1)\n            ]);\n          } else if (dateObject.pick >= maxLimitObject.pick) {\n            reachedMax = true;\n            interval = -1;\n            dateObject = calendar.create([\n              maxLimitObject.year,\n              maxLimitObject.month,\n              maxLimitObject.date + (dateObject.pick === maxLimitObject.pick ? 0 : 1)\n            ]);\n          }\n\n\n          // If we’ve reached both limits, just break out of the loop.\n          if (reachedMin && reachedMax) {\n            break;\n          }\n\n\n          // Finally, create the shifted date using the interval and keep looping.\n          dateObject = calendar.create([dateObject.year, dateObject.month, dateObject.date + interval]);\n        }\n\n      } //endif\n\n\n    // Return the date object settled on.\n    return dateObject;\n  }; //DatePicker.prototype.validate\n\n\n  /**\n   * Check if a date is disabled.\n   */\n  DatePicker.prototype.disabled = function (dateToVerify) {\n\n    var\n      calendar = this,\n\n      // Filter through the disabled dates to check if this is one.\n      isDisabledMatch = calendar.item.disable.filter(function (dateToDisable) {\n\n        // If the date is a number, match the weekday with 0index and `firstDay` check.\n        if (_.isInteger(dateToDisable)) {\n          return dateToVerify.day === (calendar.settings.firstDay ? dateToDisable : dateToDisable - 1) % 7;\n        }\n\n        // If it’s an array or a native JS date, create and match the exact date.\n        if ($.isArray(dateToDisable) || _.isDate(dateToDisable)) {\n          return dateToVerify.pick === calendar.create(dateToDisable).pick;\n        }\n\n        // If it’s an object, match a date within the “from” and “to” range.\n        if ($.isPlainObject(dateToDisable)) {\n          return calendar.withinRange(dateToDisable, dateToVerify);\n        }\n      });\n\n    // If this date matches a disabled date, confirm it’s not inverted.\n    isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function (dateToDisable) {\n      return $.isArray(dateToDisable) && dateToDisable[3] == 'inverted' ||\n        $.isPlainObject(dateToDisable) && dateToDisable.inverted;\n    }).length;\n\n    // Check the calendar “enabled” flag and respectively flip the\n    // disabled state. Then also check if it’s beyond the min/max limits.\n    return calendar.item.enable === -1 ? !isDisabledMatch : isDisabledMatch ||\n      dateToVerify.pick < calendar.item.min.pick ||\n      dateToVerify.pick > calendar.item.max.pick;\n\n  }; //DatePicker.prototype.disabled\n\n\n  /**\n   * Parse a string into a usable type.\n   */\n  DatePicker.prototype.parse = function (type, value, options) {\n\n    var calendar = this,\n      parsingObject = {};\n\n    // If it’s already parsed, we’re good.\n    if (!value || typeof value != 'string') {\n      return value;\n    }\n\n    // We need a `.format` to parse the value with.\n    if (!(options && options.format)) {\n      options = options || {};\n      options.format = calendar.settings.format;\n    }\n\n    // Convert the format into an array and then map through it.\n    calendar.formats.toArray(options.format).map(function (label) {\n\n      var\n        // Grab the formatting label.\n        formattingLabel = calendar.formats[label],\n\n        // The format length is from the formatting label function or the\n        // label length without the escaping exclamation (!) mark.\n        formatLength = formattingLabel ? _.trigger(formattingLabel, calendar, [value, parsingObject]) : label.replace(/^!/, '').length;\n\n      // If there's a format label, split the value up to the format length.\n      // Then add it to the parsing object with appropriate label.\n      if (formattingLabel) {\n        parsingObject[label] = value.substr(0, formatLength);\n      }\n\n      // Update the value as the substring from format length to end.\n      value = value.substr(formatLength);\n    });\n\n    // Compensate for month 0index.\n    return [\n      parsingObject.yyyy || parsingObject.yy,\n      +(parsingObject.mm || parsingObject.m) - 1,\n      parsingObject.dd || parsingObject.d\n    ];\n  }; //DatePicker.prototype.parse\n\n\n  /**\n   * Various formats to display the object in.\n   */\n  DatePicker.prototype.formats = (function () {\n\n    // Return the length of the first word in a collection.\n    function getWordLengthFromCollection(string, collection, dateObject) {\n\n      // Grab the first word from the string.\n      // Regex pattern from http://stackoverflow.com/q/150033\n      var word = string.match(/[^\\x00-\\x7F]+|\\w+/)[0];\n\n      // If there's no month index, add it to the date object\n      if (!dateObject.mm && !dateObject.m) {\n        dateObject.m = collection.indexOf(word) + 1;\n      }\n\n      // Return the length of the word.\n      return word.length;\n    }\n\n    // Get the length of the first word in a string.\n    function getFirstWordLength(string) {\n      return string.match(/\\w+/)[0].length;\n    }\n\n    return {\n\n      d: function (string, dateObject) {\n\n        // If there's string, then get the digits length.\n        // Otherwise return the selected date.\n        return string ? _.digits(string) : dateObject.date;\n      },\n      dd: function (string, dateObject) {\n\n        // If there's a string, then the length is always 2.\n        // Otherwise return the selected date with a leading zero.\n        return string ? 2 : _.lead(dateObject.date);\n      },\n      ddd: function (string, dateObject) {\n\n        // If there's a string, then get the length of the first word.\n        // Otherwise return the short selected weekday.\n        return string ? getFirstWordLength(string) : this.settings.weekdaysShort[dateObject.day];\n      },\n      dddd: function (string, dateObject) {\n\n        // If there's a string, then get the length of the first word.\n        // Otherwise return the full selected weekday.\n        return string ? getFirstWordLength(string) : this.settings.weekdaysFull[dateObject.day];\n      },\n      m: function (string, dateObject) {\n\n        // If there's a string, then get the length of the digits\n        // Otherwise return the selected month with 0index compensation.\n        return string ? _.digits(string) : dateObject.month + 1;\n      },\n      mm: function (string, dateObject) {\n\n        // If there's a string, then the length is always 2.\n        // Otherwise return the selected month with 0index and leading zero.\n        return string ? 2 : _.lead(dateObject.month + 1);\n      },\n      mmm: function (string, dateObject) {\n\n        var collection = this.settings.monthsShort;\n\n        // If there's a string, get length of the relevant month from the short\n        // months collection. Otherwise return the selected month from that collection.\n        return string ? getWordLengthFromCollection(string, collection, dateObject) : collection[dateObject.month];\n      },\n      mmmm: function (string, dateObject) {\n\n        var collection = this.settings.monthsFull;\n\n        // If there's a string, get length of the relevant month from the full\n        // months collection. Otherwise return the selected month from that collection.\n        return string ? getWordLengthFromCollection(string, collection, dateObject) : collection[dateObject.month];\n      },\n      yy: function (string, dateObject) {\n\n        // If there's a string, then the length is always 2.\n        // Otherwise return the selected year by slicing out the first 2 digits.\n        return string ? 2 : ('' + dateObject.year).slice(2);\n      },\n      yyyy: function (string, dateObject) {\n\n        // If there's a string, then the length is always 4.\n        // Otherwise return the selected year.\n        return string ? 4 : dateObject.year;\n      },\n\n      // Create an array by splitting the formatting string passed.\n      toArray: function (formatString) {\n        return formatString.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g);\n      },\n\n      // Format an object into a string using the formatting options.\n      toString: function (formatString, itemObject) {\n        var calendar = this;\n        return calendar.formats.toArray(formatString).map(function (label) {\n          return _.trigger(calendar.formats[label], calendar, [0, itemObject]) || label.replace(/^!/, '');\n        }).join('');\n      }\n    };\n  })(); //DatePicker.prototype.formats\n\n\n\n\n  /**\n   * Check if two date units are the exact.\n   */\n  DatePicker.prototype.isDateExact = function (one, two) {\n\n    var calendar = this;\n\n    // When we’re working with weekdays, do a direct comparison.\n    if (\n      (_.isInteger(one) && _.isInteger(two)) ||\n      (typeof one == 'boolean' && typeof two == 'boolean')\n    ) {\n      return one === two;\n    }\n\n    // When we’re working with date representations, compare the “pick” value.\n    if (\n      (_.isDate(one) || $.isArray(one)) &&\n      (_.isDate(two) || $.isArray(two))\n    ) {\n      return calendar.create(one).pick === calendar.create(two).pick;\n    }\n\n    // When we’re working with range objects, compare the “from” and “to”.\n    if ($.isPlainObject(one) && $.isPlainObject(two)) {\n      return calendar.isDateExact(one.from, two.from) && calendar.isDateExact(one.to, two.to);\n    }\n\n    return false;\n  };\n\n\n  /**\n   * Check if two date units overlap.\n   */\n  DatePicker.prototype.isDateOverlap = function (one, two) {\n\n    var calendar = this,\n      firstDay = calendar.settings.firstDay ? 1 : 0;\n\n    // When we’re working with a weekday index, compare the days.\n    if (_.isInteger(one) && (_.isDate(two) || $.isArray(two))) {\n      one = one % 7 + firstDay;\n      return one === calendar.create(two).day + 1;\n    }\n    if (_.isInteger(two) && (_.isDate(one) || $.isArray(one))) {\n      two = two % 7 + firstDay;\n      return two === calendar.create(one).day + 1;\n    }\n\n    // When we’re working with range objects, check if the ranges overlap.\n    if ($.isPlainObject(one) && $.isPlainObject(two)) {\n      return calendar.overlapRanges(one, two);\n    }\n\n    return false;\n  };\n\n\n  /**\n   * Flip the “enabled” state.\n   */\n  DatePicker.prototype.flipEnable = function (val) {\n    var itemObject = this.item;\n    itemObject.enable = val || (itemObject.enable == -1 ? 1 : -1);\n  };\n\n\n  /**\n   * Mark a collection of dates as “disabled”.\n   */\n  DatePicker.prototype.deactivate = function (type, datesToDisable) {\n\n    var calendar = this,\n      disabledItems = calendar.item.disable.slice(0);\n\n\n    // If we’re flipping, that’s all we need to do.\n    if (datesToDisable == 'flip') {\n      calendar.flipEnable();\n    } else if (datesToDisable === false) {\n      calendar.flipEnable(1);\n      disabledItems = [];\n    } else if (datesToDisable === true) {\n      calendar.flipEnable(-1);\n      disabledItems = [];\n    }\n\n    // Otherwise go through the dates to disable.\n    else {\n\n      datesToDisable.map(function (unitToDisable) {\n\n        var matchFound;\n\n        // When we have disabled items, check for matches.\n        // If something is matched, immediately break out.\n        for (var index = 0; index < disabledItems.length; index += 1) {\n          if (calendar.isDateExact(unitToDisable, disabledItems[index])) {\n            matchFound = true;\n            break;\n          }\n        }\n\n        // If nothing was found, add the validated unit to the collection.\n        if (!matchFound) {\n          if (\n            _.isInteger(unitToDisable) ||\n            _.isDate(unitToDisable) ||\n            $.isArray(unitToDisable) ||\n            ($.isPlainObject(unitToDisable) && unitToDisable.from && unitToDisable.to)\n          ) {\n            disabledItems.push(unitToDisable);\n          }\n        }\n      });\n    }\n\n    // Return the updated collection.\n    return disabledItems;\n  }; //DatePicker.prototype.deactivate\n\n\n  /**\n   * Mark a collection of dates as “enabled”.\n   */\n  DatePicker.prototype.activate = function (type, datesToEnable) {\n\n    var calendar = this,\n      disabledItems = calendar.item.disable,\n      disabledItemsCount = disabledItems.length;\n\n    // If we’re flipping, that’s all we need to do.\n    if (datesToEnable == 'flip') {\n      calendar.flipEnable();\n    } else if (datesToEnable === true) {\n      calendar.flipEnable(1);\n      disabledItems = [];\n    } else if (datesToEnable === false) {\n      calendar.flipEnable(-1);\n      disabledItems = [];\n    }\n\n    // Otherwise go through the disabled dates.\n    else {\n\n      datesToEnable.map(function (unitToEnable) {\n\n        var matchFound,\n          disabledUnit,\n          index,\n          isExactRange;\n\n        // Go through the disabled items and try to find a match.\n        for (index = 0; index < disabledItemsCount; index += 1) {\n\n          disabledUnit = disabledItems[index];\n\n          // When an exact match is found, remove it from the collection.\n          if (calendar.isDateExact(disabledUnit, unitToEnable)) {\n            matchFound = disabledItems[index] = null;\n            isExactRange = true;\n            break;\n          }\n\n          // When an overlapped match is found, add the “inverted” state to it.\n          else if (calendar.isDateOverlap(disabledUnit, unitToEnable)) {\n            if ($.isPlainObject(unitToEnable)) {\n              unitToEnable.inverted = true;\n              matchFound = unitToEnable;\n            } else if ($.isArray(unitToEnable)) {\n              matchFound = unitToEnable;\n              if (!matchFound[3]) matchFound.push('inverted');\n            } else if (_.isDate(unitToEnable)) {\n              matchFound = [unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted'];\n            }\n            break;\n          }\n        }\n\n        // If a match was found, remove a previous duplicate entry.\n        if (matchFound)\n          for (index = 0; index < disabledItemsCount; index += 1) {\n            if (calendar.isDateExact(disabledItems[index], unitToEnable)) {\n              disabledItems[index] = null;\n              break;\n            }\n          }\n\n        // In the event that we’re dealing with an exact range of dates,\n        // make sure there are no “inverted” dates because of it.\n        if (isExactRange)\n          for (index = 0; index < disabledItemsCount; index += 1) {\n            if (calendar.isDateOverlap(disabledItems[index], unitToEnable)) {\n              disabledItems[index] = null;\n              break;\n            }\n          }\n\n        // If something is still matched, add it into the collection.\n        if (matchFound) {\n          disabledItems.push(matchFound);\n        }\n      });\n    }\n\n    // Return the updated collection.\n    return disabledItems.filter(function (val) {\n      return val != null;\n    });\n  }; //DatePicker.prototype.activate\n\n\n  /**\n   * Create a string for the nodes in the picker.\n   */\n  DatePicker.prototype.nodes = function (isOpen) {\n\n    var\n      calendar = this,\n      settings = calendar.settings,\n      calendarItem = calendar.item,\n      nowObject = calendarItem.now,\n      selectedObject = calendarItem.select,\n      highlightedObject = calendarItem.highlight,\n      viewsetObject = calendarItem.view,\n      disabledCollection = calendarItem.disable,\n      minLimitObject = calendarItem.min,\n      maxLimitObject = calendarItem.max\n\n      // Create the calendar table head using a copy of weekday labels collection.\n      // * We do a copy so we don't mutate the original array.\n      var tableHead = (function (collection, fullCollection) {\n\n        // If the first day should be Monday, move Sunday to the end.\n        if (settings.firstDay) {\n          collection.push(collection.shift());\n          fullCollection.push(fullCollection.shift());\n        }\n\n        // Create and return the table head group.\n        return _.node(\n          'thead',\n          _.node(\n            'tr',\n            _.group({\n              min: 0,\n              max: DAYS_IN_WEEK - 1,\n              i: 1,\n              node: 'th',\n              item: function (counter) {\n                return [\n                  collection[counter],\n                  settings.klass.weekdays,\n                  'scope=col title=\"' + fullCollection[counter] + '\"'\n                ];\n              }\n            })\n          )\n        ); //endreturn\n      })((settings.showWeekdaysFull ? settings.weekdaysFull : settings.weekdaysShort).slice(0), settings.weekdaysFull.slice(0)), //tableHead\n\n\n      // Create the nav for next/prev month.\n      createMonthNav = function (next) {\n\n        // Otherwise, return the created month tag.\n        return _.node(\n          'button',\n          ' ',\n          settings.klass['nav' + (next ? 'Next' : 'Prev')] + (\n\n            // If the focused month is outside the range, disabled the button.\n            (next && viewsetObject.year >= maxLimitObject.year && viewsetObject.month >= maxLimitObject.month) ||\n            (!next && viewsetObject.year <= minLimitObject.year && viewsetObject.month <= minLimitObject.month) ?\n            ' ' + settings.klass.navDisabled : ''\n          ),\n          'data-nav=' + (next || -1) + ' ' +\n          _.ariaAttr({\n            role: 'button',\n\n            controls: calendar.$node[0].id + '_table'\n          }) + ' ' +\n          'title=\"' + (next ? settings.labelMonthNext : settings.labelMonthPrev) + '\"'\n        ); //endreturn\n      }, //createMonthNav\n\n      // Create the year label.\n      createYearLabel = function () {\n        var focusedYear = viewsetObject.year,\n\n          // If years selector is set to a literal \"true\", set it to 5. Otherwise\n          // divide in half to get half before and half after focused year.\n          numberYears = settings.selectYears === true ? 5 : ~~(settings.selectYears / 2);\n        const focusedMonth = settings.monthsFull[viewsetObject.month];\n        // If there are years to select, add a dropdown menu.\n        if (numberYears) {\n\n          var\n            minYear = minLimitObject.year,\n            maxYear = maxLimitObject.year,\n            lowestYear = focusedYear - numberYears,\n            highestYear = focusedYear + numberYears;\n\n          // If the min year is greater than the lowest year, increase the highest year\n          // by the difference and set the lowest year to the min year.\n          if (minYear > lowestYear) {\n            highestYear += minYear - lowestYear;\n            lowestYear = minYear;\n          }\n\n          // If the max year is less than the highest year, decrease the lowest year\n          // by the lower of the two: available and needed years. Then set the\n          // highest year to the max year.\n          if (maxYear < highestYear) {\n\n            var availableYears = lowestYear - minYear,\n              neededYears = highestYear - maxYear;\n\n            lowestYear -= availableYears > neededYears ? neededYears : availableYears;\n            highestYear = maxYear;\n          }\n\n          return `<div class=\"${settings.klass.selectYear}\" tabindex=\"0\" data-select-year=\"true\"> ${focusedMonth} ${focusedYear} <i class=\"fas fa-caret-down\"></i></div>`;\n        }\n\n        // Otherwise just return the year focused\n        return `<div class=\"${settings.klass.selectYear}\" tabindex=\"0\" data-select-year=\"true\"> ${focusedYear} <i class=\"fas fa-caret-down\"></i></div>`;\n      }, //createYearLabel\n\n      createFooter = function() {\n        // * For Firefox forms to submit, make sure to set the buttons’ `type` attributes as “button”.\n        return `\n          <button class=\"btn btn-flat ${settings.klass.buttonClear}\" type=\"button\" data-clear=1 ${isOpen ? '' : ' disabled'} ${_.ariaAttr({controls: calendar.$node[0].id})}>\n            ${settings.clear}\n          </button> \n          <button class=\"btn btn-flat ${settings.klass.buttonClose}\" type=\"button\" data-close=\"true\" ${isOpen ? '' : ' disabled'} ${_.ariaAttr({controls: calendar.$node[0].id})}>\n            ${settings.close}\n          </button> \n          <button class=\"btn btn-flat ${settings.klass.buttonOk}\" type=\"button\" data-close=\"true\" ${_.ariaAttr({controls: calendar.$node[0].id})}>\n            ${settings.ok}\n          </button>\n        `;\n      },\n\n      createYearsView = function() {\n\n        return `\n          ${_.group({\n            min: 1,\n            max: 6,\n            i: 1,\n            node: 'tr',\n            item: function (rowCounter) {\n\n              const currentVisibleMinYear = calendar.item.currentVisibleMinYear || viewsetObject.year;\n              const min = currentVisibleMinYear + rowCounter * 4 - 4;\n              const max = currentVisibleMinYear + rowCounter * 4 - 1;\n\n              return [_.group({\n                min: min,\n                max: max,\n                i:1,\n                node: 'td',\n                item: function(loopedYear) {\n\n                  const isDisabled = (viewsetObject.year < minLimitObject.year || viewsetObject.year > maxLimitObject.year) ? 'disabled' : '';\n                  const isToday = loopedYear === viewsetObject.year;\n                  const month = selectedObject ? selectedObject.month : 0;\n                  const date = selectedObject ? selectedObject.date : 1;\n\n                  const targetDate = calendar.create([loopedYear, month, date]);\n                  return [\n                    `<div class=\"picker__year picker__year--infocus ${isToday ? settings.klass.now : ''}\" ${isDisabled ? settings.klass.disabled : ''} data-pick=${targetDate.pick} aria-label=\"${loopedYear}\">${loopedYear}</div>`\n                  ];\n                }\n              })];\n            }\n          })}\n        `;\n      },\n\n      createMonthView = function () {\n        const monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull;\n      \n        return `\n        ${_.group({\n          min: 1,\n          max: 4,\n          i: 1,\n          node: 'tr',\n          item: function (rowCounter) {\n\n            const min = rowCounter * 3 - 3;\n            const max = rowCounter * 3 -1;\n\n            return [_.group({\n              min: min,\n              max: max,\n              i:1,\n              node: 'td',\n              item: function(loopedMonth) {\n\n                const isDisabled = ((viewsetObject.year == minLimitObject.year && loopedMonth < minLimitObject.month) || (viewsetObject.year == maxLimitObject.year && loopedMonth > maxLimitObject.month)) ? 'disabled' : '';\n                const isToday = loopedMonth === viewsetObject.month;\n                const year = selectedObject ? selectedObject.year : viewsetObject.year;\n                const date = selectedObject ? selectedObject.date : 1;\n\n                const targetDate = calendar.create([year, loopedMonth, date]);\n\n                return [\n                  `<div class=\"picker__year picker__year--infocus ${isToday ? settings.klass.now : ''}\" ${isDisabled ? settings.klass.disabled : ''} data-pick=${targetDate.pick} aria-label=\"${monthsCollection[loopedMonth]}\">${monthsCollection[loopedMonth]}</div>`\n                ];\n              }\n            })];\n          }\n        })}\n      `;\n      },\n\n      createDaysView = function() {\n        return `\n          ${_.group({\n            min: 0,\n            max: WEEKS_IN_CALENDAR - 1,\n            i: 1,\n            node: 'tr',\n            item: function (rowCounter) {\n\n              // If Monday is the first day and the month starts on Sunday, shift the date back a week.\n              var shiftDateBy = settings.firstDay && calendar.create([viewsetObject.year, viewsetObject.month, 1]).day === 0 ? -7 : 0;\n\n              return [\n                _.group({\n                  min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, // Add 1 for weekday 0index\n                  max: function () {\n                    return this.min + DAYS_IN_WEEK - 1;\n                  },\n                  i: 1,\n                  node: 'td',\n                  item: function (targetDate) {\n\n                    // Convert the time date from a relative date to a target date.\n                    targetDate = calendar.create([viewsetObject.year, viewsetObject.month, targetDate + (settings.firstDay ? 1 : 0)]);\n\n                    var isSelected = selectedObject && selectedObject.pick == targetDate.pick,\n                      isHighlighted = highlightedObject && highlightedObject.pick == targetDate.pick,\n                      isDisabled = disabledCollection && calendar.disabled(targetDate) || targetDate.pick < minLimitObject.pick || targetDate.pick > maxLimitObject.pick,\n                      formattedDate = _.trigger(calendar.formats.toString, calendar, [settings.format, targetDate]);\n\n                    return [\n                      _.node(\n                        'div',\n                        targetDate.date,\n                        (function (klasses) {\n\n                          // Add the `infocus` or `outfocus` classes based on month in view.\n                          klasses.push(viewsetObject.month == targetDate.month ? settings.klass.infocus : settings.klass.outfocus);\n\n                          // Add the `today` class if needed.\n                          if (nowObject.pick == targetDate.pick) {\n                            klasses.push(settings.klass.now);\n                          }\n\n                          // Add the `selected` class if something's selected and the time matches.\n                          if (isSelected) {\n                            klasses.push(settings.klass.selected);\n                          }\n\n                          // Add the `highlighted` class if something's highlighted and the time matches.\n                          if (isHighlighted) {\n                            klasses.push(settings.klass.highlighted);\n                          }\n\n                          // Add the `disabled` class if something's disabled and the object matches.\n                          if (isDisabled) {\n                            klasses.push(settings.klass.disabled);\n                          }\n\n                          return klasses.join(' ');\n                        })([settings.klass.day]),\n                        'data-pick=' + targetDate.pick + ' ' + _.ariaAttr({\n                          role: 'gridcell',\n                          label: formattedDate,\n                          selected: isSelected && calendar.$node.val() === formattedDate ? true : null,\n                          activedescendant: isHighlighted ? true : null,\n                          disabled: isDisabled ? true : null\n                        })\n                      ),\n                      '',\n                      _.ariaAttr({\n                        role: 'presentation'\n                      })\n                    ]; //endreturn\n                  }\n                })\n              ]; //endreturn\n            }\n          })}\n        `;\n      },\n\n      renderView = function(view) {\n        switch(view) {\n          case 'years':\n            return `\n              <tbody>${createYearsView()}</tbody>\n            `;\n          case 'months':\n            return `\n              <tbody>${createMonthView()}</tbody>\n            `;\n          default:\n            return `\n              ${tableHead}\n              <tbody>${createDaysView()}</tbody>\n          `;\n        }\n      };\n          // Create and return the entire calendar.\n      return `\n        <div class=\"${settings.klass.header}\">\n          ${createYearLabel()} \n          <div class=${settings.klass.nav}>\n            ${createMonthNav()}\n            ${createMonthNav(1)}\n          </div>\n        </div>\n        <table class=\"${settings.klass.table}\" id=\"${calendar.$node[0].id}_table\" ${_.ariaAttr({role: 'grid', controls: calendar.$node[0].id, readonly: true})}>\n          ${renderView(calendar.item.currentView)}\n        </table>\n        <div class=${settings.klass.footer}>\n          ${createFooter()}\n        </div>\n      `;\n  }; //DatePicker.prototype.nodes\n\n  DatePicker.prototype.toggleView = function (type, value) {\n    var calendar = this,\n        calendarItem = calendar.item;\n\n    if (value === 'days') {\n      return value;\n    };\n\n    switch (calendarItem.currentView) {\n      case 'days':\n          return 'years';\n      case 'months':\n          return 'days';\n      case 'years':\n          return 'months';\n      default:\n          return;\n    } \n  };\n\n\n  /**\n   * The date picker defaults.\n   */\n  DatePicker.defaults = (function (prefix) {\n\n    return {\n\n      // The title label to use for the month nav buttons\n      labelMonthNext: 'Next month',\n      labelMonthPrev: 'Previous month',\n\n      // The title label to use for the dropdown selectors\n      labelMonthSelect: 'Select a month',\n      labelYearSelect: 'Select a year',\n\n      // Months and weekdays\n      monthsFull: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n      monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n      weekdaysFull: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n      weekdaysShort: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n\n      // Today and clear\n      today: 'Today',\n      clear: 'Clear',\n      close: 'Close',\n      cancel: 'Cancel',\n      ok: 'ok',\n\n      // Picker close behavior\n      closeOnSelect: true,\n      closeOnClear: true,\n\n      // Update input value on select/clear\n      updateInput: true,\n\n      inline: false,\n\n      // The format to show on the `input` element\n      format: 'd mmmm, yyyy',\n\n      // Classes\n      klass: {\n\n        table: prefix + 'table',\n\n        header: prefix + 'header datepicker__box',\n\n        nav: prefix + 'nav',\n        navPrev: prefix + 'nav--prev btn btn-flat',\n        navNext: prefix + 'nav--next btn btn-flat',\n        navDisabled: prefix + 'nav--disabled',\n\n        month: prefix + 'month',\n        year: prefix + 'year',\n\n        selectMonth: prefix + 'select-month',\n        selectYear: prefix + 'select-year',\n\n        weekdays: prefix + 'weekday',\n\n        day: prefix + 'day',\n        disabled: prefix + 'day--disabled',\n        selected: prefix + 'day--selected',\n        highlighted: prefix + 'day--highlighted',\n        now: prefix + 'day--today',\n        infocus: prefix + 'day--infocus',\n        outfocus: prefix + 'day--outfocus',\n\n        footer: prefix + 'footer',\n\n        buttonClear: prefix + 'picker-button--clear',\n        buttonClose: prefix + 'picker-button--close',\n        buttonOk: prefix + 'picker-button--ok'\n      }\n    };\n  })(Picker.klasses().picker + '__');\n\n  /**\n   * Extend the picker to add the date picker.\n   */\n  Picker.extend('datepicker', DatePicker);\n\n\n}));\n\n$.extend($.fn.datepicker.defaults, {\n  selectMonths: true, // Creates a dropdown to control month\n  selectYears: 15, // Creates a dropdown of 15 years to control year,\n\n  onRender: function () {\n    var $pickerInstance = this.$root;\n\n    var day = this.get('highlight', 'dd');\n    var month = this.get('highlight', 'mmm');\n    var labeldayFirstThreeLetters = this.get('highlight', 'dddd').slice(0, 3);\n    var monthFirstUC = month.charAt(0).toUpperCase() + month.slice(1);\n    var isInline = this.component.settings.inline;\n\n    if (!isInline) {\n      $pickerInstance.find('.picker__header').prepend(`\n        <div class=\"picker__date-display\">\n          <div class=\"picker__title-display\">SELECT DATE</div>\n          <div class=\"picker__date-container\">\n            <span class=\"picker__weekday-display\">${labeldayFirstThreeLetters},</span>\n            <span class=\"picker__month-display\">${monthFirstUC}</span>\n            <span class=\"picker__day-display\">${day}</span>\n          </div>\n        </div>\n      `);\n    }\n\n  }\n});\n\n$('.picker-opener').on('click', function (event) {\n  event.preventDefault();\n  event.stopPropagation();\n\n  const elementOpenData = event.target.dataset.open;\n  const $input = $(`#${elementOpenData}`).datepicker();\n  const picker = $input.datepicker('picker');\n\n  picker.open();\n});\n","/*!\n * Name    : Just Another Parallax [Jarallax]\n * Version : 1.10.4\n * Author  : nK <https://nkdev.info>\n * GitHub  : https://github.com/nk-o/jarallax\n */\n/******/ (function(modules) { // webpackBootstrap\n/******/ \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 = 11);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */,\n/* 1 */,\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (callback) {\n\n\tif (document.readyState === 'complete' || document.readyState === 'interactive') {\n\t\t// Already ready or interactive, execute callback\n\t\tcallback.call();\n\t} else if (document.attachEvent) {\n\t\t// Old browsers\n\t\tdocument.attachEvent('onreadystatechange', function () {\n\t\t\tif (document.readyState === 'interactive') callback.call();\n\t\t});\n\t} else if (document.addEventListener) {\n\t\t// Modern browsers\n\t\tdocument.addEventListener('DOMContentLoaded', callback);\n\t}\n};\n\n/***/ }),\n/* 3 */,\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nvar win;\n\nif (typeof window !== \"undefined\") {\n    win = window;\n} else if (typeof global !== \"undefined\") {\n    win = global;\n} else if (typeof self !== \"undefined\") {\n    win = self;\n} else {\n    win = {};\n}\n\nmodule.exports = win;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(5)))\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar 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 || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif ((typeof window === \"undefined\" ? \"undefined\" : _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\n/***/ }),\n/* 6 */,\n/* 7 */,\n/* 8 */,\n/* 9 */,\n/* 10 */,\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(12);\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _liteReady = __webpack_require__(2);\n\nvar _liteReady2 = _interopRequireDefault(_liteReady);\n\nvar _global = __webpack_require__(4);\n\nvar _jarallax = __webpack_require__(13);\n\nvar _jarallax2 = _interopRequireDefault(_jarallax);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// no conflict\nvar oldPlugin = _global.window.jarallax;\n_global.window.jarallax = _jarallax2.default;\n_global.window.jarallax.noConflict = function () {\n    _global.window.jarallax = oldPlugin;\n    return this;\n};\n\n// jQuery support\nif (typeof _global.jQuery !== 'undefined') {\n    var jQueryPlugin = function jQueryPlugin() {\n        var args = arguments || [];\n        Array.prototype.unshift.call(args, this);\n        var res = _jarallax2.default.apply(_global.window, args);\n        return (typeof res === 'undefined' ? 'undefined' : _typeof(res)) !== 'object' ? res : this;\n    };\n    jQueryPlugin.constructor = _jarallax2.default.constructor;\n\n    // no conflict\n    var oldJqPlugin = _global.jQuery.fn.jarallax;\n    _global.jQuery.fn.jarallax = jQueryPlugin;\n    _global.jQuery.fn.jarallax.noConflict = function () {\n        _global.jQuery.fn.jarallax = oldJqPlugin;\n        return this;\n    };\n}\n\n// data-jarallax initialization\n(0, _liteReady2.default)(function () {\n    (0, _jarallax2.default)(document.querySelectorAll('[data-jarallax]'));\n});\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _liteReady = __webpack_require__(2);\n\nvar _liteReady2 = _interopRequireDefault(_liteReady);\n\nvar _rafl = __webpack_require__(14);\n\nvar _rafl2 = _interopRequireDefault(_rafl);\n\nvar _global = __webpack_require__(4);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar isIE = navigator.userAgent.indexOf('MSIE ') > -1 || navigator.userAgent.indexOf('Trident/') > -1 || navigator.userAgent.indexOf('Edge/') > -1;\n\nvar supportTransform = function () {\n    var prefixes = 'transform WebkitTransform MozTransform'.split(' ');\n    var div = document.createElement('div');\n    for (var i = 0; i < prefixes.length; i++) {\n        if (div && div.style[prefixes[i]] !== undefined) {\n            return prefixes[i];\n        }\n    }\n    return false;\n}();\n\n// Window data\nvar wndW = void 0;\nvar wndH = void 0;\nvar wndY = void 0;\nvar forceResizeParallax = false;\nvar forceScrollParallax = false;\nfunction updateWndVars(e) {\n    wndW = _global.window.innerWidth || document.documentElement.clientWidth;\n    wndH = _global.window.innerHeight || document.documentElement.clientHeight;\n    if ((typeof e === 'undefined' ? 'undefined' : _typeof(e)) === 'object' && (e.type === 'load' || e.type === 'dom-loaded')) {\n        forceResizeParallax = true;\n    }\n}\nupdateWndVars();\n_global.window.addEventListener('resize', updateWndVars);\n_global.window.addEventListener('orientationchange', updateWndVars);\n_global.window.addEventListener('load', updateWndVars);\n(0, _liteReady2.default)(function () {\n    updateWndVars({\n        type: 'dom-loaded'\n    });\n});\n\n// list with all jarallax instances\n// need to render all in one scroll/resize event\nvar jarallaxList = [];\n\n// Animate if changed window size or scrolled page\nvar oldPageData = false;\nfunction updateParallax() {\n    if (!jarallaxList.length) {\n        return;\n    }\n\n    if (_global.window.pageYOffset !== undefined) {\n        wndY = _global.window.pageYOffset;\n    } else {\n        wndY = (document.documentElement || document.body.parentNode || document.body).scrollTop;\n    }\n\n    var isResized = forceResizeParallax || !oldPageData || oldPageData.width !== wndW || oldPageData.height !== wndH;\n    var isScrolled = forceScrollParallax || isResized || !oldPageData || oldPageData.y !== wndY;\n\n    forceResizeParallax = false;\n    forceScrollParallax = false;\n\n    if (isResized || isScrolled) {\n        jarallaxList.forEach(function (item) {\n            if (isResized) {\n                item.onResize();\n            }\n            if (isScrolled) {\n                item.onScroll();\n            }\n        });\n\n        oldPageData = {\n            width: wndW,\n            height: wndH,\n            y: wndY\n        };\n    }\n\n    (0, _rafl2.default)(updateParallax);\n}\n\n// ResizeObserver\nvar resizeObserver = global.ResizeObserver ? new global.ResizeObserver(function (entry) {\n    if (entry && entry.length) {\n        (0, _rafl2.default)(function () {\n            entry.forEach(function (item) {\n                if (item.target && item.target.jarallax) {\n                    if (!forceResizeParallax) {\n                        item.target.jarallax.onResize();\n                    }\n                    forceScrollParallax = true;\n                }\n            });\n        });\n    }\n}) : false;\n\nvar instanceID = 0;\n\n// Jarallax class\n\nvar Jarallax = function () {\n    function Jarallax(item, userOptions) {\n        _classCallCheck(this, Jarallax);\n\n        var self = this;\n\n        self.instanceID = instanceID++;\n\n        self.$item = item;\n\n        self.defaults = {\n            type: 'scroll', // type of parallax: scroll, scale, opacity, scale-opacity, scroll-opacity\n            speed: 0.5, // supported value from -1 to 2\n            imgSrc: null,\n            imgElement: '.jarallax-img',\n            imgSize: 'cover',\n            imgPosition: '50% 50%',\n            imgRepeat: 'no-repeat', // supported only for background, not for <img> tag\n            keepImg: false, // keep <img> tag in it's default place\n            elementInViewport: null,\n            zIndex: -100,\n            disableParallax: false,\n            disableVideo: false,\n            automaticResize: true, // use ResizeObserver to recalculate position and size of parallax image\n\n            // video\n            videoSrc: null,\n            videoStartTime: 0,\n            videoEndTime: 0,\n            videoVolume: 0,\n            videoPlayOnlyVisible: true,\n\n            // events\n            onScroll: null, // function(calculations) {}\n            onInit: null, // function() {}\n            onDestroy: null, // function() {}\n            onCoverImage: null // function() {}\n        };\n\n        // DEPRECATED: old data-options\n        var deprecatedDataAttribute = self.$item.getAttribute('data-jarallax');\n        var oldDataOptions = JSON.parse(deprecatedDataAttribute || '{}');\n        if (deprecatedDataAttribute) {\n            // eslint-disable-next-line no-console\n            console.warn('Detected usage of deprecated data-jarallax JSON options, you should use pure data-attribute options. See info here - https://github.com/nk-o/jarallax/issues/53');\n        }\n\n        // prepare data-options\n        var dataOptions = self.$item.dataset || {};\n        var pureDataOptions = {};\n        Object.keys(dataOptions).forEach(function (key) {\n            var loweCaseOption = key.substr(0, 1).toLowerCase() + key.substr(1);\n            if (loweCaseOption && typeof self.defaults[loweCaseOption] !== 'undefined') {\n                pureDataOptions[loweCaseOption] = dataOptions[key];\n            }\n        });\n\n        self.options = self.extend({}, self.defaults, oldDataOptions, pureDataOptions, userOptions);\n        self.pureOptions = self.extend({}, self.options);\n\n        // prepare 'true' and 'false' strings to boolean\n        Object.keys(self.options).forEach(function (key) {\n            if (self.options[key] === 'true') {\n                self.options[key] = true;\n            } else if (self.options[key] === 'false') {\n                self.options[key] = false;\n            }\n        });\n\n        // fix speed option [-1.0, 2.0]\n        self.options.speed = Math.min(2, Math.max(-1, parseFloat(self.options.speed)));\n\n        // deprecated noAndroid and noIos options\n        if (self.options.noAndroid || self.options.noIos) {\n            // eslint-disable-next-line no-console\n            console.warn('Detected usage of deprecated noAndroid or noIos options, you should use disableParallax option. See info here - https://github.com/nk-o/jarallax/#disable-on-mobile-devices');\n\n            // prepare fallback if disableParallax option is not used\n            if (!self.options.disableParallax) {\n                if (self.options.noIos && self.options.noAndroid) {\n                    self.options.disableParallax = /iPad|iPhone|iPod|Android/;\n                } else if (self.options.noIos) {\n                    self.options.disableParallax = /iPad|iPhone|iPod/;\n                } else if (self.options.noAndroid) {\n                    self.options.disableParallax = /Android/;\n                }\n            }\n        }\n\n        // prepare disableParallax callback\n        if (typeof self.options.disableParallax === 'string') {\n            self.options.disableParallax = new RegExp(self.options.disableParallax);\n        }\n        if (self.options.disableParallax instanceof RegExp) {\n            var disableParallaxRegexp = self.options.disableParallax;\n            self.options.disableParallax = function () {\n                return disableParallaxRegexp.test(navigator.userAgent);\n            };\n        }\n        if (typeof self.options.disableParallax !== 'function') {\n            self.options.disableParallax = function () {\n                return false;\n            };\n        }\n\n        // prepare disableVideo callback\n        if (typeof self.options.disableVideo === 'string') {\n            self.options.disableVideo = new RegExp(self.options.disableVideo);\n        }\n        if (self.options.disableVideo instanceof RegExp) {\n            var disableVideoRegexp = self.options.disableVideo;\n            self.options.disableVideo = function () {\n                return disableVideoRegexp.test(navigator.userAgent);\n            };\n        }\n        if (typeof self.options.disableVideo !== 'function') {\n            self.options.disableVideo = function () {\n                return false;\n            };\n        }\n\n        // custom element to check if parallax in viewport\n        var elementInVP = self.options.elementInViewport;\n        // get first item from array\n        if (elementInVP && (typeof elementInVP === 'undefined' ? 'undefined' : _typeof(elementInVP)) === 'object' && typeof elementInVP.length !== 'undefined') {\n            var _elementInVP = elementInVP;\n\n            var _elementInVP2 = _slicedToArray(_elementInVP, 1);\n\n            elementInVP = _elementInVP2[0];\n        }\n        // check if dom element\n        if (!(elementInVP instanceof Element)) {\n            elementInVP = null;\n        }\n        self.options.elementInViewport = elementInVP;\n\n        self.image = {\n            src: self.options.imgSrc || null,\n            $container: null,\n            useImgTag: false,\n\n            // position fixed is needed for the most of browsers because absolute position have glitches\n            // on MacOS with smooth scroll there is a huge lags with absolute position - https://github.com/nk-o/jarallax/issues/75\n            // on mobile devices better scrolled with absolute position\n            position: /iPad|iPhone|iPod|Android/.test(navigator.userAgent) ? 'absolute' : 'fixed'\n        };\n\n        if (self.initImg() && self.canInitParallax()) {\n            self.init();\n        }\n    }\n\n    // add styles to element\n\n\n    _createClass(Jarallax, [{\n        key: 'css',\n        value: function css(el, styles) {\n            if (typeof styles === 'string') {\n                return _global.window.getComputedStyle(el).getPropertyValue(styles);\n            }\n\n            // add transform property with vendor prefix\n            if (styles.transform && supportTransform) {\n                styles[supportTransform] = styles.transform;\n            }\n\n            Object.keys(styles).forEach(function (key) {\n                el.style[key] = styles[key];\n            });\n            return el;\n        }\n\n        // Extend like jQuery.extend\n\n    }, {\n        key: 'extend',\n        value: function extend(out) {\n            var _arguments = arguments;\n\n            out = out || {};\n            Object.keys(arguments).forEach(function (i) {\n                if (!_arguments[i]) {\n                    return;\n                }\n                Object.keys(_arguments[i]).forEach(function (key) {\n                    out[key] = _arguments[i][key];\n                });\n            });\n            return out;\n        }\n\n        // get window size and scroll position. Useful for extensions\n\n    }, {\n        key: 'getWindowData',\n        value: function getWindowData() {\n            return {\n                width: wndW,\n                height: wndH,\n                y: wndY\n            };\n        }\n\n        // Jarallax functions\n\n    }, {\n        key: 'initImg',\n        value: function initImg() {\n            var self = this;\n\n            // find image element\n            var $imgElement = self.options.imgElement;\n            if ($imgElement && typeof $imgElement === 'string') {\n                $imgElement = self.$item.querySelector($imgElement);\n            }\n            // check if dom element\n            if (!($imgElement instanceof Element)) {\n                $imgElement = null;\n            }\n\n            if ($imgElement) {\n                if (self.options.keepImg) {\n                    self.image.$item = $imgElement.cloneNode(true);\n                } else {\n                    self.image.$item = $imgElement;\n                    self.image.$itemParent = $imgElement.parentNode;\n                }\n                self.image.useImgTag = true;\n            }\n\n            // true if there is img tag\n            if (self.image.$item) {\n                return true;\n            }\n\n            // get image src\n            if (self.image.src === null) {\n                self.image.src = self.css(self.$item, 'background-image').replace(/^url\\(['\"]?/g, '').replace(/['\"]?\\)$/g, '');\n            }\n            return !(!self.image.src || self.image.src === 'none');\n        }\n    }, {\n        key: 'canInitParallax',\n        value: function canInitParallax() {\n            return supportTransform && !this.options.disableParallax();\n        }\n    }, {\n        key: 'init',\n        value: function init() {\n            var self = this;\n            var containerStyles = {\n                position: 'absolute',\n                top: 0,\n                left: 0,\n                width: '100%',\n                height: '100%',\n                overflow: 'hidden',\n                pointerEvents: 'none'\n            };\n            var imageStyles = {};\n\n            if (!self.options.keepImg) {\n                // save default user styles\n                var curStyle = self.$item.getAttribute('style');\n                if (curStyle) {\n                    self.$item.setAttribute('data-jarallax-original-styles', curStyle);\n                }\n                if (self.image.useImgTag) {\n                    var curImgStyle = self.image.$item.getAttribute('style');\n                    if (curImgStyle) {\n                        self.image.$item.setAttribute('data-jarallax-original-styles', curImgStyle);\n                    }\n                }\n            }\n\n            // set relative position and z-index to the parent\n            if (self.css(self.$item, 'position') === 'static') {\n                self.css(self.$item, {\n                    position: 'relative'\n                });\n            }\n            if (self.css(self.$item, 'z-index') === 'auto') {\n                self.css(self.$item, {\n                    zIndex: 0\n                });\n            }\n\n            // container for parallax image\n            self.image.$container = document.createElement('div');\n            self.css(self.image.$container, containerStyles);\n            self.css(self.image.$container, {\n                'z-index': self.options.zIndex\n            });\n\n            // fix for IE https://github.com/nk-o/jarallax/issues/110\n            if (isIE) {\n                self.css(self.image.$container, {\n                    opacity: 0.9999\n                });\n            }\n\n            self.image.$container.setAttribute('id', 'jarallax-container-' + self.instanceID);\n            self.$item.appendChild(self.image.$container);\n\n            // use img tag\n            if (self.image.useImgTag) {\n                imageStyles = self.extend({\n                    'object-fit': self.options.imgSize,\n                    'object-position': self.options.imgPosition,\n                    // support for plugin https://github.com/bfred-it/object-fit-images\n                    'font-family': 'object-fit: ' + self.options.imgSize + '; object-position: ' + self.options.imgPosition + ';',\n                    'max-width': 'none'\n                }, containerStyles, imageStyles);\n\n                // use div with background image\n            } else {\n                self.image.$item = document.createElement('div');\n                if (self.image.src) {\n                    imageStyles = self.extend({\n                        'background-position': self.options.imgPosition,\n                        'background-size': self.options.imgSize,\n                        'background-repeat': self.options.imgRepeat,\n                        'background-image': 'url(\"' + self.image.src + '\")'\n                    }, containerStyles, imageStyles);\n                }\n            }\n\n            if (self.options.type === 'opacity' || self.options.type === 'scale' || self.options.type === 'scale-opacity' || self.options.speed === 1) {\n                self.image.position = 'absolute';\n            }\n\n            // check if one of parents have transform style (without this check, scroll transform will be inverted if used parallax with position fixed)\n            // discussion - https://github.com/nk-o/jarallax/issues/9\n            if (self.image.position === 'fixed') {\n                var parentWithTransform = 0;\n                var $itemParents = self.$item;\n                while ($itemParents !== null && $itemParents !== document && parentWithTransform === 0) {\n                    var parentTransform = self.css($itemParents, '-webkit-transform') || self.css($itemParents, '-moz-transform') || self.css($itemParents, 'transform');\n                    if (parentTransform && parentTransform !== 'none') {\n                        parentWithTransform = 1;\n                        self.image.position = 'absolute';\n                    }\n                    $itemParents = $itemParents.parentNode;\n                }\n            }\n\n            // add position to parallax block\n            imageStyles.position = self.image.position;\n\n            // insert parallax image\n            self.css(self.image.$item, imageStyles);\n            self.image.$container.appendChild(self.image.$item);\n\n            // set initial position and size\n            self.onResize();\n            self.onScroll(true);\n\n            // ResizeObserver\n            if (self.options.automaticResize && resizeObserver) {\n                resizeObserver.observe(self.$item);\n            }\n\n            // call onInit event\n            if (self.options.onInit) {\n                self.options.onInit.call(self);\n            }\n\n            // remove default user background\n            if (self.css(self.$item, 'background-image') !== 'none') {\n                self.css(self.$item, {\n                    'background-image': 'none'\n                });\n            }\n\n            self.addToParallaxList();\n        }\n\n        // add to parallax instances list\n\n    }, {\n        key: 'addToParallaxList',\n        value: function addToParallaxList() {\n            jarallaxList.push(this);\n\n            if (jarallaxList.length === 1) {\n                updateParallax();\n            }\n        }\n\n        // remove from parallax instances list\n\n    }, {\n        key: 'removeFromParallaxList',\n        value: function removeFromParallaxList() {\n            var self = this;\n\n            jarallaxList.forEach(function (item, key) {\n                if (item.instanceID === self.instanceID) {\n                    jarallaxList.splice(key, 1);\n                }\n            });\n        }\n    }, {\n        key: 'destroy',\n        value: function destroy() {\n            var self = this;\n\n            self.removeFromParallaxList();\n\n            // return styles on container as before jarallax init\n            var originalStylesTag = self.$item.getAttribute('data-jarallax-original-styles');\n            self.$item.removeAttribute('data-jarallax-original-styles');\n            // null occurs if there is no style tag before jarallax init\n            if (!originalStylesTag) {\n                self.$item.removeAttribute('style');\n            } else {\n                self.$item.setAttribute('style', originalStylesTag);\n            }\n\n            if (self.image.useImgTag) {\n                // return styles on img tag as before jarallax init\n                var originalStylesImgTag = self.image.$item.getAttribute('data-jarallax-original-styles');\n                self.image.$item.removeAttribute('data-jarallax-original-styles');\n                // null occurs if there is no style tag before jarallax init\n                if (!originalStylesImgTag) {\n                    self.image.$item.removeAttribute('style');\n                } else {\n                    self.image.$item.setAttribute('style', originalStylesTag);\n                }\n\n                // move img tag to its default position\n                if (self.image.$itemParent) {\n                    self.image.$itemParent.appendChild(self.image.$item);\n                }\n            }\n\n            // remove additional dom elements\n            if (self.$clipStyles) {\n                self.$clipStyles.parentNode.removeChild(self.$clipStyles);\n            }\n            if (self.image.$container) {\n                self.image.$container.parentNode.removeChild(self.image.$container);\n            }\n\n            // call onDestroy event\n            if (self.options.onDestroy) {\n                self.options.onDestroy.call(self);\n            }\n\n            // delete jarallax from item\n            delete self.$item.jarallax;\n        }\n\n        // it will remove some image overlapping\n        // overlapping occur due to an image position fixed inside absolute position element\n\n    }, {\n        key: 'clipContainer',\n        value: function clipContainer() {\n            // needed only when background in fixed position\n            if (this.image.position !== 'fixed') {\n                return;\n            }\n\n            var self = this;\n            var rect = self.image.$container.getBoundingClientRect();\n            var width = rect.width,\n                height = rect.height;\n\n\n            if (!self.$clipStyles) {\n                self.$clipStyles = document.createElement('style');\n                self.$clipStyles.setAttribute('type', 'text/css');\n                self.$clipStyles.setAttribute('id', 'jarallax-clip-' + self.instanceID);\n                var head = document.head || document.getElementsByTagName('head')[0];\n                head.appendChild(self.$clipStyles);\n            }\n\n            var styles = '#jarallax-container-' + self.instanceID + ' {\\n           clip: rect(0 ' + width + 'px ' + height + 'px 0);\\n           clip: rect(0, ' + width + 'px, ' + height + 'px, 0);\\n        }';\n\n            // add clip styles inline (this method need for support IE8 and less browsers)\n            if (self.$clipStyles.styleSheet) {\n                self.$clipStyles.styleSheet.cssText = styles;\n            } else {\n                self.$clipStyles.innerHTML = styles;\n            }\n        }\n    }, {\n        key: 'coverImage',\n        value: function coverImage() {\n            var self = this;\n\n            var rect = self.image.$container.getBoundingClientRect();\n            var contH = rect.height;\n            var speed = self.options.speed;\n\n            var isScroll = self.options.type === 'scroll' || self.options.type === 'scroll-opacity';\n            var scrollDist = 0;\n            var resultH = contH;\n            var resultMT = 0;\n\n            // scroll parallax\n            if (isScroll) {\n                // scroll distance and height for image\n                if (speed < 0) {\n                    scrollDist = speed * Math.max(contH, wndH);\n                } else {\n                    scrollDist = speed * (contH + wndH);\n                }\n\n                // size for scroll parallax\n                if (speed > 1) {\n                    resultH = Math.abs(scrollDist - wndH);\n                } else if (speed < 0) {\n                    resultH = scrollDist / speed + Math.abs(scrollDist);\n                } else {\n                    resultH += Math.abs(wndH - contH) * (1 - speed);\n                }\n\n                scrollDist /= 2;\n            }\n\n            // store scroll distance\n            self.parallaxScrollDistance = scrollDist;\n\n            // vertical center\n            if (isScroll) {\n                resultMT = (wndH - resultH) / 2;\n            } else {\n                resultMT = (contH - resultH) / 2;\n            }\n\n            // apply result to item\n            self.css(self.image.$item, {\n                height: resultH + 'px',\n                marginTop: resultMT + 'px',\n                left: self.image.position === 'fixed' ? rect.left + 'px' : '0',\n                width: rect.width + 'px'\n            });\n\n            // call onCoverImage event\n            if (self.options.onCoverImage) {\n                self.options.onCoverImage.call(self);\n            }\n\n            // return some useful data. Used in the video cover function\n            return {\n                image: {\n                    height: resultH,\n                    marginTop: resultMT\n                },\n                container: rect\n            };\n        }\n    }, {\n        key: 'isVisible',\n        value: function isVisible() {\n            return this.isElementInViewport || false;\n        }\n    }, {\n        key: 'onScroll',\n        value: function onScroll(force) {\n            var self = this;\n\n            var rect = self.$item.getBoundingClientRect();\n            var contT = rect.top;\n            var contH = rect.height;\n            var styles = {};\n\n            // check if in viewport\n            var viewportRect = rect;\n            if (self.options.elementInViewport) {\n                viewportRect = self.options.elementInViewport.getBoundingClientRect();\n            }\n            self.isElementInViewport = viewportRect.bottom >= 0 && viewportRect.right >= 0 && viewportRect.top <= wndH && viewportRect.left <= wndW;\n\n            // stop calculations if item is not in viewport\n            if (force ? false : !self.isElementInViewport) {\n                return;\n            }\n\n            // calculate parallax helping variables\n            var beforeTop = Math.max(0, contT);\n            var beforeTopEnd = Math.max(0, contH + contT);\n            var afterTop = Math.max(0, -contT);\n            var beforeBottom = Math.max(0, contT + contH - wndH);\n            var beforeBottomEnd = Math.max(0, contH - (contT + contH - wndH));\n            var afterBottom = Math.max(0, -contT + wndH - contH);\n            var fromViewportCenter = 1 - 2 * (wndH - contT) / (wndH + contH);\n\n            // calculate on how percent of section is visible\n            var visiblePercent = 1;\n            if (contH < wndH) {\n                visiblePercent = 1 - (afterTop || beforeBottom) / contH;\n            } else if (beforeTopEnd <= wndH) {\n                visiblePercent = beforeTopEnd / wndH;\n            } else if (beforeBottomEnd <= wndH) {\n                visiblePercent = beforeBottomEnd / wndH;\n            }\n\n            // opacity\n            if (self.options.type === 'opacity' || self.options.type === 'scale-opacity' || self.options.type === 'scroll-opacity') {\n                styles.transform = 'translate3d(0,0,0)';\n                styles.opacity = visiblePercent;\n            }\n\n            // scale\n            if (self.options.type === 'scale' || self.options.type === 'scale-opacity') {\n                var scale = 1;\n                if (self.options.speed < 0) {\n                    scale -= self.options.speed * visiblePercent;\n                } else {\n                    scale += self.options.speed * (1 - visiblePercent);\n                }\n                styles.transform = 'scale(' + scale + ') translate3d(0,0,0)';\n            }\n\n            // scroll\n            if (self.options.type === 'scroll' || self.options.type === 'scroll-opacity') {\n                var positionY = self.parallaxScrollDistance * fromViewportCenter;\n\n                // fix if parallax block in absolute position\n                if (self.image.position === 'absolute') {\n                    positionY -= contT;\n                }\n\n                styles.transform = 'translate3d(0,' + positionY + 'px,0)';\n            }\n\n            self.css(self.image.$item, styles);\n\n            // call onScroll event\n            if (self.options.onScroll) {\n                self.options.onScroll.call(self, {\n                    section: rect,\n\n                    beforeTop: beforeTop,\n                    beforeTopEnd: beforeTopEnd,\n                    afterTop: afterTop,\n                    beforeBottom: beforeBottom,\n                    beforeBottomEnd: beforeBottomEnd,\n                    afterBottom: afterBottom,\n\n                    visiblePercent: visiblePercent,\n                    fromViewportCenter: fromViewportCenter\n                });\n            }\n        }\n    }, {\n        key: 'onResize',\n        value: function onResize() {\n            this.coverImage();\n            this.clipContainer();\n        }\n    }]);\n\n    return Jarallax;\n}();\n\n// global definition\n\n\nvar plugin = function plugin(items) {\n    // check for dom element\n    // thanks: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n    if ((typeof HTMLElement === 'undefined' ? 'undefined' : _typeof(HTMLElement)) === 'object' ? items instanceof HTMLElement : items && (typeof items === 'undefined' ? 'undefined' : _typeof(items)) === 'object' && items !== null && items.nodeType === 1 && typeof items.nodeName === 'string') {\n        items = [items];\n    }\n\n    var options = arguments[1];\n    var args = Array.prototype.slice.call(arguments, 2);\n    var len = items.length;\n    var k = 0;\n    var ret = void 0;\n\n    for (k; k < len; k++) {\n        if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object' || typeof options === 'undefined') {\n            if (!items[k].jarallax) {\n                items[k].jarallax = new Jarallax(items[k], options);\n            }\n        } else if (items[k].jarallax) {\n            // eslint-disable-next-line prefer-spread\n            ret = items[k].jarallax[options].apply(items[k].jarallax, args);\n        }\n        if (typeof ret !== 'undefined') {\n            return ret;\n        }\n    }\n\n    return items;\n};\nplugin.constructor = Jarallax;\n\nexports.default = plugin;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(5)))\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar global = __webpack_require__(4);\n\n/**\n * `requestAnimationFrame()`\n */\n\nvar request = global.requestAnimationFrame || global.webkitRequestAnimationFrame || global.mozRequestAnimationFrame || fallback;\n\nvar prev = +new Date();\nfunction fallback(fn) {\n  var curr = +new Date();\n  var ms = Math.max(0, 16 - (curr - prev));\n  var req = setTimeout(fn, ms);\n  return prev = curr, req;\n}\n\n/**\n * `cancelAnimationFrame()`\n */\n\nvar cancel = global.cancelAnimationFrame || global.webkitCancelAnimationFrame || global.mozCancelAnimationFrame || clearTimeout;\n\nif (Function.prototype.bind) {\n  request = request.bind(global);\n  cancel = cancel.bind(global);\n}\n\nexports = module.exports = request;\nexports.cancel = cancel;\n\n/***/ })\n/******/ ]);\n","/*!\n * Name    : Video Background Extension for Jarallax\n * Version : 1.0.1\n * Author  : nK <https://nkdev.info>\n * GitHub  : https://github.com/nk-o/jarallax\n */\n/******/ (function(modules) { // webpackBootstrap\n/******/ \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 = 6);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */,\n/* 1 */,\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (callback) {\n\n\tif (document.readyState === 'complete' || document.readyState === 'interactive') {\n\t\t// Already ready or interactive, execute callback\n\t\tcallback.call();\n\t} else if (document.attachEvent) {\n\t\t// Old browsers\n\t\tdocument.attachEvent('onreadystatechange', function () {\n\t\t\tif (document.readyState === 'interactive') callback.call();\n\t\t});\n\t} else if (document.addEventListener) {\n\t\t// Modern browsers\n\t\tdocument.addEventListener('DOMContentLoaded', callback);\n\t}\n};\n\n/***/ }),\n/* 3 */,\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nvar win;\n\nif (typeof window !== \"undefined\") {\n    win = window;\n} else if (typeof global !== \"undefined\") {\n    win = global;\n} else if (typeof self !== \"undefined\") {\n    win = self;\n} else {\n    win = {};\n}\n\nmodule.exports = win;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(5)))\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar 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 || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif ((typeof window === \"undefined\" ? \"undefined\" : _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\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(7);\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _videoWorker = __webpack_require__(8);\n\nvar _videoWorker2 = _interopRequireDefault(_videoWorker);\n\nvar _global = __webpack_require__(4);\n\nvar _global2 = _interopRequireDefault(_global);\n\nvar _liteReady = __webpack_require__(2);\n\nvar _liteReady2 = _interopRequireDefault(_liteReady);\n\nvar _jarallaxVideo = __webpack_require__(10);\n\nvar _jarallaxVideo2 = _interopRequireDefault(_jarallaxVideo);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// add video worker globally to fallback jarallax < 1.10 versions\n_global2.default.VideoWorker = _global2.default.VideoWorker || _videoWorker2.default;\n\n(0, _jarallaxVideo2.default)();\n\n// data-jarallax-video initialization\n(0, _liteReady2.default)(function () {\n    if (typeof jarallax !== 'undefined') {\n        jarallax(document.querySelectorAll('[data-jarallax-video]'));\n    }\n});\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(9);\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// Deferred\n// thanks http://stackoverflow.com/questions/18096715/implement-deferred-object-without-using-jquery\nfunction Deferred() {\n    this._done = [];\n    this._fail = [];\n}\nDeferred.prototype = {\n    execute: function execute(list, args) {\n        var i = list.length;\n        args = Array.prototype.slice.call(args);\n        while (i--) {\n            list[i].apply(null, args);\n        }\n    },\n    resolve: function resolve() {\n        this.execute(this._done, arguments);\n    },\n    reject: function reject() {\n        this.execute(this._fail, arguments);\n    },\n    done: function done(callback) {\n        this._done.push(callback);\n    },\n    fail: function fail(callback) {\n        this._fail.push(callback);\n    }\n};\n\nvar ID = 0;\nvar YoutubeAPIadded = 0;\nvar VimeoAPIadded = 0;\nvar loadingYoutubePlayer = 0;\nvar loadingVimeoPlayer = 0;\nvar loadingYoutubeDefer = new Deferred();\nvar loadingVimeoDefer = new Deferred();\n\nvar VideoWorker = function () {\n    function VideoWorker(url, options) {\n        _classCallCheck(this, VideoWorker);\n\n        var self = this;\n\n        self.url = url;\n\n        self.options_default = {\n            autoplay: false,\n            loop: false,\n            mute: false,\n            volume: 100,\n            showContols: true,\n\n            // start / end video time in seconds\n            startTime: 0,\n            endTime: 0\n        };\n\n        self.options = self.extend({}, self.options_default, options);\n\n        // check URL\n        self.videoID = self.parseURL(url);\n\n        // init\n        if (self.videoID) {\n            self.ID = ID++;\n            self.loadAPI();\n            self.init();\n        }\n    }\n\n    // Extend like jQuery.extend\n\n\n    _createClass(VideoWorker, [{\n        key: 'extend',\n        value: function extend(out) {\n            var _arguments = arguments;\n\n            out = out || {};\n            Object.keys(arguments).forEach(function (i) {\n                if (!_arguments[i]) {\n                    return;\n                }\n                Object.keys(_arguments[i]).forEach(function (key) {\n                    out[key] = _arguments[i][key];\n                });\n            });\n            return out;\n        }\n    }, {\n        key: 'parseURL',\n        value: function parseURL(url) {\n            // parse youtube ID\n            function getYoutubeID(ytUrl) {\n                // eslint-disable-next-line no-useless-escape\n                var regExp = /.*(?:youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=)([^#\\&\\?]*).*/;\n                var match = ytUrl.match(regExp);\n                return match && match[1].length === 11 ? match[1] : false;\n            }\n\n            // parse vimeo ID\n            function getVimeoID(vmUrl) {\n                // eslint-disable-next-line no-useless-escape\n                var regExp = /https?:\\/\\/(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^\\/]*)\\/videos\\/|album\\/(\\d+)\\/video\\/|video\\/|)(\\d+)(?:$|\\/|\\?)/;\n                var match = vmUrl.match(regExp);\n                return match && match[3] ? match[3] : false;\n            }\n\n            // parse local string\n            function getLocalVideos(locUrl) {\n                // eslint-disable-next-line no-useless-escape\n                var videoFormats = locUrl.split(/,(?=mp4\\:|webm\\:|ogv\\:|ogg\\:)/);\n                var result = {};\n                var ready = 0;\n                videoFormats.forEach(function (val) {\n                    // eslint-disable-next-line no-useless-escape\n                    var match = val.match(/^(mp4|webm|ogv|ogg)\\:(.*)/);\n                    if (match && match[1] && match[2]) {\n                        // eslint-disable-next-line prefer-destructuring\n                        result[match[1] === 'ogv' ? 'ogg' : match[1]] = match[2];\n                        ready = 1;\n                    }\n                });\n                return ready ? result : false;\n            }\n\n            var Youtube = getYoutubeID(url);\n            var Vimeo = getVimeoID(url);\n            var Local = getLocalVideos(url);\n\n            if (Youtube) {\n                this.type = 'youtube';\n                return Youtube;\n            } else if (Vimeo) {\n                this.type = 'vimeo';\n                return Vimeo;\n            } else if (Local) {\n                this.type = 'local';\n                return Local;\n            }\n\n            return false;\n        }\n    }, {\n        key: 'isValid',\n        value: function isValid() {\n            return !!this.videoID;\n        }\n\n        // events\n\n    }, {\n        key: 'on',\n        value: function on(name, callback) {\n            this.userEventsList = this.userEventsList || [];\n\n            // add new callback in events list\n            (this.userEventsList[name] || (this.userEventsList[name] = [])).push(callback);\n        }\n    }, {\n        key: 'off',\n        value: function off(name, callback) {\n            var _this = this;\n\n            if (!this.userEventsList || !this.userEventsList[name]) {\n                return;\n            }\n\n            if (!callback) {\n                delete this.userEventsList[name];\n            } else {\n                this.userEventsList[name].forEach(function (val, key) {\n                    if (val === callback) {\n                        _this.userEventsList[name][key] = false;\n                    }\n                });\n            }\n        }\n    }, {\n        key: 'fire',\n        value: function fire(name) {\n            var _this2 = this;\n\n            var args = [].slice.call(arguments, 1);\n            if (this.userEventsList && typeof this.userEventsList[name] !== 'undefined') {\n                this.userEventsList[name].forEach(function (val) {\n                    // call with all arguments\n                    if (val) {\n                        val.apply(_this2, args);\n                    }\n                });\n            }\n        }\n    }, {\n        key: 'play',\n        value: function play(start) {\n            var self = this;\n            if (!self.player) {\n                return;\n            }\n\n            if (self.type === 'youtube' && self.player.playVideo) {\n                if (typeof start !== 'undefined') {\n                    self.player.seekTo(start || 0);\n                }\n                if (YT.PlayerState.PLAYING !== self.player.getPlayerState()) {\n                    self.player.playVideo();\n                }\n            }\n\n            if (self.type === 'vimeo') {\n                if (typeof start !== 'undefined') {\n                    self.player.setCurrentTime(start);\n                }\n                self.player.getPaused().then(function (paused) {\n                    if (paused) {\n                        self.player.play();\n                    }\n                });\n            }\n\n            if (self.type === 'local') {\n                if (typeof start !== 'undefined') {\n                    self.player.currentTime = start;\n                }\n                if (self.player.paused) {\n                    self.player.play();\n                }\n            }\n        }\n    }, {\n        key: 'pause',\n        value: function pause() {\n            var self = this;\n            if (!self.player) {\n                return;\n            }\n\n            if (self.type === 'youtube' && self.player.pauseVideo) {\n                if (YT.PlayerState.PLAYING === self.player.getPlayerState()) {\n                    self.player.pauseVideo();\n                }\n            }\n\n            if (self.type === 'vimeo') {\n                self.player.getPaused().then(function (paused) {\n                    if (!paused) {\n                        self.player.pause();\n                    }\n                });\n            }\n\n            if (self.type === 'local') {\n                if (!self.player.paused) {\n                    self.player.pause();\n                }\n            }\n        }\n    }, {\n        key: 'mute',\n        value: function mute() {\n            var self = this;\n            if (!self.player) {\n                return;\n            }\n\n            if (self.type === 'youtube' && self.player.mute) {\n                self.player.mute();\n            }\n\n            if (self.type === 'vimeo' && self.player.setVolume) {\n                self.player.setVolume(0);\n            }\n\n            if (self.type === 'local') {\n                self.$video.muted = true;\n            }\n        }\n    }, {\n        key: 'unmute',\n        value: function unmute() {\n            var self = this;\n            if (!self.player) {\n                return;\n            }\n\n            if (self.type === 'youtube' && self.player.mute) {\n                self.player.unMute();\n            }\n\n            if (self.type === 'vimeo' && self.player.setVolume) {\n                self.player.setVolume(self.options.volume);\n            }\n\n            if (self.type === 'local') {\n                self.$video.muted = false;\n            }\n        }\n    }, {\n        key: 'setVolume',\n        value: function setVolume() {\n            var volume = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n            var self = this;\n            if (!self.player || !volume) {\n                return;\n            }\n\n            if (self.type === 'youtube' && self.player.setVolume) {\n                self.player.setVolume(volume);\n            }\n\n            if (self.type === 'vimeo' && self.player.setVolume) {\n                self.player.setVolume(volume);\n            }\n\n            if (self.type === 'local') {\n                self.$video.volume = volume / 100;\n            }\n        }\n    }, {\n        key: 'getVolume',\n        value: function getVolume(callback) {\n            var self = this;\n            if (!self.player) {\n                callback(false);\n                return;\n            }\n\n            if (self.type === 'youtube' && self.player.getVolume) {\n                callback(self.player.getVolume());\n            }\n\n            if (self.type === 'vimeo' && self.player.getVolume) {\n                self.player.getVolume().then(function (volume) {\n                    callback(volume);\n                });\n            }\n\n            if (self.type === 'local') {\n                callback(self.$video.volume * 100);\n            }\n        }\n    }, {\n        key: 'getMuted',\n        value: function getMuted(callback) {\n            var self = this;\n            if (!self.player) {\n                callback(null);\n                return;\n            }\n\n            if (self.type === 'youtube' && self.player.isMuted) {\n                callback(self.player.isMuted());\n            }\n\n            if (self.type === 'vimeo' && self.player.getVolume) {\n                self.player.getVolume().then(function (volume) {\n                    callback(!!volume);\n                });\n            }\n\n            if (self.type === 'local') {\n                callback(self.$video.muted);\n            }\n        }\n    }, {\n        key: 'getImageURL',\n        value: function getImageURL(callback) {\n            var self = this;\n\n            if (self.videoImage) {\n                callback(self.videoImage);\n                return;\n            }\n\n            if (self.type === 'youtube') {\n                var availableSizes = ['maxresdefault', 'sddefault', 'hqdefault', '0'];\n                var step = 0;\n\n                var tempImg = new Image();\n                tempImg.onload = function () {\n                    // if no thumbnail, youtube add their own image with width = 120px\n                    if ((this.naturalWidth || this.width) !== 120 || step === availableSizes.length - 1) {\n                        // ok\n                        self.videoImage = 'https://img.youtube.com/vi/' + self.videoID + '/' + availableSizes[step] + '.jpg';\n                        callback(self.videoImage);\n                    } else {\n                        // try another size\n                        step++;\n                        this.src = 'https://img.youtube.com/vi/' + self.videoID + '/' + availableSizes[step] + '.jpg';\n                    }\n                };\n                tempImg.src = 'https://img.youtube.com/vi/' + self.videoID + '/' + availableSizes[step] + '.jpg';\n            }\n\n            if (self.type === 'vimeo') {\n                var request = new XMLHttpRequest();\n                request.open('GET', 'https://vimeo.com/api/v2/video/' + self.videoID + '.json', true);\n                request.onreadystatechange = function () {\n                    if (this.readyState === 4) {\n                        if (this.status >= 200 && this.status < 400) {\n                            // Success!\n                            var response = JSON.parse(this.responseText);\n                            self.videoImage = response[0].thumbnail_large;\n                            callback(self.videoImage);\n                        } else {\n                            // Error :(\n                        }\n                    }\n                };\n                request.send();\n                request = null;\n            }\n        }\n\n        // fallback to the old version.\n\n    }, {\n        key: 'getIframe',\n        value: function getIframe(callback) {\n            this.getVideo(callback);\n        }\n    }, {\n        key: 'getVideo',\n        value: function getVideo(callback) {\n            var self = this;\n\n            // return generated video block\n            if (self.$video) {\n                callback(self.$video);\n                return;\n            }\n\n            // generate new video block\n            self.onAPIready(function () {\n                var hiddenDiv = void 0;\n                if (!self.$video) {\n                    hiddenDiv = document.createElement('div');\n                    hiddenDiv.style.display = 'none';\n                }\n\n                // Youtube\n                if (self.type === 'youtube') {\n                    self.playerOptions = {};\n                    self.playerOptions.videoId = self.videoID;\n                    self.playerOptions.playerVars = {\n                        autohide: 1,\n                        rel: 0,\n                        autoplay: 0,\n                        // autoplay enable on mobile devices\n                        playsinline: 1\n                    };\n\n                    // hide controls\n                    if (!self.options.showContols) {\n                        self.playerOptions.playerVars.iv_load_policy = 3;\n                        self.playerOptions.playerVars.modestbranding = 1;\n                        self.playerOptions.playerVars.controls = 0;\n                        self.playerOptions.playerVars.showinfo = 0;\n                        self.playerOptions.playerVars.disablekb = 1;\n                    }\n\n                    // events\n                    var ytStarted = void 0;\n                    var ytProgressInterval = void 0;\n                    self.playerOptions.events = {\n                        onReady: function onReady(e) {\n                            // mute\n                            if (self.options.mute) {\n                                e.target.mute();\n                            } else if (self.options.volume) {\n                                e.target.setVolume(self.options.volume);\n                            }\n\n                            // autoplay\n                            if (self.options.autoplay) {\n                                self.play(self.options.startTime);\n                            }\n                            self.fire('ready', e);\n\n                            // volumechange\n                            setInterval(function () {\n                                self.getVolume(function (volume) {\n                                    if (self.options.volume !== volume) {\n                                        self.options.volume = volume;\n                                        self.fire('volumechange', e);\n                                    }\n                                });\n                            }, 150);\n                        },\n                        onStateChange: function onStateChange(e) {\n                            // loop\n                            if (self.options.loop && e.data === YT.PlayerState.ENDED) {\n                                self.play(self.options.startTime);\n                            }\n                            if (!ytStarted && e.data === YT.PlayerState.PLAYING) {\n                                ytStarted = 1;\n                                self.fire('started', e);\n                            }\n                            if (e.data === YT.PlayerState.PLAYING) {\n                                self.fire('play', e);\n                            }\n                            if (e.data === YT.PlayerState.PAUSED) {\n                                self.fire('pause', e);\n                            }\n                            if (e.data === YT.PlayerState.ENDED) {\n                                self.fire('ended', e);\n                            }\n\n                            // progress check\n                            if (e.data === YT.PlayerState.PLAYING) {\n                                ytProgressInterval = setInterval(function () {\n                                    self.fire('timeupdate', e);\n\n                                    // check for end of video and play again or stop\n                                    if (self.options.endTime && self.player.getCurrentTime() >= self.options.endTime) {\n                                        if (self.options.loop) {\n                                            self.play(self.options.startTime);\n                                        } else {\n                                            self.pause();\n                                        }\n                                    }\n                                }, 150);\n                            } else {\n                                clearInterval(ytProgressInterval);\n                            }\n                        }\n                    };\n\n                    var firstInit = !self.$video;\n                    if (firstInit) {\n                        var div = document.createElement('div');\n                        div.setAttribute('id', self.playerID);\n                        hiddenDiv.appendChild(div);\n                        document.body.appendChild(hiddenDiv);\n                    }\n                    self.player = self.player || new window.YT.Player(self.playerID, self.playerOptions);\n                    if (firstInit) {\n                        self.$video = document.getElementById(self.playerID);\n\n                        // get video width and height\n                        self.videoWidth = parseInt(self.$video.getAttribute('width'), 10) || 1280;\n                        self.videoHeight = parseInt(self.$video.getAttribute('height'), 10) || 720;\n                    }\n                }\n\n                // Vimeo\n                if (self.type === 'vimeo') {\n                    self.playerOptions = '';\n\n                    self.playerOptions += 'player_id=' + self.playerID;\n                    self.playerOptions += '&autopause=0';\n                    self.playerOptions += '&transparent=0';\n\n                    // hide controls\n                    if (!self.options.showContols) {\n                        self.playerOptions += '&badge=0&byline=0&portrait=0&title=0';\n                    }\n\n                    // autoplay\n                    self.playerOptions += '&autoplay=' + (self.options.autoplay ? '1' : '0');\n\n                    // loop\n                    self.playerOptions += '&loop=' + (self.options.loop ? 1 : 0);\n\n                    if (!self.$video) {\n                        self.$video = document.createElement('iframe');\n                        self.$video.setAttribute('id', self.playerID);\n                        self.$video.setAttribute('src', 'https://player.vimeo.com/video/' + self.videoID + '?' + self.playerOptions);\n                        self.$video.setAttribute('frameborder', '0');\n                        hiddenDiv.appendChild(self.$video);\n                        document.body.appendChild(hiddenDiv);\n                    }\n\n                    self.player = self.player || new Vimeo.Player(self.$video);\n\n                    // get video width and height\n                    self.player.getVideoWidth().then(function (width) {\n                        self.videoWidth = width || 1280;\n                    });\n                    self.player.getVideoHeight().then(function (height) {\n                        self.videoHeight = height || 720;\n                    });\n\n                    // set current time for autoplay\n                    if (self.options.startTime && self.options.autoplay) {\n                        self.player.setCurrentTime(self.options.startTime);\n                    }\n\n                    // mute\n                    if (self.options.mute) {\n                        self.player.setVolume(0);\n                    } else if (self.options.volume) {\n                        self.player.setVolume(self.options.volume);\n                    }\n\n                    var vmStarted = void 0;\n                    self.player.on('timeupdate', function (e) {\n                        if (!vmStarted) {\n                            self.fire('started', e);\n                            vmStarted = 1;\n                        }\n\n                        self.fire('timeupdate', e);\n\n                        // check for end of video and play again or stop\n                        if (self.options.endTime) {\n                            if (self.options.endTime && e.seconds >= self.options.endTime) {\n                                if (self.options.loop) {\n                                    self.play(self.options.startTime);\n                                } else {\n                                    self.pause();\n                                }\n                            }\n                        }\n                    });\n                    self.player.on('play', function (e) {\n                        self.fire('play', e);\n\n                        // check for the start time and start with it\n                        if (self.options.startTime && e.seconds === 0) {\n                            self.play(self.options.startTime);\n                        }\n                    });\n                    self.player.on('pause', function (e) {\n                        self.fire('pause', e);\n                    });\n                    self.player.on('ended', function (e) {\n                        self.fire('ended', e);\n                    });\n                    self.player.on('loaded', function (e) {\n                        self.fire('ready', e);\n                    });\n                    self.player.on('volumechange', function (e) {\n                        self.fire('volumechange', e);\n                    });\n                }\n\n                // Local\n                function addSourceToLocal(element, src, type) {\n                    var source = document.createElement('source');\n                    source.src = src;\n                    source.type = type;\n                    element.appendChild(source);\n                }\n                if (self.type === 'local') {\n                    if (!self.$video) {\n                        self.$video = document.createElement('video');\n\n                        // show controls\n                        if (self.options.showContols) {\n                            self.$video.controls = true;\n                        }\n\n                        // mute\n                        if (self.options.mute) {\n                            self.$video.muted = true;\n                        } else if (self.$video.volume) {\n                            self.$video.volume = self.options.volume / 100;\n                        }\n\n                        // loop\n                        if (self.options.loop) {\n                            self.$video.loop = true;\n                        }\n\n                        // autoplay enable on mobile devices\n                        self.$video.setAttribute('playsinline', '');\n                        self.$video.setAttribute('webkit-playsinline', '');\n\n                        self.$video.setAttribute('id', self.playerID);\n                        hiddenDiv.appendChild(self.$video);\n                        document.body.appendChild(hiddenDiv);\n\n                        Object.keys(self.videoID).forEach(function (key) {\n                            addSourceToLocal(self.$video, self.videoID[key], 'video/' + key);\n                        });\n                    }\n\n                    self.player = self.player || self.$video;\n\n                    var locStarted = void 0;\n                    self.player.addEventListener('playing', function (e) {\n                        if (!locStarted) {\n                            self.fire('started', e);\n                        }\n                        locStarted = 1;\n                    });\n                    self.player.addEventListener('timeupdate', function (e) {\n                        self.fire('timeupdate', e);\n\n                        // check for end of video and play again or stop\n                        if (self.options.endTime) {\n                            if (self.options.endTime && this.currentTime >= self.options.endTime) {\n                                if (self.options.loop) {\n                                    self.play(self.options.startTime);\n                                } else {\n                                    self.pause();\n                                }\n                            }\n                        }\n                    });\n                    self.player.addEventListener('play', function (e) {\n                        self.fire('play', e);\n                    });\n                    self.player.addEventListener('pause', function (e) {\n                        self.fire('pause', e);\n                    });\n                    self.player.addEventListener('ended', function (e) {\n                        self.fire('ended', e);\n                    });\n                    self.player.addEventListener('loadedmetadata', function () {\n                        // get video width and height\n                        self.videoWidth = this.videoWidth || 1280;\n                        self.videoHeight = this.videoHeight || 720;\n\n                        self.fire('ready');\n\n                        // autoplay\n                        if (self.options.autoplay) {\n                            self.play(self.options.startTime);\n                        }\n                    });\n                    self.player.addEventListener('volumechange', function (e) {\n                        self.getVolume(function (volume) {\n                            self.options.volume = volume;\n                        });\n                        self.fire('volumechange', e);\n                    });\n                }\n\n                callback(self.$video);\n            });\n        }\n    }, {\n        key: 'init',\n        value: function init() {\n            var self = this;\n\n            self.playerID = 'VideoWorker-' + self.ID;\n        }\n    }, {\n        key: 'loadAPI',\n        value: function loadAPI() {\n            var self = this;\n\n            if (YoutubeAPIadded && VimeoAPIadded) {\n                return;\n            }\n\n            var src = '';\n\n            // load Youtube API\n            if (self.type === 'youtube' && !YoutubeAPIadded) {\n                YoutubeAPIadded = 1;\n                src = 'https://www.youtube.com/iframe_api';\n            }\n\n            // load Vimeo API\n            if (self.type === 'vimeo' && !VimeoAPIadded) {\n                VimeoAPIadded = 1;\n                src = 'https://player.vimeo.com/api/player.js';\n            }\n\n            if (!src) {\n                return;\n            }\n\n            // add script in head section\n            var tag = document.createElement('script');\n            var head = document.getElementsByTagName('head')[0];\n            tag.src = src;\n\n            head.appendChild(tag);\n\n            head = null;\n            tag = null;\n        }\n    }, {\n        key: 'onAPIready',\n        value: function onAPIready(callback) {\n            var self = this;\n\n            // Youtube\n            if (self.type === 'youtube') {\n                // Listen for global YT player callback\n                if ((typeof YT === 'undefined' || YT.loaded === 0) && !loadingYoutubePlayer) {\n                    // Prevents Ready event from being called twice\n                    loadingYoutubePlayer = 1;\n\n                    // Creates deferred so, other players know when to wait.\n                    window.onYouTubeIframeAPIReady = function () {\n                        window.onYouTubeIframeAPIReady = null;\n                        loadingYoutubeDefer.resolve('done');\n                        callback();\n                    };\n                } else if ((typeof YT === 'undefined' ? 'undefined' : _typeof(YT)) === 'object' && YT.loaded === 1) {\n                    callback();\n                } else {\n                    loadingYoutubeDefer.done(function () {\n                        callback();\n                    });\n                }\n            }\n\n            // Vimeo\n            if (self.type === 'vimeo') {\n                if (typeof Vimeo === 'undefined' && !loadingVimeoPlayer) {\n                    loadingVimeoPlayer = 1;\n                    var vimeoInterval = setInterval(function () {\n                        if (typeof Vimeo !== 'undefined') {\n                            clearInterval(vimeoInterval);\n                            loadingVimeoDefer.resolve('done');\n                            callback();\n                        }\n                    }, 20);\n                } else if (typeof Vimeo !== 'undefined') {\n                    callback();\n                } else {\n                    loadingVimeoDefer.done(function () {\n                        callback();\n                    });\n                }\n            }\n\n            // Local\n            if (self.type === 'local') {\n                callback();\n            }\n        }\n    }]);\n\n    return VideoWorker;\n}();\n\nexports.default = VideoWorker;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = jarallaxVideo;\n\nvar _videoWorker = __webpack_require__(8);\n\nvar _videoWorker2 = _interopRequireDefault(_videoWorker);\n\nvar _global = __webpack_require__(4);\n\nvar _global2 = _interopRequireDefault(_global);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction jarallaxVideo() {\n    var jarallax = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _global2.default.jarallax;\n\n    if (typeof jarallax === 'undefined') {\n        return;\n    }\n\n    var Jarallax = jarallax.constructor;\n\n    // append video after init Jarallax\n    var defInit = Jarallax.prototype.init;\n    Jarallax.prototype.init = function () {\n        var self = this;\n\n        defInit.apply(self);\n\n        if (self.video && !self.options.disableVideo()) {\n            self.video.getVideo(function (video) {\n                var $parent = video.parentNode;\n                self.css(video, {\n                    position: self.image.position,\n                    top: '0px',\n                    left: '0px',\n                    right: '0px',\n                    bottom: '0px',\n                    width: '100%',\n                    height: '100%',\n                    maxWidth: 'none',\n                    maxHeight: 'none',\n                    margin: 0,\n                    zIndex: -1\n                });\n                self.$video = video;\n                self.image.$container.appendChild(video);\n\n                // remove parent video element (created by VideoWorker)\n                $parent.parentNode.removeChild($parent);\n            });\n        }\n    };\n\n    // cover video\n    var defCoverImage = Jarallax.prototype.coverImage;\n    Jarallax.prototype.coverImage = function () {\n        var self = this;\n        var imageData = defCoverImage.apply(self);\n        var node = self.image.$item ? self.image.$item.nodeName : false;\n\n        if (imageData && self.video && node && (node === 'IFRAME' || node === 'VIDEO')) {\n            var h = imageData.image.height;\n            var w = h * self.image.width / self.image.height;\n            var ml = (imageData.container.width - w) / 2;\n            var mt = imageData.image.marginTop;\n\n            if (imageData.container.width > w) {\n                w = imageData.container.width;\n                h = w * self.image.height / self.image.width;\n                ml = 0;\n                mt += (imageData.image.height - h) / 2;\n            }\n\n            // add video height over than need to hide controls\n            if (node === 'IFRAME') {\n                h += 400;\n                mt -= 200;\n            }\n\n            self.css(self.$video, {\n                width: w + 'px',\n                marginLeft: ml + 'px',\n                height: h + 'px',\n                marginTop: mt + 'px'\n            });\n        }\n\n        return imageData;\n    };\n\n    // init video\n    var defInitImg = Jarallax.prototype.initImg;\n    Jarallax.prototype.initImg = function () {\n        var self = this;\n        var defaultResult = defInitImg.apply(self);\n\n        if (!self.options.videoSrc) {\n            self.options.videoSrc = self.$item.getAttribute('data-jarallax-video') || null;\n        }\n\n        if (self.options.videoSrc) {\n            self.defaultInitImgResult = defaultResult;\n            return true;\n        }\n\n        return defaultResult;\n    };\n\n    var defCanInitParallax = Jarallax.prototype.canInitParallax;\n    Jarallax.prototype.canInitParallax = function () {\n        var self = this;\n        var defaultResult = defCanInitParallax.apply(self);\n\n        if (!self.options.videoSrc) {\n            return defaultResult;\n        }\n\n        var video = new _videoWorker2.default(self.options.videoSrc, {\n            autoplay: true,\n            loop: true,\n            showContols: false,\n            startTime: self.options.videoStartTime || 0,\n            endTime: self.options.videoEndTime || 0,\n            mute: self.options.videoVolume ? 0 : 1,\n            volume: self.options.videoVolume || 0\n        });\n\n        if (video.isValid()) {\n            // if parallax will not be inited, we can add thumbnail on background.\n            if (!defaultResult) {\n                if (!self.defaultInitImgResult) {\n                    video.getImageURL(function (url) {\n                        // save default user styles\n                        var curStyle = self.$item.getAttribute('style');\n                        if (curStyle) {\n                            self.$item.setAttribute('data-jarallax-original-styles', curStyle);\n                        }\n\n                        // set new background\n                        self.css(self.$item, {\n                            'background-image': 'url(\"' + url + '\")',\n                            'background-position': 'center',\n                            'background-size': 'cover'\n                        });\n                    });\n                }\n\n                // init video\n            } else {\n                video.on('ready', function () {\n                    if (self.options.videoPlayOnlyVisible) {\n                        var oldOnScroll = self.onScroll;\n                        self.onScroll = function () {\n                            oldOnScroll.apply(self);\n                            if (self.isVisible()) {\n                                video.play();\n                            } else {\n                                video.pause();\n                            }\n                        };\n                    } else {\n                        video.play();\n                    }\n                });\n\n                video.on('started', function () {\n                    self.image.$default_item = self.image.$item;\n                    self.image.$item = self.$video;\n\n                    // set video width and height\n                    self.image.width = self.video.videoWidth || 1280;\n                    self.image.height = self.video.videoHeight || 720;\n                    self.options.imgWidth = self.image.width;\n                    self.options.imgHeight = self.image.height;\n                    self.coverImage();\n                    self.clipContainer();\n                    self.onScroll();\n\n                    // hide image\n                    if (self.image.$default_item) {\n                        self.image.$default_item.style.display = 'none';\n                    }\n                });\n\n                self.video = video;\n\n                // set image if not exists\n                if (!self.defaultInitImgResult) {\n                    if (video.type !== 'local') {\n                        video.getImageURL(function (url) {\n                            self.image.src = url;\n                            self.init();\n                        });\n\n                        return false;\n                    }\n\n                    // set empty image on local video if not defined\n                    self.image.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n                    return true;\n                }\n            }\n        }\n\n        return defaultResult;\n    };\n\n    // Destroy video parallax\n    var defDestroy = Jarallax.prototype.destroy;\n    Jarallax.prototype.destroy = function () {\n        var self = this;\n\n        if (self.image.$default_item) {\n            self.image.$item = self.image.$default_item;\n            delete self.image.$default_item;\n        }\n\n        defDestroy.apply(self);\n    };\n}\n\n/***/ })\n/******/ ]);","/*! npm.im/object-fit-images 3.2.4 */\nvar objectFitImages = (function () {\n'use strict';\n\nvar OFI = 'bfred-it:object-fit-images';\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-.\\w\\s%]+)/g;\nvar testImg = typeof Image === 'undefined' ? {style: {'object-position': 1}} : new Image();\nvar supportsObjectFit = 'object-fit' in testImg.style;\nvar supportsObjectPosition = 'object-position' in testImg.style;\nvar supportsOFI = 'background-size' in testImg.style;\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\nvar nativeGetAttribute = testImg.getAttribute;\nvar nativeSetAttribute = testImg.setAttribute;\nvar autoModeEnabled = false;\n\nfunction createPlaceholder(w, h) {\n\treturn (\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" + w + \"' height='\" + h + \"'%3E%3C/svg%3E\");\n}\n\nfunction polyfillCurrentSrc(el) {\n\tif (el.srcset && !supportsCurrentSrc && window.picturefill) {\n\t\tvar pf = window.picturefill._;\n\t\t// parse srcset with picturefill where currentSrc isn't available\n\t\tif (!el[pf.ns] || !el[pf.ns].evaled) {\n\t\t\t// force synchronous srcset parsing\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\tif (!el[pf.ns].curSrc) {\n\t\t\t// force picturefill to parse srcset\n\t\t\tel[pf.ns].supported = false;\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\t// retrieve parsed currentSrc, if any\n\t\tel.currentSrc = el[pf.ns].curSrc || el.src;\n\t}\n}\n\nfunction getStyle(el) {\n\tvar style = getComputedStyle(el).fontFamily;\n\tvar parsed;\n\tvar props = {};\n\twhile ((parsed = propRegex.exec(style)) !== null) {\n\t\tprops[parsed[1]] = parsed[2];\n\t}\n\treturn props;\n}\n\nfunction setPlaceholder(img, width, height) {\n\t// Default: fill width, no height\n\tvar placeholder = createPlaceholder(width || 1, height || 0);\n\n\t// Only set placeholder if it's different\n\tif (nativeGetAttribute.call(img, 'src') !== placeholder) {\n\t\tnativeSetAttribute.call(img, 'src', placeholder);\n\t}\n}\n\nfunction onImageReady(img, callback) {\n\t// naturalWidth is only available when the image headers are loaded,\n\t// this loop will poll it every 100ms.\n\tif (img.naturalWidth) {\n\t\tcallback(img);\n\t} else {\n\t\tsetTimeout(onImageReady, 100, img, callback);\n\t}\n}\n\nfunction fixOne(el) {\n\tvar style = getStyle(el);\n\tvar ofi = el[OFI];\n\tstyle['object-fit'] = style['object-fit'] || 'fill'; // default value\n\n\t// Avoid running where unnecessary, unless OFI had already done its deed\n\tif (!ofi.img) {\n\t\t// fill is the default behavior so no action is necessary\n\t\tif (style['object-fit'] === 'fill') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Where object-fit is supported and object-position isn't (Safari < 10)\n\t\tif (\n\t\t\t!ofi.skipTest && // unless user wants to apply regardless of browser support\n\t\t\tsupportsObjectFit && // if browser already supports object-fit\n\t\t\t!style['object-position'] // unless object-position is used\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// keep a clone in memory while resetting the original to a blank\n\tif (!ofi.img) {\n\t\tofi.img = new Image(el.width, el.height);\n\t\tofi.img.srcset = nativeGetAttribute.call(el, \"data-ofi-srcset\") || el.srcset;\n\t\tofi.img.src = nativeGetAttribute.call(el, \"data-ofi-src\") || el.src;\n\n\t\t// preserve for any future cloneNode calls\n\t\t// https://github.com/bfred-it/object-fit-images/issues/53\n\t\tnativeSetAttribute.call(el, \"data-ofi-src\", el.src);\n\t\tif (el.srcset) {\n\t\t\tnativeSetAttribute.call(el, \"data-ofi-srcset\", el.srcset);\n\t\t}\n\n\t\tsetPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height);\n\n\t\t// remove srcset because it overrides src\n\t\tif (el.srcset) {\n\t\t\tel.srcset = '';\n\t\t}\n\t\ttry {\n\t\t\tkeepSrcUsable(el);\n\t\t} catch (err) {\n\t\t\tif (window.console) {\n\t\t\t\tconsole.warn('https://bit.ly/ofi-old-browser');\n\t\t\t}\n\t\t}\n\t}\n\n\tpolyfillCurrentSrc(ofi.img);\n\n\tel.style.backgroundImage = \"url(\\\"\" + ((ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"')) + \"\\\")\";\n\tel.style.backgroundPosition = style['object-position'] || 'center';\n\tel.style.backgroundRepeat = 'no-repeat';\n\tel.style.backgroundOrigin = 'content-box';\n\n\tif (/scale-down/.test(style['object-fit'])) {\n\t\tonImageReady(ofi.img, function () {\n\t\t\tif (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {\n\t\t\t\tel.style.backgroundSize = 'contain';\n\t\t\t} else {\n\t\t\t\tel.style.backgroundSize = 'auto';\n\t\t\t}\n\t\t});\n\t} else {\n\t\tel.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\n\t}\n\n\tonImageReady(ofi.img, function (img) {\n\t\tsetPlaceholder(el, img.naturalWidth, img.naturalHeight);\n\t});\n}\n\nfunction keepSrcUsable(el) {\n\tvar descriptors = {\n\t\tget: function get(prop) {\n\t\t\treturn el[OFI].img[prop ? prop : 'src'];\n\t\t},\n\t\tset: function set(value, prop) {\n\t\t\tel[OFI].img[prop ? prop : 'src'] = value;\n\t\t\tnativeSetAttribute.call(el, (\"data-ofi-\" + prop), value); // preserve for any future cloneNode\n\t\t\tfixOne(el);\n\t\t\treturn value;\n\t\t}\n\t};\n\tObject.defineProperty(el, 'src', descriptors);\n\tObject.defineProperty(el, 'currentSrc', {\n\t\tget: function () { return descriptors.get('currentSrc'); }\n\t});\n\tObject.defineProperty(el, 'srcset', {\n\t\tget: function () { return descriptors.get('srcset'); },\n\t\tset: function (ss) { return descriptors.set(ss, 'srcset'); }\n\t});\n}\n\nfunction hijackAttributes() {\n\tfunction getOfiImageMaybe(el, name) {\n\t\treturn el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;\n\t}\n\tif (!supportsObjectPosition) {\n\t\tHTMLImageElement.prototype.getAttribute = function (name) {\n\t\t\treturn nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\n\t\t};\n\n\t\tHTMLImageElement.prototype.setAttribute = function (name, value) {\n\t\t\treturn nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));\n\t\t};\n\t}\n}\n\nfunction fix(imgs, opts) {\n\tvar startAutoMode = !autoModeEnabled && !imgs;\n\topts = opts || {};\n\timgs = imgs || 'img';\n\n\tif ((supportsObjectPosition && !opts.skipTest) || !supportsOFI) {\n\t\treturn false;\n\t}\n\n\t// use imgs as a selector or just select all images\n\tif (imgs === 'img') {\n\t\timgs = document.getElementsByTagName('img');\n\t} else if (typeof imgs === 'string') {\n\t\timgs = document.querySelectorAll(imgs);\n\t} else if (!('length' in imgs)) {\n\t\timgs = [imgs];\n\t}\n\n\t// apply fix to all\n\tfor (var i = 0; i < imgs.length; i++) {\n\t\timgs[i][OFI] = imgs[i][OFI] || {\n\t\t\tskipTest: opts.skipTest\n\t\t};\n\t\tfixOne(imgs[i]);\n\t}\n\n\tif (startAutoMode) {\n\t\tdocument.body.addEventListener('load', function (e) {\n\t\t\tif (e.target.tagName === 'IMG') {\n\t\t\t\tfix(e.target, {\n\t\t\t\t\tskipTest: opts.skipTest\n\t\t\t\t});\n\t\t\t}\n\t\t}, true);\n\t\tautoModeEnabled = true;\n\t\timgs = 'img'; // reset to a generic selector for watchMQ\n\t}\n\n\t// if requested, watch media queries for object-fit change\n\tif (opts.watchMQ) {\n\t\twindow.addEventListener('resize', fix.bind(null, imgs, {\n\t\t\tskipTest: opts.skipTest\n\t\t}));\n\t}\n}\n\nfix.supportsObjectFit = supportsObjectFit;\nfix.supportsObjectPosition = supportsObjectPosition;\n\nhijackAttributes();\n\nreturn fix;\n\n}());\n","/*!\n * ClockPicker v0.0.7 (http://weareoutman.github.io/clockpicker/)\n * Copyright 2014 Wang Shenwei.\n * Licensed under MIT (https://github.com/weareoutman/clockpicker/blob/gh-pages/LICENSE)\n *\n * Further modified\n * Copyright 2015 Ching Yaw Hao.\n */\n\n;(function(){\n\tvar $ = window.jQuery,\n\t\t\t$win = $(window),\n\t\t\t$doc = $(document);\n\n\t// Can I use inline svg ?\n\tvar svgNS = 'http://www.w3.org/2000/svg',\n\t\t  svgSupported = 'SVGAngle' in window && (function() {\n\t\t\t  var supported,\n\t\t\t\tel = document.createElement('div');\n\t\t\t\tel.innerHTML = '<svg/>';\n\t\t\t\tsupported = (el.firstChild && el.firstChild.namespaceURI) == svgNS;\n\t\t\t\tel.innerHTML = '';\n\t\t\t\treturn supported;\n\t\t\t})();\n\n\t// Can I use transition ?\n\tvar transitionSupported = (function() {\n\t\tvar style = document.createElement('div').style;\n\t\treturn 'transition' in style ||\n\t\t\t\t\t 'WebkitTransition' in style ||\n\t\t\t\t   'MozTransition' in style ||\n\t\t\t\t\t 'msTransition' in style ||\n\t\t\t\t\t 'OTransition' in style;\n\t})();\n\n\t// Listen touch events in touch screen device, instead of mouse events in desktop.\n\tvar touchSupported = 'ontouchstart' in window,\n\t\t\tmousedownEvent = 'mousedown' + ( touchSupported ? ' touchstart' : ''),\n\t\t\tmousemoveEvent = 'mousemove.clockpicker' + ( touchSupported ? ' touchmove.clockpicker' : ''),\n\t\t\tmouseupEvent = 'mouseup.clockpicker' + ( touchSupported ? ' touchend.clockpicker' : '');\n\n\t// Vibrate the device if supported\n\tvar vibrate = navigator.vibrate ? 'vibrate' : navigator.webkitVibrate ? 'webkitVibrate' : null;\n\n\tfunction createSvgElement(name) {\n\t\treturn document.createElementNS(svgNS, name);\n\t}\n\n  function debounce(func, wait, immediate) {\n    var timeout;\n    return function() {\n        var context = this, args = arguments;\n        var later = function() {\n            timeout = null;\n            if (!immediate) func.apply(context, args);\n        };\n        var callNow = immediate && !timeout;\n        clearTimeout(timeout);\n        timeout = setTimeout(later, wait);\n        if (callNow) func.apply(context, args);\n    };\n}\n\n\tfunction leadingZero(num) {\n\t\treturn (num < 10 ? '0' : '') + num;\n\t}\n\n\t// Get a unique id\n\tvar idCounter = 0;\n\tfunction uniqueId(prefix) {\n\t\tvar id = ++idCounter + '';\n\t\treturn prefix ? prefix + id : id;\n\t}\n\n\t// Clock size\n\tvar dialRadius = 135,\n\t\t\touterRadius = 110,\n\t\t\t// innerRadius = 80 on 12 hour clock\n\t\t\tinnerRadius = 80,\n\t\t\ttickRadius = 20,\n\t\t\tdiameter = dialRadius * 2,\n\t\t\tduration = transitionSupported ? 350 : 1;\n\n\t// Popover template\n\tvar tpl = [\n\t\t'<div class=\"clockpicker picker\">',\n\t\t\t'<div class=\"picker__holder\">',\n\t\t\t\t'<div class=\"picker__frame\">',\n\t\t\t\t\t'<div class=\"picker__wrap\">',\n\t\t\t\t\t\t'<div class=\"picker__box\">',\n\t\t\t\t\t\t\t'<div class=\"picker__date-display\">',\n\t\t\t\t\t\t\t\t'<div class=\"clockpicker-display\">',\n\t\t\t\t\t\t\t\t\t'<div class=\"clockpicker-display-column\">',\n\t\t\t\t\t\t\t\t\t\t'<span class=\"clockpicker-span-hours text-primary\"></span>',\n\t\t\t\t\t\t\t\t\t\t':',\n\t\t\t\t\t\t\t\t\t\t'<span class=\"clockpicker-span-minutes\"></span>',\n\t\t\t\t\t\t\t\t\t'</div>',\n\t\t\t\t\t\t\t\t\t'<div class=\"clockpicker-display-column clockpicker-display-am-pm\">',\n\t\t\t\t\t\t\t\t\t\t'<div class=\"clockpicker-span-am-pm\"></div>',\n\t\t\t\t\t\t\t\t\t'</div>',\n\t\t\t\t\t\t\t\t'</div>',\n\t\t\t\t\t\t\t'</div>',\n\t\t\t\t\t\t\t'<div class=\"picker__calendar-container\">',\n\t\t\t\t\t\t\t\t'<div class=\"clockpicker-plate\">',\n\t\t\t\t\t\t\t\t\t'<div class=\"clockpicker-canvas\"></div>',\n\t\t\t\t\t\t\t\t\t'<div class=\"clockpicker-dial clockpicker-hours\"></div>',\n\t\t\t\t\t\t\t\t\t'<div class=\"clockpicker-dial clockpicker-minutes clockpicker-dial-out\"></div>',\n\t\t\t\t\t\t\t\t'</div>',\n\t\t\t\t\t\t\t\t'<div class=\"clockpicker-am-pm-block\">',\n\t\t\t\t\t\t\t\t'</div>',\n\t\t\t\t\t\t\t'</div>',\n\t\t\t\t\t\t\t'<div class=\"picker__footer\">',\n\t\t\t\t\t\t\t'</div>',\n\t\t\t\t\t\t'</div>',\n\t\t\t\t\t'</div>',\n\t\t\t\t'</div>',\n\t\t\t'</div>',\n\t\t'</div>'\n\t].join('');\n\n\t// ClockPicker\n\tfunction ClockPicker(element, options) {\n\t\tvar popover = $(tpl),\n\t\t\t\tplate = popover.find('.clockpicker-plate'),\n\t\t\t\tholder = popover.find('.picker__holder'),\n\t\t\t\thoursView = popover.find('.clockpicker-hours'),\n\t\t\t\tminutesView = popover.find('.clockpicker-minutes'),\n\t\t\t\tamPmBlock = popover.find('.clockpicker-am-pm-block'),\n\t\t\t\tisInput = element.prop('tagName') === 'INPUT',\n        input = isInput ? element : element.find('input'),\n        isHTML5 = input.prop('type') === 'time',\n\t\t\t\tlabel = $(\"label[for=\" + input.attr(\"id\") + \"]\"),\n\t\t\t\tself = this,\n\t\t\t\ttimer;\n\n\t\tthis.id = uniqueId('cp');\n\t\tthis.element = element;\n\t\tthis.holder = holder;\n\t\tthis.options = options;\n\t\tthis.isAppended = false;\n\t\tthis.isShown = false;\n\t\tthis.currentView = 'hours';\n\t\tthis.isInput = isInput;\n\t\tthis.input = input;\n\t\tthis.label = label;\n\t\tthis.popover = popover;\n\t\tthis.plate = plate;\n\t\tthis.hoursView = hoursView;\n\t\tthis.minutesView = minutesView;\n\t\tthis.amPmBlock = amPmBlock;\n\t\tthis.spanHours = popover.find('.clockpicker-span-hours');\n\t\tthis.spanMinutes = popover.find('.clockpicker-span-minutes');\n\t\tthis.spanAmPm = popover.find('.clockpicker-span-am-pm');\n\t\tthis.footer = popover.find('.picker__footer');\n\t\tthis.amOrPm = \"\";\n\t\tthis.isTwelvehour = options.twelvehour;\n\t\tthis.minTime = 0;\n    this.maxTime = 0;\n    this.minMinutes = 0;\n    this.maxMinutes = 59;\n    this.minHours = 0;\n    this.maxHours = 23;\n    this.isInvalidTimeScope = false;\n\n    const parseTimeOptions = (scope) => {\n      const time = scope + 'Time';\n      this[time] = options[scope].split(':');\n      \n      // user can set using am/pm. Convert 12h clock settings to 24h clock settings \n      if (this[time][1].length === 4) {\n        const period = this[time][1].replace(/\\d+/g, '').toUpperCase();\n        this[time][1] = this[time][1].replace(/\\D+/g, '');\n        if (period === 'PM') \n          this[time][0] = parseInt(this[time][0]) + 12\n      }\n      \n      if (this[time].length !== 2)\n        this[time] = null;\n      else {\n        for (let i = 0; i < this[time].length; i++) {\n          this[time][i] = +this[time][i];\n        }\n      }\n    }\n\n    // Parse minTime Option\n    if (options.min) {\n      parseTimeOptions('min');\n      this.minMinutes = this.minTime[1];\n      this.minHours = this.minTime[0];\n    }\n\n    // Parse maxTime Option\n    if (options.max) {\n      parseTimeOptions('max');\n\n      // Ensure that max is after min, if not remove the max it's invalid\n      if ((this.minHours > this.maxHours) || (this.minHours === this.maxHours && this.minMinutes >= this.maxMinutes)) {\n        this.maxTime = 0;\n      } else {\n        this.maxMinutes = this.maxTime[1];\n        this.maxHours = this.maxTime[0];\n      }\n    }\n\n\t\t// Setup for for 12 hour clock if option is selected\n\t\tif (options.twelvehour) {\n\t\t\tvar  amPmButtonsTemplate = [\n\t\t\t\t'<div class=\"clockpicker-am-pm-block\">',\n\t\t\t\t\t'<button type=\"button\" class=\"btn-floating btn-flat clockpicker-button clockpicker-am-button\">',\n\t\t\t\t\t\t'AM',\n\t\t\t\t\t'</button>',\n\t\t\t\t\t'<button type=\"button\" class=\"btn-floating btn-flat clockpicker-button clockpicker-pm-button\">',\n\t\t\t\t\t\t'PM',\n\t\t\t\t\t'</button>',\n\t\t\t\t'</div>'\n\t\t\t].join('');\n\n\t\t\tvar amPmButtons = $(amPmButtonsTemplate);\n      \n      const togglePeriod = (period) => {\n          let previsiousPeriod = 'pm';\n\n          if (period === 'PM')\n            previsiousPeriod = 'am';\n  \n          self.amOrPm = period;\n          self.amPmBlock.children(`.${previsiousPeriod}-button`).removeClass('active');\n          self.amPmBlock.children(`.${period.toLowerCase()}-button`).addClass('active');\n          self.spanAmPm.empty().append(period);\n\n          this.disableOutOfRangeElements();\n\t\t\t}\n\n\t\t\tif (!options.ampmclickable) {\n\t\t\t\t$('<button type=\"button\" class=\"btn-floating btn-flat clockpicker-button am-button\" tabindex=\"1\">' + \"AM\" + '</button>').on(\"click\", function() {\n          togglePeriod('AM');\n\t\t\t\t}).appendTo(this.amPmBlock);\n\t\t\t\t$('<button type=\"button\" class=\"btn-floating btn-flat clockpicker-button pm-button\" tabindex=\"2\">' + \"PM\" + '</button>').on(\"click\", function() {\n          togglePeriod('PM');\n\t\t\t\t}).appendTo(this.amPmBlock);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.spanAmPm.empty();\n\t\t\t\t$('<div id=\"click-am\">AM</div>').on(\"click\", function() {\n\t\t\t\t\tself.spanAmPm.children('#click-am').addClass(\"text-primary\");\n\t\t\t\t\tself.spanAmPm.children('#click-pm').removeClass(\"text-primary\");\n\t\t\t\t\tself.amOrPm = \"AM\";\n\t\t\t\t}).appendTo(this.spanAmPm);\n\t\t\t\t$('<div id=\"click-pm\">PM</div>').on(\"click\", function() {\n\t\t\t\t\tself.spanAmPm.children('#click-pm').addClass(\"text-primary\");\n\t\t\t\t\tself.spanAmPm.children('#click-am').removeClass(\"text-primary\");\n\t\t\t\t\tself.amOrPm = 'PM';\n\t\t\t\t}).appendTo(this.spanAmPm);\n      }\n    }\n    \n\n\t\tif(options.darktheme)\n\t\t\tpopover.addClass('darktheme');\n\n\t\t\t// If autoclose is not setted, append a button\n\t\t$('<button type=\"button\" class=\"btn btn-flat clockpicker-button done-button\" tabindex=\"' + (options.twelvehour? '3' : '1') + '\">' + options.donetext + '</button>').click($.proxy(this.done, this)).appendTo(this.footer);\n\n\t\t$('<button type=\"button\" class=\"btn btn-flat clockpicker-button clear-button\" tabindex=\"' + (options.twelvehour? '4' : '2') + '\">' + options.cleartext + '</button>').click($.proxy(this.clearInput, this)).appendTo(this.footer);\n\t\tthis.spanHours.click($.proxy(this.toggleView, this, 'hours'));\n\t\tthis.spanMinutes.click($.proxy(this.toggleView, this, 'minutes'));\n\n\t\t// Show or toggle\n\t\tinput.on('click.clockpicker', debounce( $.proxy(this.show, this), 100));\n\n\t\t// Build ticks\n\t\tvar tickTpl = $('<div class=\"clockpicker-tick\"></div>'),\n\t\t\t\ti, tick, radian, radius;\n\n\t\t// Hours view\n    if (options.twelvehour) {\n      for (i = 0; i < 12; i += options.hourstep) {\n        tick = tickTpl.clone();\n        radian = i / 6 * Math.PI;\n        radius = outerRadius;\n        tick.css('font-size', '140%');\n        tick.css({\n          left: dialRadius + Math.sin(radian) * radius - tickRadius,\n          top: dialRadius - Math.cos(radian) * radius - tickRadius\n        });\n        tick.html(i === 0 ? 12 : i);\n        hoursView.append(tick);\n        tick.on(mousedownEvent, mousedown);\n        this.disableOutOfRangeElements();\n      }\n\t\t} else {\n      for (i = 0; i < 24; i += options.hourstep) {\n        tick = tickTpl.clone();\n        radian = i / 6 * Math.PI;\n        var inner = i > 0 && i < 13;\n        radius = inner ? innerRadius : outerRadius;\n        tick.css({\n          left: dialRadius + Math.sin(radian) * radius - tickRadius,\n          top: dialRadius - Math.cos(radian) * radius - tickRadius\n        });\n        if (inner) {\n          tick.css('font-size', '120%');\n        }\n        tick.html(i === 0 ? '00' : i);\n        hoursView.append(tick);\n        tick.on(mousedownEvent, mousedown);\n        this.disableOutOfRangeElements();\n      }\n\t\t}\n\n    // Minutes view\n    var incrementValue = Math.max(options.minutestep, 5);\n    for (i = 0; i < 60; i += incrementValue) {\n      for (i = 0; i < 60; i += 5) {\n        tick = tickTpl.clone();\n        radian = i / 30 * Math.PI;\n        tick.css({\n          left: dialRadius + Math.sin(radian) * outerRadius - tickRadius,\n          top: dialRadius - Math.cos(radian) * outerRadius - tickRadius\n        });\n        tick.css('font-size', '140%');\n        tick.html(leadingZero(i));\n        minutesView.append(tick);\n        tick.on(mousedownEvent, mousedown);\n      }\n    }\n\t\t\n\t\t// Clicking on minutes view space\n\t\tplate.on(mousedownEvent, function(e) {\n\t\t\tif ($(e.target).closest('.clockpicker-tick').length === 0)\n\t\t\t\tmousedown(e, true);\n\t\t});\n\n\t\t// Mousedown or touchstart\n\t\tfunction mousedown(e, space) {\n\t\t\tvar offset = plate.offset(),\n\t\t\t\t\tisTouch = /^touch/.test(e.type),\n\t\t\t\t\tx0 = offset.left + dialRadius,\n\t\t\t\t\ty0 = offset.top + dialRadius,\n\t\t\t\t\tdx = (isTouch ? e.originalEvent.touches[0] : e).pageX - x0,\n\t\t\t\t\tdy = (isTouch ? e.originalEvent.touches[0] : e).pageY - y0,\n\t\t\t\t\tz = Math.sqrt(dx * dx + dy * dy),\n\t\t\t\t\tmoved = false;\n\n\t\t\t// When clicking on minutes view space, check the mouse position\n\t\t\tif (space && (z < outerRadius - tickRadius || z > outerRadius + tickRadius))\n\t\t\t\treturn;\n\t\t\te.preventDefault();\n\n\t\t\t// Set cursor style of body after 200ms\n\t\t\tvar movingTimer = setTimeout(function(){\n\t\t\t\tself.popover.addClass('clockpicker-moving');\n\t\t\t}, 200);\n\n\t\t\t// Place the canvas to top\n\t\t\tif (svgSupported)\n\t\t\t\tplate.append(self.canvas);\n\n\t\t\t// Clock\n\t\t\tself.setHand(dx, dy, !space, true);\n\n\t\t\t// Mousemove on document\n\t\t\t$doc.off(mousemoveEvent).on(mousemoveEvent, function(e){\n\t\t\t\te.preventDefault();\n\t\t\t\tvar isTouch = /^touch/.test(e.type),\n\t\t\t\t\t\tx = (isTouch ? e.originalEvent.touches[0] : e).pageX - x0,\n\t\t\t\t\t\ty = (isTouch ? e.originalEvent.touches[0] : e).pageY - y0;\n\t\t\t\tif (! moved && x === dx && y === dy)\n\t\t\t\t\t// Clicking in chrome on windows will trigger a mousemove event\n\t\t\t\t\treturn;\n\t\t\t\tmoved = true;\n\t\t\t\tself.setHand(x, y, false, true);\n\t\t\t});\n\n\t\t\t// Mouseup on document\n\t\t\t$doc.off(mouseupEvent).on(mouseupEvent, function(e) {\n\t\t\t\t$doc.off(mouseupEvent);\n\t\t\t\te.preventDefault();\n\t\t\t\tvar isTouch = /^touch/.test(e.type),\n\t\t\t\t\t\tx = (isTouch ? e.originalEvent.changedTouches[0] : e).pageX - x0,\n\t\t\t\t\t\ty = (isTouch ? e.originalEvent.changedTouches[0] : e).pageY - y0;\n\t\t\t\tif ((space || moved) && x === dx && y === dy)\n          self.setHand(x, y);\n          \n        let {hours, minutes, amOrPm, maxHours, minHours, maxMinutes, minMinutes} = self;\n        \n        if (amOrPm === 'PM') {\n          if (minHours < 12)\n            minHours = 0;\n          if (minHours > 12)\n            minHours -= 12;\n          if (maxHours > 12)\n            maxHours -= 12; \n        }\n\n        // dont toggleView if selected time out of scope\n        if (self.isInvalidTimeScope) {\n          self.isInvalidTimeScope = false;\n          e.stopPropagation();\n        }\n        else if (self.currentView === 'hours')\n          self.toggleView('minutes', duration / 2);\n        else if (self.currentView != 'hours' && options.autoclose) {\n          self.minutesView.addClass('clockpicker-dial-out');\n          setTimeout(function(){\n            self.done();\n          }, duration / 2);\n          self.currentHours = 0\n        } \n\n\t\t\t\tplate.prepend(canvas);\n\n\t\t\t\t// Reset cursor style of body\n\t\t\t\tclearTimeout(movingTimer);\n\t\t\t\tself.popover.removeClass('clockpicker-moving');\n\n\t\t\t\t// Unbind mousemove event\n\t\t\t\t$doc.off(mousemoveEvent);\n      });\n      self.disableOutOfRangeElements();\n\t\t}\n\n\t\tif (svgSupported) {\n\t\t\t// Draw clock hands and others\n\t\t\tvar canvas = popover.find('.clockpicker-canvas'),\n\t\t\t\t\tsvg = createSvgElement('svg');\n\t\t\tsvg.setAttribute('class', 'clockpicker-svg');\n\t\t\tsvg.setAttribute('width', diameter);\n\t\t\tsvg.setAttribute('height', diameter);\n\t\t\tvar g = createSvgElement('g');\n\t\t\tg.setAttribute('transform', 'translate(' + dialRadius + ',' + dialRadius + ')');\n\t\t\tvar bearing = createSvgElement('circle');\n\t\t\tbearing.setAttribute('class', 'clockpicker-canvas-bearing');\n\t\t\tbearing.setAttribute('cx', 0);\n\t\t\tbearing.setAttribute('cy', 0);\n\t\t\tbearing.setAttribute('r', 2);\n\t\t\tvar hand = createSvgElement('line');\n\t\t\thand.setAttribute('x1', 0);\n      hand.setAttribute('y1', 0);\n\t\t\tvar bg = createSvgElement('circle');\n\t\t\tbg.setAttribute('class', 'clockpicker-canvas-bg');\n\t\t\tbg.setAttribute('r', tickRadius);\n\t\t\tvar fg = createSvgElement('circle');\n\t\t\tfg.setAttribute('class', 'clockpicker-canvas-fg');\n\t\t\tfg.setAttribute('r', 5);\n\t\t\tg.appendChild(hand);\n\t\t\tg.appendChild(bg);\n\t\t\tg.appendChild(fg);\n\t\t\tg.appendChild(bearing);\n\t\t\tsvg.appendChild(g);\n\t\t\tcanvas.append(svg);\n\n\t\t\tthis.hand = hand;\n\t\t\tthis.bg = bg;\n\t\t\tthis.fg = fg;\n\t\t\tthis.bearing = bearing;\n\t\t\tthis.g = g;\n\t\t\tthis.canvas = canvas;\n\t\t}\n\n\t\traiseCallback(this.options.init);\n\t}\n\n\tfunction raiseCallback(callbackFunction) {\n\t\tif(callbackFunction && typeof callbackFunction === \"function\")\n\t\t\tcallbackFunction();\n\t}\n\n\t// Default options\n\tClockPicker.DEFAULTS = {\n\t\t'default': '',         // default time, 'now' or '13:14' e.g.\n\t\tfromnow: 0,            // set default time to * milliseconds from now (using with default = 'now')\n    donetext: 'Done',      // done button text\n    cleartext: 'Clear',    // clear button text\n\t\tautoclose: false,      // auto close when minute is selected\n\t\tampmclickable: false,  // set am/pm button on itself\n\t\tdarktheme: false,\t\t\t // set to dark theme\n\t\ttwelvehour: false,     // change to 12 hour AM/PM clock from 24 hour\n    vibrate: true,         // vibrate the device when dragging clock hand\n    hourstep: 1,           // allow to multi increment the hour\n    minutestep: 1,         // allow to multi increment the minute\n\t\tampmSubmit: false,     // allow submit with AM and PM buttons instead of the minute selection/picker\n\t\tcontainer: 'body', \t\t // set the container selector\n\t};\n\n\t// Show or hide popover\n\tClockPicker.prototype.toggle = function() {\n\t\tthis[this.isShown ? 'hide' : 'show']();\n\t};\n\n\t// Set popover position\n\tClockPicker.prototype.locate = function() {\n\t\tvar element = this.element,\n\t\t\t\tpopover = $(this.options.container).append(this.popover),\n\t\t\t\toffset = element.offset(),\n\t\t\t\twidth = element.outerWidth(),\n\t\t\t\theight = element.outerHeight(),\n\t\t\t\talign = this.options.align,\n\t\t\t\tself = this;\n\n\t\tthis.popover.show();\n  };\n\n  // The input can be changed by the user\n  // So before we can use this.hours/this.minutes we must update it\n  ClockPicker.prototype.parseInputValue = function(){\n    var value = this.input.prop('value') || this.options['default'] || '';\n\n    if (value === 'now') {\n      value = new Date(+ new Date() + this.options.fromnow);\n    }\n    if (value instanceof Date) {\n      value = value.getHours() + ':' + value.getMinutes();\n    }\n\n    value = value.split(':');\n\n    // Minutes can have AM/PM that needs to be removed\n    this.hours = + value[0] || 0;\n    this.minutes = + (value[1] + '').replace(/\\D/g, '') || 0;\n\n    this.hours = Math.round(this.hours / this.options.hourstep) * this.options.hourstep;\n    this.minutes = Math.round(this.minutes / this.options.minutestep) * this.options.minutestep;\n\n    if (this.options.twelvehour) {\n      var period = (value[1] + '').replace(/\\d+/g, '').toLowerCase();\n      this.amOrPm = this.hours > 12 || period === 'pm' ? 'PM' : 'AM';\n    }\n  };\n\n\t// Show popover\n\tClockPicker.prototype.show = function(e){\n\t\t// Not show again\n\t\tif (this.isShown) {\n\t\t\treturn;\n\t\t}\n\t\traiseCallback(this.options.beforeShow);\n\t\t$(':input').each(function() {\n\t\t\t$(this).attr('tabindex', -1);\n\t\t})\n\t\tvar self = this;\n\t\t// Initialize\n\t\tthis.input.blur();\n\t\tthis.popover.addClass('picker--opened');\n\t\tthis.input.addClass('picker__input picker__input--active');\n\t\t$(document.body).css('overflow', 'hidden');\n\t\tif (!this.isAppended) {\n\t\t\t// Append popover to body\n\t\t\tthis.popover.insertAfter(this.input);\n\t\t\tif(this.options.twelvehour) {\n\t\t\t\tthis.amOrPm = 'AM';\n\t\t\t\tif(!this.options.ampmclickable) {\n\t\t\t\t\tthis.amPmBlock.children('.pm-button').removeClass('active');\n\t\t\t\t\tthis.amPmBlock.children('.am-button').addClass('active');\n\t\t\t\t\tthis.spanAmPm.empty().append('PM');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.spanAmPm.children('#click-am').addClass(\"text-primary\");\n\t\t\t\t\tthis.spanAmPm.children('#click-pm').removeClass(\"text-primary\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Reset position when resize\n\t\t\t$win.on('resize.clockpicker' + this.id, function() {\n\t\t\t\tif (self.isShown) {\n\t\t\t\t\tself.locate();\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.isAppended = true;\n\t\t}\n\t\t// Get the time\n    this.parseInputValue();\n\n    if (this.hours === 0) {\n      this.hours = this.minHours;\n    }\n\n\t\tthis.spanHours.html(leadingZero(this.hours));\n    this.spanMinutes.html(leadingZero(this.minutes));\n\n    if (this.options.twelvehour) {\n      this.spanAmPm.empty().append(this.amOrPm);\n    }\n    this.disableOutOfRangeElements();\n\t\t// Toggle to hours view\n\t\tthis.toggleView('hours');\n\t\t// Set position\n\t\tthis.locate();\n\t\tthis.isShown = true;\n\t\t// Hide when clicking or tabbing on any element except the clock and input\n\t\t$doc.on('click.clockpicker.' + this.id + ' focusin.clockpicker.' + this.id, debounce(function(e) {\n\t\t\tvar target = $(e.target);\n\t\t\tif (target.closest(self.popover.find('.picker__wrap')).length === 0 && target.closest(self.input).length === 0)\n\t\t\t\tself.hide();\n\t\t}, 100));\n\t\t// Hide when ESC is pressed\n\t\t$doc.on('keyup.clockpicker.' + this.id, debounce( function(e){\n\t\t\tif (e.keyCode === 27)\n\t\t\t\tself.hide();\n\t\t},100));\n\t\traiseCallback(this.options.afterShow);\n\t};\n\t// Hide popover\n\tClockPicker.prototype.hide = function() {\n\t\traiseCallback(this.options.beforeHide);\n\t\tthis.input.removeClass('picker__input picker__input--active');\n\t\tthis.popover.removeClass('picker--opened');\n\t\t$(document.body).css('overflow', 'visible');\n\t\tthis.isShown = false;\n\t\t$(':input').each(function(index) {\n\t\t\t$(this).attr('tabindex', index + 1);\n\t\t});\n\t\t// Unbinding events on document\n\t\t$doc.off('click.clockpicker.' + this.id + ' focusin.clockpicker.' + this.id);\n\t\t$doc.off('keyup.clockpicker.' + this.id);\n\t\tthis.popover.hide();\n\t\traiseCallback(this.options.afterHide);\n  };\n  // set invalid or disable some elements if needed\n  ClockPicker.prototype.disableOutOfRangeElements = function() {\n    let {hours, minutes, currentView, isTwelvehour, amOrPm, maxHours, minHours, maxMinutes, minMinutes} = this;\n    const $hoursTick = $('.clockpicker-hours').children(),\n          $minutesTick = $('.clockpicker-minutes').children(),\n          $amBtn = $('.am-button'),\n          $pmBtn = $('.pm-button'),\n          $doneBtn = $('.done-button');\n\n    // disable am/pm switch btn when time is out of allow range for am/pm period\n    if (isTwelvehour && currentView === 'minutes') {\n      $doneBtn.removeClass('grey-text disabled');\n      if (amOrPm === 'AM' && !(hours + 12 <= maxHours))\n        $pmBtn.addClass('disabled');\n      else if (amOrPm === 'PM' && !(hours >= minHours))\n        $amBtn.addClass('disabled');\n    }    \n\n    // min and max hours is in 24h format, conver to 12h format if needed\n    if (isTwelvehour && amOrPm === 'PM') {\n      if (minHours < 12)\n        minHours = 0;\n\n      if (minHours > 12)\n        minHours -= 12;\n        \n      if (maxHours > 12)\n        maxHours -= 12; \n    }\n\n    // disable done btn when time is out of allow range \n    if (isTwelvehour && currentView === 'hours') {\n      $amBtn.removeClass('disabled');\n      $pmBtn.removeClass('disabled');\n\n      if (amOrPm === 'AM' && (!(hours >= minHours) || !(hours <= maxHours))) {\n        $doneBtn.addClass('grey-text disabled');\n      } else if (amOrPm === 'PM' && (!(hours >= minHours) || !(hours <= maxHours))) {\n        $doneBtn.addClass('grey-text disabled');\n      } else {\n        $doneBtn.removeClass('grey-text disabled');\n      }\n    }\n\n    // disable done btn when time is out of allow range \n    if (currentView === 'minutes') {\n      if ((hours === minHours && minutes < minMinutes) || (hours === maxHours && minutes > maxMinutes))\n        $doneBtn.addClass('grey-text disabled');\n      else\n        $doneBtn.removeClass('grey-text disabled');\n    }\n\n    // set invalid if hours is out of allow range\n    if (currentView === 'hours') {\n      $hoursTick.each((index, el) => {\n        let hours = el.innerHTML;\n        \n        if (this.isTwelvehour && hours == 12)\n          hours = 0;\n        \n        if (hours > maxHours || hours < minHours)\n          $(el).addClass('grey-text disabled');\n        else\n          $(el).removeClass('grey-text disabled');\n      });\n    }\n\n    // set invalid if minutes is out of allow range\n    if (currentView === 'minutes') {\n      $minutesTick.each((index, el) => {\n        if (minHours == hours && el.innerHTML < minMinutes)\n          $(el).addClass('grey-text disabled');\n        else if (maxHours == hours && el.innerHTML > maxMinutes)\n          $(el).addClass('grey-text disabled');\n        else\n          $(el).removeClass('grey-text disabled');\n      });\n    }\n  }\n\n\t// Toggle to hours or minutes view\n\tClockPicker.prototype.toggleView = function(view, delay) {\n\t\tvar raiseAfterHourSelect = false;\n\t\tif (view === 'minutes' && $(this.hoursView).css(\"visibility\") === \"visible\") {\n\t\t\traiseCallback(this.options.beforeHourSelect);\n\t\t\traiseAfterHourSelect = true;\n\t\t}\n\t\tvar isHours = view === 'hours',\n\t\t\t\tnextView = isHours ? this.hoursView : this.minutesView,\n\t\t\t\thideView = isHours ? this.minutesView : this.hoursView;\n    this.currentView = view;\n    \n\t\tthis.spanHours.toggleClass('text-primary', isHours);\n    this.spanMinutes.toggleClass('text-primary', ! isHours);\n    \n\t\t// Let's make transitions\n\t\thideView.addClass('clockpicker-dial-out');\n    nextView.css('visibility', 'visible').removeClass('clockpicker-dial-out');\n    \n\t\t// Reset clock hand\n\t\tthis.resetClock(delay);\n\n\t\t// After transitions ended\n\t\tclearTimeout(this.toggleViewTimer);\n\t\tthis.toggleViewTimer = setTimeout(function() {\n\t\t\thideView.css('visibility', 'hidden');\n\t\t}, duration);\n\n    this.disableOutOfRangeElements();\n\n\t\tif (raiseAfterHourSelect)\n\t\t\traiseCallback(this.options.afterHourSelect);\n\t};\n\n\t// Reset clock hand\n\tClockPicker.prototype.resetClock = function(delay) {\n\t\tvar view = this.currentView,\n\t\t\t\tvalue = this[view],\n\t\t\t\tisHours = view === 'hours',\n\t\t\t\tunit = Math.PI / (isHours ? 6 : 30),\n\t\t\t\tradian = value * unit,\n\t\t\t\tradius = isHours && value > 0 && value < 13 ? innerRadius : outerRadius,\n\t\t\t\tx = Math.sin(radian) * radius,\n\t\t\t\ty = - Math.cos(radian) * radius,\n\t\t\t\tself = this;\n\n\t\tif(svgSupported && delay) {\n\t\t\tself.canvas.addClass('clockpicker-canvas-out');\n\t\t\tsetTimeout(function(){\n\t\t\t\tself.canvas.removeClass('clockpicker-canvas-out');\n\t\t\t\tself.setHand(x, y);\n\t\t\t}, delay);\n\t\t} else\n\t\t\tthis.setHand(x, y);\n\t};\n\n\t// Set clock hand to (x, y)\n\tClockPicker.prototype.setHand = function(x, y, roundBy5, dragging) {\n\t\tvar radian = Math.atan2(x, - y),\n\t\t\t\tisHours = this.currentView === 'hours',\n\t\t\t\tz = Math.sqrt(x * x + y * y),\n\t\t\t\toptions = this.options,\n\t\t\t\tinner = isHours && z < (outerRadius + innerRadius) / 2,\n\t\t\t\tradius = inner ? innerRadius : outerRadius,\n\t\t\t\tunit,\n        value;\n\n    // Calculate the unit\n    if (isHours) {\n        unit = options.hourstep / 6 * Math.PI\n    } else {\n        unit = options.minutestep / 30 * Math.PI\n    }\n\n\t\tif (options.twelvehour)\n\t\t\tradius = outerRadius;\n\n\t\t// Radian should in range [0, 2PI]\n\t\tif (radian < 0)\n\t\t\tradian = Math.PI * 2 + radian;\n\n\t\t// Get the round value\n    value = Math.round(radian / unit);\n\n\t\t// Get the round radian\n\t\tradian = value * unit;\n\t\t// Correct the hours or minutes\n    if (isHours) {\n      value *= options.hourstep;\n      if (! options.twelvehour && (!inner)==(value>0)) {\n        value += 12;\n      }\n      if (options.twelvehour && value === 0) {\n          value = 12;\n      }\n      if (value === 24) {\n          value = 0;\n\t\t\t}\n    } else {\n      value *= options.minutestep;\n      if (value === 60) {\n          value = 0;\n      }\n    }\n    // disable action when out of allow range\n    let { minHours, maxHours, minMinutes, maxMinutes, amOrPm } = this;\n\n    if (isHours) {\n      let hours = value;         \n\n      if (this.amOrPm === 'PM') {\n        if (minHours < 12)\n          minHours = 0;\n        if (minHours > 12)\n          minHours -= 12;\n        if (maxHours > 12)\n          maxHours -= 12;\n      }\n        \n      if (this.isTwelvehour && hours == 12)\n        hours = 0;\n\n      if (hours < minHours || hours > maxHours){\n        this.isInvalidTimeScope = true;\n        return;\n      }\n\n      if (this.isTwelvehour && hours === 12) {\n        this.isInvalidTimeScope = true;\n        return;\n      }\n    } else  {\n      let { hours } = this;\n\n      if (amOrPm === 'PM')\n        hours += 12;\n\n      if ((hours == minHours && value < minMinutes) || (hours == maxHours && value > maxMinutes)) {\n        this.isInvalidTimeScope = true;\n        return;\n      }\n\t\t}\n\n\t\tif (isHours)\n\t\t\tthis.fg.setAttribute('class', 'clockpicker-canvas-fg');\n\t\telse {\n\t\t\tif (value % 5 == 0)\n\t\t\t\tthis.fg.setAttribute('class', 'clockpicker-canvas-fg');\n\t\t\telse\n\t\t\t\tthis.fg.setAttribute('class', 'clockpicker-canvas-fg active');\n\t\t}\n\n\t\t// Once hours or minutes changed, vibrate the device\n\t\tif (this[this.currentView] !== value)\n\t\t\tif (vibrate && this.options.vibrate)\n\t\t\t\t// Do not vibrate too frequently\n\t\t\t\tif (! this.vibrateTimer) {\n\t\t\t\t\tnavigator[vibrate](10);\n\t\t\t\t\tthis.vibrateTimer = setTimeout($.proxy(function(){\n\t\t\t\t\t\tthis.vibrateTimer = null;\n\t\t\t\t\t}, this), 100);\n        }\n\t\tthis[this.currentView] = value;\n\t\tthis[isHours ? 'spanHours' : 'spanMinutes'].html(leadingZero(value));\n\n\t\t// If svg is not supported, just add an active class to the tick\n\t\tif (! svgSupported) {\n\t\t\tthis[isHours ? 'hoursView' : 'minutesView'].find('.clockpicker-tick').each(function(){\n\t\t\t\tvar tick = $(this);\n\t\t\t\ttick.toggleClass('active', value === + tick.html());\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\t// Place clock hand at the top when dragging\n\t\tif (dragging || (! isHours && value % 5)) {\n\t\t\tthis.g.insertBefore(this.hand, this.bearing);\n\t\t\tthis.g.insertBefore(this.bg, this.fg);\n\t\t\tthis.bg.setAttribute('class', 'clockpicker-canvas-bg clockpicker-canvas-bg-trans');\n\t\t} else {\n\t\t\t// Or place it at the bottom\n\t\t\tthis.g.insertBefore(this.hand, this.bg);\n\t\t\tthis.g.insertBefore(this.fg, this.bg);\n\t\t\tthis.bg.setAttribute('class', 'clockpicker-canvas-bg');\n\t\t}\n\n\t\t// Set clock hand and others' position\n    var cx = Math.sin(radian) * radius,\n      cy = - Math.cos(radian) * radius;\n    this.hand.setAttribute('x2', cx);\n    this.hand.setAttribute('y2', cy);\n    this.bg.setAttribute('cx', cx);\n    this.bg.setAttribute('cy', cy);\n    this.fg.setAttribute('cx', cx);\n    this.fg.setAttribute('cy', cy);\n  };\n\n  \t// Clear clock text\n  ClockPicker.prototype.clearInput = function() {\n\t\tthis.input.val('');\n\t\tthis.hide();\n\n\t\tif(this.options.afterDone && typeof this.options.afterDone === 'function')\n\t\t\tthis.options.afterDone(this.input, null);\n\t};\n\n    // Allow user to get time as Date object\n  ClockPicker.prototype.getTime = function(callback) {\n    this.parseInputValue();\n\n    var hours = this.hours;\n    if (this.options.twelvehour && hours < 12 && this.amOrPm === 'PM') {\n        hours += 12;\n    }\n\n    var selectedTime = new Date();\n    selectedTime.setMinutes(this.minutes)\n    selectedTime.setHours(hours);\n    selectedTime.setSeconds(0);\n\n    return callback && callback.apply(this.element, selectedTime) || selectedTime;\n  }\n\n\t// Hours and minutes are selected\n\tClockPicker.prototype.done = function() {\n\t\traiseCallback(this.options.beforeDone);\n\t\tthis.hide();\n\t\tthis.label.addClass('active');\n\n\t\tvar last = this.input.prop('value'),\n      outHours = this.hours,\n      value = ':' + leadingZero(this.minutes);\n\n    if (this.isHTML5 && this.options.twelvehour) {\n        if (this.hours < 12 && this.amOrPm === 'PM') {\n            outHours += 12;\n        }\n        if (this.hours === 12 && this.amOrPm === 'AM') {\n            outHours = 0;\n        }\n    }\n\n    value = leadingZero(outHours) + value;\n\n    if (!this.isHTML5 && this.options.twelvehour) {\n          value = value + this.amOrPm;\n    }\n\n\t\tthis.input.prop('value', value);\n\t\tif(value !== last) {\n\t\t\tthis.input.trigger('change');\n\t\t\tif(!this.isInput)\n\t\t\t\tthis.element.trigger('change');\n\t\t}\n\n\t\tif(this.options.autoclose)\n\t\t\tthis.input.trigger('blur');\n\n\t\traiseCallback(this.options.afterDone);\n\t};\n\n\t// Remove clockpicker from input\n\tClockPicker.prototype.remove = function() {\n\t\tthis.element.removeData('clockpicker');\n\t\tthis.input.off('focus.clockpicker click.clockpicker');\n\t\tif (this.isShown)\n\t\t\tthis.hide();\n\t\tif (this.isAppended) {\n\t\t\t$win.off('resize.clockpicker' + this.id);\n\t\t\tthis.popover.remove();\n\t\t}\n\t};\n\n\t// Extends $.fn.clockpicker\n\t$.fn.pickatime = function(option){\n\t\tvar args = Array.prototype.slice.call(arguments, 1);\n\t\tfunction handleClockPickerRequest(){\n\t\t\tvar $this = $(this),\n\t\t\t\t\tdata = $this.data('clockpicker');\n\t\t\tif (!data) {\n\t\t\t\tvar options = $.extend({}, ClockPicker.DEFAULTS, $this.data(), typeof option == 'object' && option);\n\t\t\t\t$this.data('clockpicker', new ClockPicker($this, options));\n\t\t\t} else {\n\t\t\t\t// Manual operations. show, hide, remove, e.g.\n\t\t\t\tif (typeof data[option] === 'function')\n\t\t\t\t\tdata[option].apply(data, args);\n\t\t\t}\n    }\n    // If we explicitly do a call on a single element then we can return the value (if needed)\n    // This allows us, for example, to return the value of getTime\n    if (this.length == 1) {\n      var returnValue = handleClockPickerRequest.apply(this[0]);\n\n      // If we do not have any return value then return the object itself so you can chain\n      return returnValue !== undefined ? returnValue : this;\n    }\n\n    // If we do have a list then we do not care about return values\n    return this.each(handleClockPickerRequest);\n\t};\n\t\n\t$('.time-picker-opener').on('click', e => {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\tconst openElementData = e.target.dataset.open;\n\t\tconst $picker = $(`#${openElementData}`).pickatime('picker');\n\t\t$picker.data('clockpicker').show();\n\t});\n}());\n","jQuery(($) => {\n\n  $.fn.dateTimePicker = function(delimiter = ', ') {\n\n    const $this = $(this)[0];\n\n    let result = $(`.picker-opener[data-open='${$this.dataset.open}']`);\n    const $timePicker = $(`.timepicker[data-open='${$this.dataset.open}']`);\n    const $datePicker = $(`#${$this.dataset.open}`);\n\n    $datePicker.pickadate({\n      onClose: function () {\n\n        const input = $timePicker.pickatime({\n          afterHide: () => {\n            $timePicker.trigger(\"change\");\n          }\n        });\n        const picker = input.pickatime('picker');\n        picker.data('clockpicker').show();\n      },\n      format: 'yyyy/mm/dd',\n      formatSubmit: 'yyyy/mm/dd',\n    });\n\n    $datePicker.on('change', () => {\n      let timeValue = $timePicker.val();\n      let dateValue = $datePicker.val();\n      result[0].value = `${dateValue}${timeValue !=='' && dateValue !=='' ? delimiter : ''}${timeValue}`;\n    });\n\n    $timePicker.on('change', () => {\n      let timeValue = $timePicker.val();\n      let dateValue = $datePicker.val();\n      result[0].value = `${dateValue}${timeValue !=='' && dateValue !=='' ? delimiter : ''}${timeValue}`;\n    });\n\n  };\n\n});\n","jQuery(($) => {\n  const $win = $(window);\n  const $doc = $(document);\n\n  // Can I use inline svg ?\n  const svgNS = 'http://www.w3.org/2000/svg';\n  const svgSupported = 'SVGAngle' in window && (() => {\n    const el = document.createElement('div');\n    el.innerHTML = '<svg/>';\n    const supported = (el.firstChild && el.firstChild.namespaceURI) == svgNS;\n    el.innerHTML = '';\n    return supported;\n  })();\n\n  // Can I use transition ?\n  const transitionSupported = (() => {\n    const style = document.createElement('div').style;\n    return 'transition' in style ||\n           'WebkitTransition' in style ||\n           'MozTransition' in style ||\n           'msTransition' in style ||\n           'OTransition' in style;\n  })();\n\n  // Listen touch events in touch screen device, instead of mouse events in desktop.\n  const touchSupported = 'ontouchstart' in window;\n  const mousedownEvent = `mousedown ${touchSupported ? ' touchstart' : ''}`;\n  const mousemoveEvent = `mousemove.clockpicker ${touchSupported ? ' touchmove.clockpicker' : ''}`;\n  const mouseupEvent = `mouseup.clockpicker ${touchSupported ? ' touchend.clockpicker' : ''}`;\n\n  // Vibrate the device if supported\n  const vibrate = navigator.vibrate ? 'vibrate' : navigator.webkitVibrate ? 'webkitVibrate' : null;\n\n  function createSvgElement(name) {\n    return document.createElementNS(svgNS, name);\n  }\n\n  function debounce(func, wait, immediate) {\n    var timeout;\n    return function () {\n        var context = this\n        var args = arguments;\n        var later = function() {\n            timeout = null;\n            if (!immediate) func.apply(context, args);\n        };\n        var callNow = immediate && !timeout;\n        clearTimeout(timeout);\n        timeout = setTimeout(later, wait);\n        if (callNow) func.apply(context, args);\n    };\n  }\n\n  function leadingZero(num) {\n    return (num < 10 ? '0' : '') + num;\n  }\n\n  // Get a unique id\n  var idCounter = 0;\n  function uniqueId(prefix) {\n    var id = ++idCounter + '';\n    return prefix ? prefix + id : id;\n  }\n\n  // Clock size\n  var dialRadius = 135,\n      outerRadius = 110,\n      // innerRadius = 80 on 12 hour clock\n      innerRadius = 80,\n      tickRadius = 20,\n      diameter = dialRadius * 2,\n      duration = transitionSupported ? 350 : 1;\n\n  // Popover template\n  var tpl = [\n    '<div class=\"clockpicker_container clockpicker picker\">',\n      '<div class=\"picker__holder\">',\n        '<div class=\"picker__frame\">',\n          '<div class=\"picker__wrap\">',\n            '<div class=\"picker__box\">',\n              '<div class=\"picker__date-display\">',\n                '<div class=\"clockpicker-display\">',\n                  '<div class=\"clockpicker-display-column\">',\n                    '<span class=\"clockpicker-span-hours text-primary\" tabindex=\"1\" aria-label=\"Choose hour\"></span>',\n                    ':',\n                    '<span class=\"clockpicker-span-minutes\" tabindex=\"2\" aria-label=\"Choose minute\"></span>',\n                  '</div>',\n                  '<div class=\"clockpicker-display-column clockpicker-display-am-pm\">',\n                    '<div class=\"clockpicker-am-pm-block\"></div>',\n                  '</div>',\n                '</div>',\n              '</div>',\n              '<div class=\"picker__calendar-container\">',\n                '<div class=\"clockpicker-plate\">',\n                  '<div class=\"clockpicker-canvas\"></div>',\n                  '<div class=\"clockpicker-dial clockpicker-hours\"></div>',\n                  '<div class=\"clockpicker-dial clockpicker-minutes clockpicker-dial-out\"></div>',\n                '</div>',\n              '<div class=\"picker__footer\">',\n              '</div>',\n            '</div>',\n          '</div>',\n        '</div>',\n      '</div>',\n    '</div>'\n  ].join('');\n\n  // ClockPicker\n  function ClockPicker(element) {\n    var popover = $(tpl),\n        plate = popover.find('.clockpicker-plate'),\n        holder = popover.find('.picker__holder'),\n        hoursView = popover.find('.clockpicker-hours'),\n        minutesView = popover.find('.clockpicker-minutes'),\n        amPmBlock = popover.find('.clockpicker-am-pm-block'),\n        icon = element.children('i'),\n        input = element.children('input'),\n        isHTML5 = input.prop('type') === 'time',\n        label = $(\"label[for=\" + input.attr(\"id\") + \"]\"),\n        self = this,\n        options = {};\n\n    options.default = element.attr('default') || '';\n    options.fromnow = element.attr('fromnow') || 0;\n    options.donetext = element.attr('donetext') || 'OK';\n    options.cleartext = element.attr('cleartext') || 'Clear';\n    options.closetext = element.attr('closetext') || 'Close';\n    options.autoclose = element.attr('autoclose') || false;\n    options.darktheme = element.attr('darktheme') || false;\n    options.twelvehour = element.attr('twelvehour') || false;\n    options.vibrate = element.attr('vibrate') || true;\n    options.hourstep = element.attr('hourstep') || 1;\n    options.minutestep = element.attr('minutestep') || 1;\n    options.inputshowpicker = element.attr('inputshowpicker') || false;\n    options.min = element.attr('min') || 0;\n    options.max = element.attr('max') || 0;\n\n    this.id = uniqueId('cp');\n    this.element = element;\n    this.holder = holder;\n    this.options = options;\n    this.isAppended = false;\n    this.isShown = false;\n    this.currentView = 'hours';\n    this.input = input;\n    this.icon = icon;\n    this.label = label;\n    this.popover = popover;\n    this.plate = plate;\n    this.hoursView = hoursView;\n    this.minutesView = minutesView;\n    this.amPmBlock = amPmBlock;\n    this.spanHours = popover.find('.clockpicker-span-hours');\n    this.spanMinutes = popover.find('.clockpicker-span-minutes');\n    this.footer = popover.find('.picker__footer');\n    this.amOrPm = \"\";\n    this.isTwelvehour = options.twelvehour;\n    this.minTime = options.min;\n    this.maxTime = options.max;\n    this.minMinutes = 0;\n    this.maxMinutes = 59;\n    this.minHours = 0;\n    this.maxHours = 23;\n    this.isInvalidTimeScope = false;\n    this.hoursBeforeChange = null;\n    this.minutesBeforeChange = null; \n\n    // round minutestep to multiples of five\n    if (options.minutestep > 20) {\n      options.minutestep = 20\n    } else if (options.minutestep != 1 && options.minutestep % 5) {\n      const rest = options.minutestep % 5;\n      if (rest >= 2.5) {\n        options.minutestep += 5 - rest;\n      } else {\n        options.minutestep -= rest;\n      }\n    }\n\n    this.icon.removeClass('active');\n    this.input.on('focus', () => this.icon.addClass('active'));\n    this.input.on('blur', () => this.icon.removeClass('active'));\n    const parseTimeOptions = (scope) => {\n      const time = scope + 'Time';\n      this[time] = options[scope].split(':');\n      \n      // user can set using am/pm. Convert 12h clock settings to 24h clock settings \n      if (this[time][1].length === 4) {\n        const period = this[time][1].replace(/\\d+/g, '').toUpperCase();\n        this[time][1] = this[time][1].replace(/\\D+/g, '');\n        if (period === 'PM') \n          this[time][0] = parseInt(this[time][0]) + 12\n      }\n      \n      if (this[time].length !== 2)\n        this[time] = null;\n      else {\n        for (let i = 0; i < this[time].length; i++) {\n          this[time][i] = +this[time][i];\n        }\n      }\n    };\n    \n    // Parse minTime Option\n    if (options.min) {\n      parseTimeOptions('min');\n      this.minMinutes = this.minTime[1];\n      this.minHours = this.minTime[0];\n    }\n\n    // Parse maxTime Option\n    if (options.max) {\n      parseTimeOptions('max');\n\n      // Ensure that max is after min, if not remove the max it's invalid\n      if ((this.minHours > this.maxHours) || (this.minHours === this.maxHours && this.minMinutes >= this.maxMinutes)) {\n        this.maxTime = 0;\n      } else {\n        this.maxMinutes = this.maxTime[1];\n        this.maxHours = this.maxTime[0];\n      }\n    }\n\n    // Setup for for 12 hour clock if option is selected\n    if (options.twelvehour) {\n      $('<span class=\"am\" aria-label=\"change to am\" tabindex=\"3\">' + \"AM\" + '</span>').on(\"click\", function() {\n        self.togglePeriod('AM');\n      }).appendTo(this.amPmBlock);\n      $('<span class=\"pm\" aria-label=\"change to pm\" tabindex=\"4\">' + \"PM\" + '</span>').on(\"click\", function() {\n        self.togglePeriod('PM');\n      }).appendTo(this.amPmBlock);\n    }\n    \n\n    if(options.darktheme)\n      popover.addClass('darktheme');\n\n      // If autoclose is not setted, append a button\n    $('<button type=\"button\" class=\"btn btn-flat clockpicker-button clear-button\" aria-label=\"Clear input\" tabindex=\"' + (options.twelvehour? '5' : '3') + '\">' + options.cleartext + '</button>').click($.proxy(this.clearInput, this)).appendTo(this.footer);\n    $('<button type=\"button\" class=\"btn btn-flat clockpicker-button close-button\" aria-label=\"Close picker\" tabindex=\"' + (options.twelvehour? '6' : '4') + '\">' + options.closetext + '</button>').click($.proxy(this.closeInput, this)).appendTo(this.footer);\n    $('<button type=\"button\" class=\"btn btn-flat clockpicker-button done-button\" aria-label=\"save\" tabindex=\"' + (options.twelvehour? '7' : '5') + '\">' + options.donetext + '</button>').click($.proxy(this.done, this)).appendTo(this.footer);\n    this.spanHours.click($.proxy(this.toggleView, this, 'hours'));\n    this.spanMinutes.click($.proxy(this.toggleView, this, 'minutes'));\n\n\n\n    // Build ticks\n    var tickTpl = $('<div class=\"clockpicker-tick\"></div>'),\n        i, tick, radian, radius;\n\n    // Hours view\n    if (options.twelvehour) {\n      for (i = 0; i < 12; i += options.hourstep) {\n        tick = tickTpl.clone();\n        radian = i / 6 * Math.PI;\n        radius = outerRadius;\n        tick.css('font-size', '140%');\n        tick.css({\n          left: dialRadius + Math.sin(radian) * radius - tickRadius,\n          top: dialRadius - Math.cos(radian) * radius - tickRadius\n        });\n        tick.html(i === 0 ? 12 : i);\n        hoursView.append(tick);\n        tick.on(mousedownEvent, mousedown);\n        this.disableOutOfRangeElements();\n      }\n    } else {\n      for (i = 0; i < 24; i += options.hourstep) {\n        tick = tickTpl.clone();\n        radian = i / 6 * Math.PI;\n        var inner = i > 0 && i < 13;\n        radius = inner ? innerRadius : outerRadius;\n        tick.css({\n          left: dialRadius + Math.sin(radian) * radius - tickRadius,\n          top: dialRadius - Math.cos(radian) * radius - tickRadius\n        });\n        if (inner) {\n          tick.css('font-size', '120%');\n        }\n        tick.html(i === 0 ? '00' : i);\n        hoursView.append(tick);\n        tick.on(mousedownEvent, mousedown);\n        this.disableOutOfRangeElements();\n      }\n    }\n\n    // Minutes view\n    var incrementValue = Math.max(options.minutestep, 5);\n    for (i = 0; i < 60; i += incrementValue) {\n      for (i = 0; i < 60; i += 5) {\n        tick = tickTpl.clone();\n        radian = i / 30 * Math.PI;\n        tick.css({\n          left: dialRadius + Math.sin(radian) * outerRadius - tickRadius,\n          top: dialRadius - Math.cos(radian) * outerRadius - tickRadius\n        });\n        tick.css('font-size', '140%');\n        tick.html(leadingZero(i));\n        minutesView.append(tick);\n        tick.on(mousedownEvent, mousedown);\n      }\n    }\n    \n    // Clicking on minutes view space\n    plate.on(mousedownEvent, function(e) {\n      if ($(e.target).closest('.clockpicker-tick').length === 0)\n        mousedown(e, true);\n    });\n\n    // Mousedown or touchstart\n    function mousedown(e, space) {\n      var offset = plate.offset(),\n          isTouch = /^touch/.test(e.type),\n          x0 = offset.left + dialRadius,\n          y0 = offset.top + dialRadius,\n          dx = (isTouch ? e.originalEvent.touches[0] : e).pageX - x0,\n          dy = (isTouch ? e.originalEvent.touches[0] : e).pageY - y0,\n          z = Math.sqrt(dx * dx + dy * dy),\n          moved = false;\n\n      // When clicking on minutes view space, check the mouse position\n      if (space && (z < outerRadius - tickRadius || z > outerRadius + tickRadius))\n        return;\n      e.preventDefault();\n\n      // Set cursor style of body after 200ms\n      var movingTimer = setTimeout(function(){\n        self.popover.addClass('clockpicker-moving');\n      }, 200);\n\n      // Place the canvas to top\n      if (svgSupported)\n        plate.append(self.canvas);\n\n      // Clock\n      self.setHand(dx, dy, !space, true);\n\n      // Mousemove on document\n      $doc.off(mousemoveEvent).on(mousemoveEvent, function(e){\n        e.preventDefault();\n        var isTouch = /^touch/.test(e.type),\n            x = (isTouch ? e.originalEvent.touches[0] : e).pageX - x0,\n            y = (isTouch ? e.originalEvent.touches[0] : e).pageY - y0;\n        if (! moved && x === dx && y === dy)\n          // Clicking in chrome on windows will trigger a mousemove event\n          return;\n        moved = true;\n        self.setHand(x, y, false, true);\n      });\n\n      // Mouseup on document\n      $doc.off(mouseupEvent).on(mouseupEvent, function(e) {\n        $doc.off(mouseupEvent);\n        e.preventDefault();\n        var isTouch = /^touch/.test(e.type),\n            x = (isTouch ? e.originalEvent.changedTouches[0] : e).pageX - x0,\n            y = (isTouch ? e.originalEvent.changedTouches[0] : e).pageY - y0;\n        if ((space || moved) && x === dx && y === dy)\n          self.setHand(x, y);\n          \n        let {hours, minutes, amOrPm, maxHours, minHours, maxMinutes, minMinutes} = self;\n        \n        if (amOrPm === 'PM') {\n          if (minHours < 12)\n            minHours = 0;\n          if (minHours > 12)\n            minHours -= 12;\n          if (maxHours > 12)\n            maxHours -= 12; \n        }\n\n        // dont toggleView if selected time out of scope\n        if (self.isInvalidTimeScope) {\n          self.isInvalidTimeScope = false;\n          e.stopPropagation();\n        }\n        else if (self.currentView === 'hours')\n          self.toggleView('minutes', duration / 2);\n        else if (self.currentView != 'hours' && options.autoclose) {\n          self.minutesView.addClass('clockpicker-dial-out');\n          setTimeout(function(){\n            self.done();\n          }, duration / 2);\n          self.currentHours = 0\n        } \n\n        plate.prepend(canvas);\n\n        // Reset cursor style of body\n        clearTimeout(movingTimer);\n        self.popover.removeClass('clockpicker-moving');\n\n        // Unbind mousemove event\n        $doc.off(mousemoveEvent);\n      });\n      self.disableOutOfRangeElements();\n    }\n\n    if (svgSupported) {\n      // Draw clock hands and others\n      var canvas = popover.find('.clockpicker-canvas'),\n          svg = createSvgElement('svg');\n      svg.setAttribute('class', 'clockpicker-svg');\n      svg.setAttribute('width', diameter);\n      svg.setAttribute('height', diameter);\n      var g = createSvgElement('g');\n      g.setAttribute('transform', 'translate(' + dialRadius + ',' + dialRadius + ')');\n      var bearing = createSvgElement('circle');\n      bearing.setAttribute('class', 'clockpicker-canvas-bearing');\n      bearing.setAttribute('cx', 0);\n      bearing.setAttribute('cy', 0);\n      bearing.setAttribute('r', 2);\n      var hand = createSvgElement('line');\n      hand.setAttribute('x1', 0);\n      hand.setAttribute('y1', 0);\n      var bg = createSvgElement('circle');\n      bg.setAttribute('class', 'clockpicker-canvas-bg');\n      bg.setAttribute('r', tickRadius);\n      var fg = createSvgElement('circle');\n      fg.setAttribute('class', 'clockpicker-canvas-fg');\n      fg.setAttribute('r', 5);\n      g.appendChild(hand);\n      g.appendChild(bg);\n      g.appendChild(fg);\n      g.appendChild(bearing);\n      svg.appendChild(g);\n      canvas.append(svg);\n\n      this.hand = hand;\n      this.bg = bg;\n      this.fg = fg;\n      this.bearing = bearing;\n      this.g = g;\n      this.canvas = canvas;\n    }\n\n    const tab = 9;\n    const enter = 13;\n    const arrowUp = 38;\n    const arrowDown = 40;\n    const space = 32;\n\n    const setTabTrap = () => {\n      popover.find('.clockpicker-span-hours').on('keydown', (e) => {\n        if (e.keyCode === tab && e.shiftKey) {\n          e.preventDefault();\n          popover.find('.done-button').focus();\n        }\n      });\n  \n      popover.find('.done-button').on('keydown', (e) => {\n        if (e.keyCode === tab && !e.shiftKey) {\n          e.preventDefault();\n          popover.find('.clockpicker-span-hours').focus();\n        }\n      });\n    };\n\n    const setIconTabindex = () => {\n      icon.attr('tabindex', '0');\n    };\n\n    const setAriaInputAndIcon = () => {\n      icon.attr('aria-haspopup', 'true');\n    };\n\n    const isNewValueOutOfRange = (val) => {\n      let {hours, isTwelvehour, amOrPm, currentView, maxHours, minHours, maxMinutes, minMinutes} = self;\n\n      if (isTwelvehour && currentView === 'hours' && amOrPm === 'PM' && val < 12) {\n        val += 12;\n      }\n\n      if (isTwelvehour && currentView === 'minutes' && amOrPm === 'PM') {\n        hours += 12;\n      }\n\n      if (currentView === 'hours' && (val > maxHours || val < minHours)) {\n        return true;\n      }\n\n      if (currentView === 'minutes' && (hours == minHours && val < minMinutes)) {\n        return true;\n      }\n\n      if (currentView === 'minutes' && (hours == maxHours && val > maxMinutes)) {\n        return true;\n      }\n      \n      return false;\n    };\n\n    const bindIconKeydown = () => {\n      icon.on('keydown', (e) => {\n        if (e.keyCode === space || e.keyCode === enter) {\n          debounce(this.show(), 100);\n        }\n      });\n    };\n\n    const bindHoursSpanKeydown = () => {\n      this.spanHours.on('keydown', (e) => {\n        let newValue;\n  \n        if (e.keyCode === arrowUp) {\n          \n          if (this.currentView !== 'hours') {\n            this.toggleView('hours');\n          }\n  \n          if (this.isTwelvehour) {\n            if (this.hours === 11) {\n              newValue = this.hours + 1;\n              const period = this.amOrPm === 'AM' ? 'PM' : 'AM';\n              self.togglePeriod(period)\n            } else if (this.hours === 12) {\n              newValue = 1;\n            } else {\n              newValue = this.hours + 1;\n            }\n          } else {\n            if ( this.hours === 23 ) {\n              newValue = 0\n            } else {\n              newValue = this.hours + 1;\n            }\n          }\n  \n          if (isNewValueOutOfRange(newValue)) {\n            if ( this.isTwelvehour && this.minHours <= 12 ) {\n              self.togglePeriod('AM');\n            }\n            newValue = this.minHours;\n          }\n          \n          this.hours = newValue;\n          this.spanHours.html(leadingZero(this.hours));\n          this.resetClock();\n        }\n  \n        if (e.keyCode === arrowDown) {\n          \n          if (this.currentView !== 'hours') {\n            this.toggleView('hours');\n          }\n  \n          if (this.isTwelvehour) {\n            if (this.hours === 1) {\n              newValue = 12;\n            } else if (this.hours === 12) {\n              newValue = this.hours - 1;\n              const period = this.amOrPm === 'AM' ? 'PM' : 'AM';\n              self.togglePeriod(period);\n            } else {\n              newValue = this.hours - 1;\n            }\n          } else {\n            if ( this.hours === 0 ) {\n              newValue = 23;\n            } else {\n              newValue = this.hours - 1;\n            }\n          }\n  \n          if (isNewValueOutOfRange(newValue)) {\n            if (this.isTwelvehour && this.maxHours >= 12) {\n              self.togglePeriod('PM');\n            }\n            newValue = this.maxHours;\n          }\n  \n          this.hours = newValue;\n          this.spanHours.html(leadingZero(this.hours));\n          this.resetClock();\n        }\n  \n        if (e.keyCode === enter) {\n          this.toggleView('hours');\n        }\n      });\n    };\n\n    const bindMinutesSpanKeydown = () => {\n      this.spanMinutes.on('keydown', (e) => {\n        let newValue;\n        if (e.keyCode === arrowUp) {\n          if (this.currentView !== 'minutes') {\n            this.toggleView('minutes');\n          } \n          \n          if (this.minutes === 59) {\n            newValue = 0;\n          } else {\n            newValue = this.minutes + 1;\n          }\n  \n          if (isNewValueOutOfRange(newValue)) {\n            let { hours, amOrPm, minHours, maxHours, minMinutes } = this;\n            \n            if (amOrPm === 'PM') {\n              hours += 12;\n            }\n  \n            if ( hours === minHours ) {\n              newValue = minMinutes;\n            }\n  \n            if ( hours === maxHours ) {\n              newValue = 0;\n            }\n          }\t\t\n  \n          this.minutes = newValue;\n          this.spanMinutes.html(leadingZero(this.minutes));\n          this.resetClock();\n        }\n        \n        if (e.keyCode === arrowDown) {\n          if (this.currentView !== 'minutes') {\n            this.toggleView('minutes');\n          } \n          \n          if (this.minutes === 0) {\n            newValue = 59;\n          } else {\n          newValue = this.minutes - 1;\n          }\n  \n          if (isNewValueOutOfRange(newValue)) {\n            let { hours, amOrPm, minHours, maxHours, maxMinutes } = this;\n            \n            if (amOrPm === 'PM') {\n              hours += 12;\n            }\n  \n            if ( hours === minHours ) {\n              newValue = 59;\n            }\n  \n            if ( hours === maxHours ) {\n              newValue = maxMinutes;\n            }\n          }\t\n  \n          this.minutes = newValue;\n          this.spanMinutes.html(leadingZero(this.minutes));\n          this.resetClock();\n        }\n  \n        if (e.keyCode === enter) {\n          this.toggleView('minutes');\n        }\n      });\n    };\n\n    const bindAmPmBlockKeydown = () => {\n      if (this.isTwelvehour) {\n        popover.find('.am').on('keydown', (e) => {\n          if (e.keyCode === enter) {\n            e.preventDefault();\n            self.togglePeriod('AM');\n          }\n        });\n  \n        popover.find('.pm').on('keydown', (e) => {\n          if (e.keyCode === enter) {\n            e.preventDefault();\n            self.togglePeriod('PM');\n          }\n        });\n      }\n    };\n\n    const bindCloseButtonClick = () => {\n      popover.find('.close-button').on('click', () => {\n        this.close();\n      });\n    };\n\n    const bindShowOnClick = () => {\n      let el;\n      if (options.inputshowpicker) {\n        el = input;\n      } else {\n        el = icon;\n      }\n\n      el.on('click.clockpicker', debounce( $.proxy(this.show, this), 100));\n    };\n\n\n    setTabTrap();\n    setIconTabindex();\n    setAriaInputAndIcon();\n    bindIconKeydown();\n    bindHoursSpanKeydown();\n    bindAmPmBlockKeydown();\n    bindMinutesSpanKeydown();\n    bindCloseButtonClick();\n    bindShowOnClick();\n    raiseCallback(this.options.init);\n  }\n\n  function raiseCallback(callbackFunction) {\n    if(callbackFunction && typeof callbackFunction === \"function\")\n      callbackFunction();\n  }\n\n  // Default options\n  ClockPicker.DEFAULTS = {\n    'default': '',         // default time, 'now' or '13:14' e.g.\n    fromnow: 0,            // set default time to * milliseconds from now (using with default = 'now')\n    donetext: 'OK',      // done button text\n    cleartext: 'Clear',    // clear button text\n    closetext: 'Cancel',\n    autoclose: false,      // auto close when minute is selected\n    darktheme: false,\t\t\t // set to dark theme\n    twelvehour: false,     // change to 12 hour AM/PM clock from 24 hour\n    vibrate: true,         // vibrate the device when dragging clock hand\n    hourstep: 1,           // allow to multi increment the hour\n    minutestep: 1,         // allow to multi increment the minute\n    inputshowpicker: false\n  };\n\n  // Show or hide popover\n  ClockPicker.prototype.toggle = function() {\n    this[this.isShown ? 'hide' : 'show']();\n  };\n\n  // Set popover position\n  ClockPicker.prototype.locate = function() {\n    var element = this.element,\n        popover = $('body').append(this.popover),\n        offset = element.offset(),\n        width = element.outerWidth(),\n        height = element.outerHeight(),\n        align = this.options.align,\n        self = this;\n\n    this.popover.show();\n  };\n\n  // The input can be changed by the user\n  // So before we can use this.hours/this.minutes we must update it\n  ClockPicker.prototype.parseInputValue = function(){\n    var value = this.input.prop('value') || this.options['default'] || '';\n\n    if (value === 'now') {\n      value = new Date(+ new Date() + this.options.fromnow);\n    }\n    if (value instanceof Date) {\n      value = value.getHours() + ':' + value.getMinutes();\n    }\n\n    value = value.split(':');\n\n    // Minutes can have AM/PM that needs to be removed\n    this.hours = + value[0] || 0;\n    this.minutes = + (value[1] + '').replace(/\\D/g, '') || 0;\n\n    this.hours = Math.round(this.hours / this.options.hourstep) * this.options.hourstep;\n    this.minutes = Math.round(this.minutes / this.options.minutestep) * this.options.minutestep;\n\n    if (this.options.twelvehour) {\n      var period = (value[1] + '').replace(/\\d+/g, '').toLowerCase();\n      this.amOrPm = this.hours > 12 || period === 'pm' ? 'PM' : 'AM';\n    }\n  };\n\n  // Show popover\n  ClockPicker.prototype.show = function(e){\n    // Not show again\n    if (this.isShown) {\n      return;\n    }\n\n    raiseCallback(this.options.beforeShow);\n    $(':input').each(function() {\n      $(this).attr('tabindex', -1);\n    });\n    \n    var self = this;\n    // Initialize\n    this.input.blur();\n    this.popover.addClass('picker--opened');\n    this.input.addClass('picker__input picker__input--active');\n\n    if (this.options.inputshowpicker) {\n      this.input.siblings('label').addClass('active');\n    }\n\n    $(document.body).css('overflow', 'hidden');\n    if (!this.isAppended) {\n      // Append popover to body\n      this.popover.insertAfter(this.input);\n      if(this.options.twelvehour) {\n        this.amOrPm = 'AM';\n        this.amPmBlock.children('.pm').removeClass('active');\n        this.amPmBlock.children('.am').addClass('active');\n      }\n      // Reset position when resize\n      $win.on('resize.clockpicker' + this.id, function() {\n        if (self.isShown) {\n          self.locate();\n        }\n      });\n      this.isAppended = true;\n    }\n    // Get the time\n    this.parseInputValue();\n\n    if (this.hours === 0) {\n      this.hours = this.minHours;\n    }\n    \n    this.hoursBeforeChange = this.hours;\n    this.minutesBeforeChange = this.minutes;\n\n    this.spanHours.html(leadingZero(this.hours));\n    this.spanMinutes.html(leadingZero(this.minutes));\n\n    if (this.options.twelvehour) {\n      this.togglePeriod(this.amOrPm);\n    }\n    \n    this.disableOutOfRangeElements();\n    // Toggle to hours view\n    this.toggleView('hours');\n    // Set position\n    this.locate();\n    this.isShown = true;\n    this.spanHours.focus();\n    // Hide when clicking or tabbing on any element except the clock and input\n    $doc.on('click.clockpicker.' + this.id + ' focusin.clockpicker.' + this.id, debounce(function(e) {\n      var target = $(e.target);\n      if (target.closest(self.popover.find('.picker__wrap')).length === 0 && target.closest(self.input).length === 0)\n        self.hide();\n    }, 100));\n    // Hide when ESC is pressed\n    $doc.on('keyup.clockpicker.' + this.id, debounce( function(e){\n      if (e.keyCode === 27)\n        self.hide();\n    },100));\n    raiseCallback(this.options.afterShow);\n  };\n  // Hide popover\n  ClockPicker.prototype.hide = function() {\n    raiseCallback(this.options.beforeHide);\n    this.input.removeClass('picker__input picker__input--active');\n    this.popover.removeClass('picker--opened');\n    $(document.body).css('overflow', 'visible');\n    this.isShown = false;\n    $(':input').each(function () {\n      $(this).attr('tabindex', 0);\n    });\n    // Unbinding events on document\n    $doc.off('click.clockpicker.' + this.id + ' focusin.clockpicker.' + this.id);\n    $doc.off('keyup.clockpicker.' + this.id);\n    this.input.trigger('blur');\n    this.popover.hide();\n    raiseCallback(this.options.afterHide);\n  };\n  \n  ClockPicker.prototype.close = function () {\n    this.hours = this.hoursBeforeChange;\n    this.minutes = this.minutesBeforeChange;\n\n    this.hide();\n  };\n  // set invalid or disable some elements if needed\n  ClockPicker.prototype.disableOutOfRangeElements = function() {\n    let {hours, minutes, currentView, isTwelvehour, amOrPm, maxHours, minHours, maxMinutes, minMinutes, options} = this;\n    const $hoursTick = $('.clockpicker-hours').children(),\n          $minutesTick = $('.clockpicker-minutes').children(),\n          $amBtn = $('.am'),\n          $pmBtn = $('.pm'),\n          $doneBtn = $('.done-button');\n\n    // disable am/pm switch btn when time is out of allow range for am/pm period\n    if (isTwelvehour && currentView === 'minutes') {\n      $doneBtn.removeClass('grey-text disabled');\n      if (amOrPm === 'AM' && !(hours + 12 <= maxHours) && options.max)\n        $pmBtn.addClass('disabled');\n      else if (amOrPm === 'PM' && !(hours >= minHours) && options.min)\n        $amBtn.addClass('disabled');\n    }    \n\n    // min and max hours is in 24h format, convert to 12h format if needed\n    if (isTwelvehour && amOrPm === 'PM') {\n      if (minHours < 12)\n        minHours = 0;\n\n      if (minHours > 12)\n        minHours -= 12;\n        \n      if (maxHours > 12)\n        maxHours -= 12; \n    }\n\n    // disable done btn when time is out of allow range \n    if (isTwelvehour && currentView === 'hours') {\n      $amBtn.removeClass('disabled');\n      $pmBtn.removeClass('disabled');\n\n      if (amOrPm === 'AM' && (!(hours >= minHours) || !(hours <= maxHours))) {\n        $doneBtn.addClass('grey-text disabled');\n      } else if (amOrPm === 'PM' && (!(hours >= minHours) || !(hours <= maxHours)) && options.max) {\n        $doneBtn.addClass('grey-text disabled');\n      } else {\n        $doneBtn.removeClass('grey-text disabled');\n      }\n    }\n\n    // disable done btn when time is out of allow range \n    if (currentView === 'minutes') {\n      if ((hours === minHours && minutes < minMinutes) || (hours === maxHours && minutes > maxMinutes))\n        $doneBtn.addClass('grey-text disabled');\n      else\n        $doneBtn.removeClass('grey-text disabled');\n    }\n\n    // set invalid if hours is out of allow range\n    if (currentView === 'hours') {\n      $hoursTick.each((index, el) => {\n        let hours = el.innerHTML;\n        \n        if (this.isTwelvehour && hours == 12)\n          hours = 0;\n        \n        if (hours > maxHours || hours < minHours)\n          $(el).addClass('grey-text disabled');\n        else\n          $(el).removeClass('grey-text disabled');\n      });\n    }\n\n    // set invalid if minutes is out of allow range\n    if (currentView === 'minutes') {\n      $minutesTick.each((index, el) => {\n        if (minHours == hours && el.innerHTML < minMinutes)\n          $(el).addClass('grey-text disabled');\n        else if (maxHours == hours && el.innerHTML > maxMinutes)\n          $(el).addClass('grey-text disabled');\n        else if (el.innerHTML % this.options.minutestep !== 0)\n          $(el).addClass('grey-text disabled');\n        else\n          $(el).removeClass('grey-text disabled');\n      });\n    }\n  };\n\n  // Toggle to hours or minutes view\n  ClockPicker.prototype.toggleView = function(view, delay) {\n    var raiseAfterHourSelect = false;\n    if (view === 'minutes' && $(this.hoursView).css(\"visibility\") === \"visible\") {\n      raiseCallback(this.options.beforeHourSelect);\n      raiseAfterHourSelect = true;\n    }\n    var isHours = view === 'hours',\n        nextView = isHours ? this.hoursView : this.minutesView,\n        hideView = isHours ? this.minutesView : this.hoursView;\n    this.currentView = view;\n    \n    this.spanHours.toggleClass('text-primary', isHours);\n    this.spanMinutes.toggleClass('text-primary', ! isHours);\n    \n    // Let's make transitions\n    hideView.addClass('clockpicker-dial-out');\n    nextView.css('visibility', 'visible').removeClass('clockpicker-dial-out');\n    \n    // Reset clock hand\n    this.resetClock(delay);\n\n    // After transitions ended\n    clearTimeout(this.toggleViewTimer);\n    this.toggleViewTimer = setTimeout(function() {\n      hideView.css('visibility', 'hidden');\n    }, duration);\n\n    this.disableOutOfRangeElements();\n\n    if (raiseAfterHourSelect)\n      raiseCallback(this.options.afterHourSelect);\n  };\n\n  ClockPicker.prototype.togglePeriod = function(period) {\n    let previsiousPeriod = 'pm';\n\n    if (period === 'PM')\n      previsiousPeriod = 'am';\n\n    this.amOrPm = period;\n    this.amPmBlock.children(`.${previsiousPeriod.toLowerCase()}`).removeClass('active');\n    this.amPmBlock.children(`.${period.toLowerCase()}`).addClass('active');\n\n    this.disableOutOfRangeElements();\n  };\n\n  // Reset clock hand\n  ClockPicker.prototype.resetClock = function(delay) {\n    var view = this.currentView,\n        value = this[view],\n        isHours = view === 'hours',\n        unit = Math.PI / (isHours ? 6 : 30),\n        radian = value * unit,\n        radius = isHours && value > 0 && value < 13 ? innerRadius : outerRadius,\n        x = Math.sin(radian) * radius,\n        y = - Math.cos(radian) * radius,\n        self = this;\n\n    if(svgSupported && delay) {\n      self.canvas.addClass('clockpicker-canvas-out');\n      setTimeout(function(){\n        self.canvas.removeClass('clockpicker-canvas-out');\n        self.setHand(x, y);\n      }, delay);\n    } else\n      this.setHand(x, y);\n  };\n\n  // Set clock hand to (x, y)\n  ClockPicker.prototype.setHand = function(x, y, roundBy5, dragging) {\n    var radian = Math.atan2(x, - y),\n        isHours = this.currentView === 'hours',\n        z = Math.sqrt(x * x + y * y),\n        options = this.options,\n        inner = isHours && z < (outerRadius + innerRadius) / 2,\n        radius = inner ? innerRadius : outerRadius,\n        unit,\n        value;\n\n    // Calculate the unit\n    if (isHours) {\n        unit = options.hourstep / 6 * Math.PI\n    } else {\n        unit = options.minutestep / 30 * Math.PI\n    }\n\n    if (options.twelvehour)\n      radius = outerRadius;\n\n    // Radian should in range [0, 2PI]\n    if (radian < 0)\n      radian = Math.PI * 2 + radian;\n\n    // Get the round value\n    value = Math.round(radian / unit);\n\n    // Get the round radian\n    radian = value * unit;\n    // Correct the hours or minutes\n    if (isHours) {\n      value *= options.hourstep;\n      if (! options.twelvehour && (!inner)==(value>0)) {\n        value += 12;\n      }\n      if (options.twelvehour && value === 0) {\n          value = 12;\n      }\n      if (value === 24) {\n          value = 0;\n      }\n    } else {\n      value *= options.minutestep;\n      if (value === 60) {\n          value = 0;\n      }\n    }\n    // disable action when out of allow range\n    let { minHours, maxHours, minMinutes, maxMinutes, amOrPm } = this;\n\n    if (isHours) {\n      let hours = value;         \n\n      if (this.amOrPm === 'PM') {\n        if (minHours < 12)\n          minHours = 0;\n        if (minHours > 12)\n          minHours -= 12;\n        if (maxHours > 12)\n          maxHours -= 12;\n      }\n        \n      if (this.isTwelvehour && hours == 12)\n        hours = 0;\n\n      if (hours < minHours || hours > maxHours){\n        this.isInvalidTimeScope = true;\n        return;\n      }\n\n      if (this.isTwelvehour && hours === 12) {\n        this.isInvalidTimeScope = true;\n        return;\n      }\n    } else  {\n      let { hours } = this;\n\n      if (amOrPm === 'PM')\n        hours += 12;\n\n      if ((hours == minHours && value < minMinutes) || (hours == maxHours && value > maxMinutes)) {\n        this.isInvalidTimeScope = true;\n        return;\n      }\n    }\n\n    if (isHours)\n      this.fg.setAttribute('class', 'clockpicker-canvas-fg');\n    else {\n      if (value % 5 == 0)\n        this.fg.setAttribute('class', 'clockpicker-canvas-fg');\n      else\n        this.fg.setAttribute('class', 'clockpicker-canvas-fg active');\n    }\n\n    // Once hours or minutes changed, vibrate the device\n    if (this[this.currentView] !== value)\n      if (vibrate && this.options.vibrate)\n        // Do not vibrate too frequently\n        if (! this.vibrateTimer) {\n          navigator[vibrate](10);\n          this.vibrateTimer = setTimeout($.proxy(function(){\n            this.vibrateTimer = null;\n          }, this), 100);\n        }\n    this[this.currentView] = value;\n    this[isHours ? 'spanHours' : 'spanMinutes'].html(leadingZero(value));\n\n    // If svg is not supported, just add an active class to the tick\n    if (! svgSupported) {\n      this[isHours ? 'hoursView' : 'minutesView'].find('.clockpicker-tick').each(function(){\n        var tick = $(this);\n        tick.toggleClass('active', value === + tick.html());\n      });\n      return;\n    }\n\n    // Place clock hand at the top when dragging\n    if (dragging || (! isHours && value % 5)) {\n      this.g.insertBefore(this.hand, this.bearing);\n      this.g.insertBefore(this.bg, this.fg);\n      this.bg.setAttribute('class', 'clockpicker-canvas-bg clockpicker-canvas-bg-trans');\n    } else {\n      // Or place it at the bottom\n      this.g.insertBefore(this.hand, this.bg);\n      this.g.insertBefore(this.fg, this.bg);\n      this.bg.setAttribute('class', 'clockpicker-canvas-bg');\n    }\n\n    // Set clock hand and others' position\n    var cx = Math.sin(radian) * radius,\n      cy = - Math.cos(radian) * radius;\n    this.hand.setAttribute('x2', cx);\n    this.hand.setAttribute('y2', cy);\n    this.bg.setAttribute('cx', cx);\n    this.bg.setAttribute('cy', cy);\n    this.fg.setAttribute('cx', cx);\n    this.fg.setAttribute('cy', cy);\n  };\n\n    // Clear clock text\n  ClockPicker.prototype.clearInput = function() {\n    this.input.val('');\n    this.hide();\n\n    if(this.options.afterDone && typeof this.options.afterDone === 'function')\n      this.options.afterDone(this.input, null);\n  };\n\n    // Allow user to get time as Date object\n  ClockPicker.prototype.getTime = function(callback) {\n    this.parseInputValue();\n\n    var hours = this.hours;\n    if (this.options.twelvehour && hours < 12 && this.amOrPm === 'PM') {\n        hours += 12;\n    }\n\n    var selectedTime = new Date();\n    selectedTime.setMinutes(this.minutes)\n    selectedTime.setHours(hours);\n    selectedTime.setSeconds(0);\n\n    return callback && callback.apply(this.element, selectedTime) || selectedTime;\n  };\n\n  // Hours and minutes are selected\n  ClockPicker.prototype.done = function() {\n    raiseCallback(this.options.beforeDone);\n    this.hide();\n    this.label.addClass('active');\n\n    var last = this.input.prop('value'),\n      outHours = this.hours,\n      value = ':' + leadingZero(this.minutes);\n\n    if (this.isHTML5 && this.options.twelvehour) {\n        if (this.hours < 12 && this.amOrPm === 'PM') {\n            outHours += 12;\n        }\n        if (this.hours === 12 && this.amOrPm === 'AM') {\n            outHours = 0;\n        }\n    }\n\n    value = leadingZero(outHours) + value;\n\n    if (!this.isHTML5 && this.options.twelvehour) {\n          value = value + this.amOrPm;\n    }\n\n    this.input.prop('value', value);\n    if(value !== last) {\n      this.input.trigger('change');\n    }\n\n    if(this.options.autoclose)\n      this.input.trigger('blur');\n\n    raiseCallback(this.options.afterDone);\n  };\n\n  // Remove clockpicker from input\n  ClockPicker.prototype.remove = function() {\n    this.element.removeData('clockpicker');\n    this.input.off('focus.clockpicker click.clockpicker');\n    if (this.isShown)\n      this.hide();\n    if (this.isAppended) {\n      $win.off('resize.clockpicker' + this.id);\n      this.popover.remove();\n    }\n  };\n\n  // Extends $.fn.clockpicker\n  $.fn.timepicker = function(option){\n    var args = Array.prototype.slice.call(arguments, 1);\n    function handleClockPickerRequest(){\n      var $this = $(this),\n          data = $this.data('clockpicker');\n      if (!data) {\n        $this.data('clockpicker', new ClockPicker($this));\n      } else {\n        // Manual operations. show, hide, remove, e.g.\n        if (typeof data[option] === 'function')\n          data[option].apply(data, args);\n      }\n    }\n    \n    // If we explicitly do a call on a single element then we can return the value (if needed)\n    // This allows us, for example, to return the value of getTime\n    if (this.length == 1) {\n      var returnValue = handleClockPickerRequest.apply(this[0]);\n\n      // If we do not have any return value then return the object itself so you can chain\n      return returnValue !== undefined ? returnValue : this;\n    }\n\n    // If we do have a list then we do not care about return values\n    return this.each(handleClockPickerRequest);\n  };\n\n  // autoinit timepicker\n  $('div.timepicker').timepicker();\n\n  $('#time-picker-opener').on('click', e => {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\tconst openElementData = e.target.dataset.open;\n\t\tconst $picker = $(`#${openElementData}`).timepicker('picker');\n\t\t$picker.data('clockpicker').show();\n\t});\n});\n"],"sourceRoot":""}