@evercam/ui 0.0.38-alpha.1 → 0.0.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/types.ts","../src/components/EBadge.vue?vue&type=script&lang.ts","../src/components/EAvatar.vue?vue&type=script&lang.ts","../node_modules/tailwindcss/lib/util/negateValue.js","../node_modules/tailwindcss/lib/corePluginList.js","../node_modules/tailwindcss/lib/util/configurePlugins.js","../node_modules/picocolors/picocolors.browser.js","../node_modules/tailwindcss/lib/util/log.js","../node_modules/tailwindcss/lib/public/colors.js","../node_modules/tailwindcss/lib/util/defaults.js","../node_modules/tailwindcss/lib/util/toPath.js","../node_modules/tailwindcss/lib/featureFlags.js","../node_modules/tailwindcss/lib/util/normalizeConfig.js","../node_modules/tailwindcss/lib/util/isPlainObject.js","../node_modules/tailwindcss/lib/util/cloneDeep.js","../node_modules/tailwindcss/lib/util/escapeCommas.js","../node_modules/tailwindcss/lib/util/colorNames.js","../node_modules/tailwindcss/lib/util/color.js","../node_modules/tailwindcss/lib/util/withAlphaVariable.js","../node_modules/tailwindcss/lib/util/splitAtTopLevelOnly.js","../node_modules/tailwindcss/lib/util/parseBoxShadowValue.js","../node_modules/tailwindcss/lib/util/dataTypes.js","../node_modules/tailwindcss/lib/util/validateFormalSyntax.js","../node_modules/tailwindcss/lib/util/pluginUtils.js","../node_modules/tailwindcss/lib/util/toColorValue.js","../node_modules/tailwindcss/lib/util/resolveConfig.js","../node_modules/tailwindcss/stubs/config.full.js","../node_modules/tailwindcss/lib/util/getAllConfigs.js","../node_modules/tailwindcss/lib/public/resolve-config.js","../node_modules/tailwindcss/resolveConfig.js","../node_modules/tailwindcss/colors.js","../config.ts","../src/constants.ts","../src/components/EIcon.vue?vue&type=script&lang.ts","../src/components/ESpinner.vue?vue&type=script&lang.ts","../src/components/ERow.vue?vue&type=script&lang.ts","../src/components/ECol.vue?vue&type=script&lang.ts","../src/utils.ts","../src/components/EVideoPlayer.vue?vue&type=script&lang.ts","../src/components/ETimeline.config.ts","../src/directives/resize-observer.ts","../src/directives/index.ts","../node_modules/moment/dist/moment.js","../node_modules/moment-timezone/moment-timezone.js","../node_modules/moment-timezone/index.js","../src/components/ETimeline.vue?vue&type=script&lang.ts","../src/index.ts"],"sourcesContent":["import { BadgeSizes, AvatarSizes, IconSizes, BadgeColors } from \"@/constants\"\n\nexport enum Size {\n dot = \"dot\",\n xs = \"xs\",\n sm = \"sm\",\n md = \"base\",\n base = \"base\",\n lg = \"lg\",\n xl = \"xl\",\n \"2xl\" = \"2xl\",\n \"3xl\" = \"3xl\",\n \"4xl\" = \"4xl\",\n \"5xl\" = \"5xl\",\n \"6xl\" = \"6xl\",\n \"7xl\" = \"7xl\",\n \"8xl\" = \"8xl\",\n \"9xl\" = \"9xl\",\n}\n\nexport enum BaseColor {\n warning = \"warning\",\n error = \"error\",\n info = \"info\",\n success = \"success\",\n primary = \"primary\",\n brand = \"brand\",\n default = \"default\",\n}\n\nexport type TBadgeSize = (typeof BadgeSizes)[number]\n\nexport type TAvatarSize = (typeof AvatarSizes)[number]\n\nexport type TIconSize = (typeof IconSizes)[number]\n\nexport type TBadgeColor = (typeof BadgeColors)[number]\n\nexport type TailwindColorClass = string\n\nexport type FlexJustifyContent =\n | \"around\"\n | \"between\"\n | \"center\"\n | \"end\"\n | \"evenly\"\n | \"normal\"\n | \"start\"\n | \"stretch\"\n\nexport type FlexAlignItems = \"start\" | \"center\" | \"end\" | \"baseline\" | \"stretch\"\n\nexport type FlexAlignContent =\n | \"around\"\n | \"baseline\"\n | \"between\"\n | \"center\"\n | \"end\"\n | \"evenly\"\n | \"normal\"\n | \"start\"\n | \"stretch\"\n\nexport type FlexAlignSelf =\n | \"auto\"\n | \"baseline\"\n | \"center\"\n | \"end\"\n | \"start\"\n | \"stretch\"\n\nexport enum TimelineAxis {\n overview = \"overview\",\n detailed = \"detailed\",\n detailedBackground = \"detailedBackground\",\n}\n\nexport type TimelineTicksConfig = {\n precision: number\n interval: any\n format: string | ((d: Date) => string)\n}\n\nexport type TimelineAxesConfig = {\n [key in TimelineAxis]: TimelineTicksConfig[]\n}\n\nexport type Timestamp = Date | string | number\n\nexport default {}\n","\nimport Vue, { PropType } from \"vue\"\nimport { BaseColor, Size, TBadgeColor, TBadgeSize } from \"@/types\"\n\nexport default Vue.extend({\n name: \"EBadge\",\n props: {\n text: {\n type: String,\n default: \"\",\n },\n color: {\n type: String as PropType<TBadgeColor>,\n default: BaseColor.default,\n },\n size: {\n type: String as PropType<TBadgeSize>,\n default: Size.base,\n },\n },\n data() {\n return {\n colors: {\n [BaseColor.error]: \"e-bg-rose-500 e-text-white\",\n [BaseColor.info]: \"e-bg-cyan-500 e-text-white\",\n [BaseColor.warning]: \"e-bg-amber-500 e-text-white\",\n [BaseColor.primary]: \"e-bg-sky-500 e-text-white\",\n [BaseColor.default]: \"e-bg-slate-300 e-text-white\",\n [BaseColor.success]: \"e-bg-lime-500 e-text-white\",\n },\n sizes: {\n [Size.dot]: \"e-w-2 e-h-2\",\n [Size.xs]: \"e-w-3 e-h-3\",\n [Size.sm]: \"e-w-4 e-h-4\",\n [Size.md]: \"e-w-5 e-h-5\",\n [Size.lg]:\n \"e-min-w-[2rem] e-max-w-[4rem] e-px-1 e-h-6 e-text-sm e-font-medium\",\n [Size.xl]:\n \"e-min-w-[3rem] e-max-w-[5rem] e-px-1 e-h-8 e-text-base e-font-medium\",\n },\n }\n },\n computed: {\n badgeClasses(): string[] {\n const colorClasses =\n this.colors[this.color] || this.colors[BaseColor.default]\n const sizeClasses = this.sizes[this.size] || this.sizes[Size.md]\n\n return [\n \"e-flex e-items-center e-justify-center e-rounded-full\",\n colorClasses,\n sizeClasses,\n ]\n },\n showText(): boolean {\n return [Size.lg, Size.xl].includes(this.size)\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport Badge from \"@/components/EBadge.vue\"\nimport { BaseColor, Size, TAvatarSize, TBadgeColor, TBadgeSize } from \"@/types\"\n\nexport default Vue.extend({\n name: \"EAvatar\",\n components: {\n Badge,\n },\n props: {\n size: {\n type: String as PropType<TAvatarSize>,\n default: Size.md,\n },\n showBadge: {\n type: Boolean,\n default: false,\n },\n badgeColor: {\n type: String as PropType<TBadgeColor>,\n default: BaseColor.error,\n },\n badgeText: {\n type: String,\n default: \"\",\n },\n badgeSize: {\n type: String as PropType<TBadgeSize>,\n default: Size.md,\n },\n image: {\n type: String,\n default: \"\",\n },\n },\n data() {\n return {\n sizes: {\n [Size.xs]: \"e-w-8 e-h-8 e-text-xs\",\n [Size.sm]: \"e-w-10 e-h-10 e-text-sm\",\n [Size.md]: \"e-w-14 e-h-14 e-text-base\",\n [Size.lg]: \"e-w-20 e-h-20 e-text-2xl\",\n [Size.xl]: \"e-w-28 e-h-28 e-text-3xl\",\n [Size[\"2xl\"]]: \"e-w-36 e-h-36 e-text-5xl\",\n },\n }\n },\n computed: {\n avatarClasses(): string[] {\n const sizeClasses = this.sizes[this.size] || this.sizes[Size.xs]\n\n return [\n \"e-flex e-items-center e-justify-center e-rounded-full e-bg-purple-500 e-text-white e-font-medium\",\n sizeClasses,\n ]\n },\n },\n})\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return negateValue;\n }\n});\nfunction negateValue(value) {\n value = `${value}`;\n if (value === \"0\") {\n return \"0\";\n }\n // Flip sign of numbers\n if (/^[+-]?(\\d+|\\d*\\.\\d+)(e[+-]?\\d+)?(%|\\w+)?$/.test(value)) {\n return value.replace(/^[+-]?/, (sign)=>sign === \"-\" ? \"\" : \"-\");\n }\n // What functions we support negating numeric values for\n // var() isn't inherently a numeric function but we support it anyway\n // The trigonometric functions are omitted because you'll need to use calc(…) with them _anyway_\n // to produce generally useful results and that will be covered already\n let numericFunctions = [\n \"var\",\n \"calc\",\n \"min\",\n \"max\",\n \"clamp\"\n ];\n for (const fn of numericFunctions){\n if (value.includes(`${fn}(`)) {\n return `calc(${value} * -1)`;\n }\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _default = [\n \"preflight\",\n \"container\",\n \"accessibility\",\n \"pointerEvents\",\n \"visibility\",\n \"position\",\n \"inset\",\n \"isolation\",\n \"zIndex\",\n \"order\",\n \"gridColumn\",\n \"gridColumnStart\",\n \"gridColumnEnd\",\n \"gridRow\",\n \"gridRowStart\",\n \"gridRowEnd\",\n \"float\",\n \"clear\",\n \"margin\",\n \"boxSizing\",\n \"lineClamp\",\n \"display\",\n \"aspectRatio\",\n \"height\",\n \"maxHeight\",\n \"minHeight\",\n \"width\",\n \"minWidth\",\n \"maxWidth\",\n \"flex\",\n \"flexShrink\",\n \"flexGrow\",\n \"flexBasis\",\n \"tableLayout\",\n \"captionSide\",\n \"borderCollapse\",\n \"borderSpacing\",\n \"transformOrigin\",\n \"translate\",\n \"rotate\",\n \"skew\",\n \"scale\",\n \"transform\",\n \"animation\",\n \"cursor\",\n \"touchAction\",\n \"userSelect\",\n \"resize\",\n \"scrollSnapType\",\n \"scrollSnapAlign\",\n \"scrollSnapStop\",\n \"scrollMargin\",\n \"scrollPadding\",\n \"listStylePosition\",\n \"listStyleType\",\n \"listStyleImage\",\n \"appearance\",\n \"columns\",\n \"breakBefore\",\n \"breakInside\",\n \"breakAfter\",\n \"gridAutoColumns\",\n \"gridAutoFlow\",\n \"gridAutoRows\",\n \"gridTemplateColumns\",\n \"gridTemplateRows\",\n \"flexDirection\",\n \"flexWrap\",\n \"placeContent\",\n \"placeItems\",\n \"alignContent\",\n \"alignItems\",\n \"justifyContent\",\n \"justifyItems\",\n \"gap\",\n \"space\",\n \"divideWidth\",\n \"divideStyle\",\n \"divideColor\",\n \"divideOpacity\",\n \"placeSelf\",\n \"alignSelf\",\n \"justifySelf\",\n \"overflow\",\n \"overscrollBehavior\",\n \"scrollBehavior\",\n \"textOverflow\",\n \"hyphens\",\n \"whitespace\",\n \"wordBreak\",\n \"borderRadius\",\n \"borderWidth\",\n \"borderStyle\",\n \"borderColor\",\n \"borderOpacity\",\n \"backgroundColor\",\n \"backgroundOpacity\",\n \"backgroundImage\",\n \"gradientColorStops\",\n \"boxDecorationBreak\",\n \"backgroundSize\",\n \"backgroundAttachment\",\n \"backgroundClip\",\n \"backgroundPosition\",\n \"backgroundRepeat\",\n \"backgroundOrigin\",\n \"fill\",\n \"stroke\",\n \"strokeWidth\",\n \"objectFit\",\n \"objectPosition\",\n \"padding\",\n \"textAlign\",\n \"textIndent\",\n \"verticalAlign\",\n \"fontFamily\",\n \"fontSize\",\n \"fontWeight\",\n \"textTransform\",\n \"fontStyle\",\n \"fontVariantNumeric\",\n \"lineHeight\",\n \"letterSpacing\",\n \"textColor\",\n \"textOpacity\",\n \"textDecoration\",\n \"textDecorationColor\",\n \"textDecorationStyle\",\n \"textDecorationThickness\",\n \"textUnderlineOffset\",\n \"fontSmoothing\",\n \"placeholderColor\",\n \"placeholderOpacity\",\n \"caretColor\",\n \"accentColor\",\n \"opacity\",\n \"backgroundBlendMode\",\n \"mixBlendMode\",\n \"boxShadow\",\n \"boxShadowColor\",\n \"outlineStyle\",\n \"outlineWidth\",\n \"outlineOffset\",\n \"outlineColor\",\n \"ringWidth\",\n \"ringColor\",\n \"ringOpacity\",\n \"ringOffsetWidth\",\n \"ringOffsetColor\",\n \"blur\",\n \"brightness\",\n \"contrast\",\n \"dropShadow\",\n \"grayscale\",\n \"hueRotate\",\n \"invert\",\n \"saturate\",\n \"sepia\",\n \"filter\",\n \"backdropBlur\",\n \"backdropBrightness\",\n \"backdropContrast\",\n \"backdropGrayscale\",\n \"backdropHueRotate\",\n \"backdropInvert\",\n \"backdropOpacity\",\n \"backdropSaturate\",\n \"backdropSepia\",\n \"backdropFilter\",\n \"transitionProperty\",\n \"transitionDelay\",\n \"transitionDuration\",\n \"transitionTimingFunction\",\n \"willChange\",\n \"content\"\n];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nfunction _default(pluginConfig, plugins) {\n if (pluginConfig === undefined) {\n return plugins;\n }\n const pluginNames = Array.isArray(pluginConfig) ? pluginConfig : [\n ...new Set(plugins.filter((pluginName)=>{\n return pluginConfig !== false && pluginConfig[pluginName] !== false;\n }).concat(Object.keys(pluginConfig).filter((pluginName)=>{\n return pluginConfig[pluginName] !== false;\n })))\n ];\n return pluginNames;\n}\n","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n dim: function() {\n return dim;\n },\n default: function() {\n return _default;\n }\n});\nconst _picocolors = /*#__PURE__*/ _interop_require_default(require(\"picocolors\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet alreadyShown = new Set();\nfunction log(type, messages, key) {\n if (typeof process !== \"undefined\" && process.env.JEST_WORKER_ID) return;\n if (key && alreadyShown.has(key)) return;\n if (key) alreadyShown.add(key);\n console.warn(\"\");\n messages.forEach((message)=>console.warn(type, \"-\", message));\n}\nfunction dim(input) {\n return _picocolors.default.dim(input);\n}\nconst _default = {\n info (key, messages) {\n log(_picocolors.default.bold(_picocolors.default.cyan(\"info\")), ...Array.isArray(key) ? [\n key\n ] : [\n messages,\n key\n ]);\n },\n warn (key, messages) {\n log(_picocolors.default.bold(_picocolors.default.yellow(\"warn\")), ...Array.isArray(key) ? [\n key\n ] : [\n messages,\n key\n ]);\n },\n risk (key, messages) {\n log(_picocolors.default.bold(_picocolors.default.magenta(\"risk\")), ...Array.isArray(key) ? [\n key\n ] : [\n messages,\n key\n ]);\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _log = /*#__PURE__*/ _interop_require_default(require(\"../util/log\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction warn({ version , from , to }) {\n _log.default.warn(`${from}-color-renamed`, [\n `As of Tailwind CSS ${version}, \\`${from}\\` has been renamed to \\`${to}\\`.`,\n \"Update your configuration file to silence this warning.\"\n ]);\n}\nconst _default = {\n inherit: \"inherit\",\n current: \"currentColor\",\n transparent: \"transparent\",\n black: \"#000\",\n white: \"#fff\",\n slate: {\n 50: \"#f8fafc\",\n 100: \"#f1f5f9\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e1\",\n 400: \"#94a3b8\",\n 500: \"#64748b\",\n 600: \"#475569\",\n 700: \"#334155\",\n 800: \"#1e293b\",\n 900: \"#0f172a\",\n 950: \"#020617\"\n },\n gray: {\n 50: \"#f9fafb\",\n 100: \"#f3f4f6\",\n 200: \"#e5e7eb\",\n 300: \"#d1d5db\",\n 400: \"#9ca3af\",\n 500: \"#6b7280\",\n 600: \"#4b5563\",\n 700: \"#374151\",\n 800: \"#1f2937\",\n 900: \"#111827\",\n 950: \"#030712\"\n },\n zinc: {\n 50: \"#fafafa\",\n 100: \"#f4f4f5\",\n 200: \"#e4e4e7\",\n 300: \"#d4d4d8\",\n 400: \"#a1a1aa\",\n 500: \"#71717a\",\n 600: \"#52525b\",\n 700: \"#3f3f46\",\n 800: \"#27272a\",\n 900: \"#18181b\",\n 950: \"#09090b\"\n },\n neutral: {\n 50: \"#fafafa\",\n 100: \"#f5f5f5\",\n 200: \"#e5e5e5\",\n 300: \"#d4d4d4\",\n 400: \"#a3a3a3\",\n 500: \"#737373\",\n 600: \"#525252\",\n 700: \"#404040\",\n 800: \"#262626\",\n 900: \"#171717\",\n 950: \"#0a0a0a\"\n },\n stone: {\n 50: \"#fafaf9\",\n 100: \"#f5f5f4\",\n 200: \"#e7e5e4\",\n 300: \"#d6d3d1\",\n 400: \"#a8a29e\",\n 500: \"#78716c\",\n 600: \"#57534e\",\n 700: \"#44403c\",\n 800: \"#292524\",\n 900: \"#1c1917\",\n 950: \"#0c0a09\"\n },\n red: {\n 50: \"#fef2f2\",\n 100: \"#fee2e2\",\n 200: \"#fecaca\",\n 300: \"#fca5a5\",\n 400: \"#f87171\",\n 500: \"#ef4444\",\n 600: \"#dc2626\",\n 700: \"#b91c1c\",\n 800: \"#991b1b\",\n 900: \"#7f1d1d\",\n 950: \"#450a0a\"\n },\n orange: {\n 50: \"#fff7ed\",\n 100: \"#ffedd5\",\n 200: \"#fed7aa\",\n 300: \"#fdba74\",\n 400: \"#fb923c\",\n 500: \"#f97316\",\n 600: \"#ea580c\",\n 700: \"#c2410c\",\n 800: \"#9a3412\",\n 900: \"#7c2d12\",\n 950: \"#431407\"\n },\n amber: {\n 50: \"#fffbeb\",\n 100: \"#fef3c7\",\n 200: \"#fde68a\",\n 300: \"#fcd34d\",\n 400: \"#fbbf24\",\n 500: \"#f59e0b\",\n 600: \"#d97706\",\n 700: \"#b45309\",\n 800: \"#92400e\",\n 900: \"#78350f\",\n 950: \"#451a03\"\n },\n yellow: {\n 50: \"#fefce8\",\n 100: \"#fef9c3\",\n 200: \"#fef08a\",\n 300: \"#fde047\",\n 400: \"#facc15\",\n 500: \"#eab308\",\n 600: \"#ca8a04\",\n 700: \"#a16207\",\n 800: \"#854d0e\",\n 900: \"#713f12\",\n 950: \"#422006\"\n },\n lime: {\n 50: \"#f7fee7\",\n 100: \"#ecfccb\",\n 200: \"#d9f99d\",\n 300: \"#bef264\",\n 400: \"#a3e635\",\n 500: \"#84cc16\",\n 600: \"#65a30d\",\n 700: \"#4d7c0f\",\n 800: \"#3f6212\",\n 900: \"#365314\",\n 950: \"#1a2e05\"\n },\n green: {\n 50: \"#f0fdf4\",\n 100: \"#dcfce7\",\n 200: \"#bbf7d0\",\n 300: \"#86efac\",\n 400: \"#4ade80\",\n 500: \"#22c55e\",\n 600: \"#16a34a\",\n 700: \"#15803d\",\n 800: \"#166534\",\n 900: \"#14532d\",\n 950: \"#052e16\"\n },\n emerald: {\n 50: \"#ecfdf5\",\n 100: \"#d1fae5\",\n 200: \"#a7f3d0\",\n 300: \"#6ee7b7\",\n 400: \"#34d399\",\n 500: \"#10b981\",\n 600: \"#059669\",\n 700: \"#047857\",\n 800: \"#065f46\",\n 900: \"#064e3b\",\n 950: \"#022c22\"\n },\n teal: {\n 50: \"#f0fdfa\",\n 100: \"#ccfbf1\",\n 200: \"#99f6e4\",\n 300: \"#5eead4\",\n 400: \"#2dd4bf\",\n 500: \"#14b8a6\",\n 600: \"#0d9488\",\n 700: \"#0f766e\",\n 800: \"#115e59\",\n 900: \"#134e4a\",\n 950: \"#042f2e\"\n },\n cyan: {\n 50: \"#ecfeff\",\n 100: \"#cffafe\",\n 200: \"#a5f3fc\",\n 300: \"#67e8f9\",\n 400: \"#22d3ee\",\n 500: \"#06b6d4\",\n 600: \"#0891b2\",\n 700: \"#0e7490\",\n 800: \"#155e75\",\n 900: \"#164e63\",\n 950: \"#083344\"\n },\n sky: {\n 50: \"#f0f9ff\",\n 100: \"#e0f2fe\",\n 200: \"#bae6fd\",\n 300: \"#7dd3fc\",\n 400: \"#38bdf8\",\n 500: \"#0ea5e9\",\n 600: \"#0284c7\",\n 700: \"#0369a1\",\n 800: \"#075985\",\n 900: \"#0c4a6e\",\n 950: \"#082f49\"\n },\n blue: {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 900: \"#1e3a8a\",\n 950: \"#172554\"\n },\n indigo: {\n 50: \"#eef2ff\",\n 100: \"#e0e7ff\",\n 200: \"#c7d2fe\",\n 300: \"#a5b4fc\",\n 400: \"#818cf8\",\n 500: \"#6366f1\",\n 600: \"#4f46e5\",\n 700: \"#4338ca\",\n 800: \"#3730a3\",\n 900: \"#312e81\",\n 950: \"#1e1b4b\"\n },\n violet: {\n 50: \"#f5f3ff\",\n 100: \"#ede9fe\",\n 200: \"#ddd6fe\",\n 300: \"#c4b5fd\",\n 400: \"#a78bfa\",\n 500: \"#8b5cf6\",\n 600: \"#7c3aed\",\n 700: \"#6d28d9\",\n 800: \"#5b21b6\",\n 900: \"#4c1d95\",\n 950: \"#2e1065\"\n },\n purple: {\n 50: \"#faf5ff\",\n 100: \"#f3e8ff\",\n 200: \"#e9d5ff\",\n 300: \"#d8b4fe\",\n 400: \"#c084fc\",\n 500: \"#a855f7\",\n 600: \"#9333ea\",\n 700: \"#7e22ce\",\n 800: \"#6b21a8\",\n 900: \"#581c87\",\n 950: \"#3b0764\"\n },\n fuchsia: {\n 50: \"#fdf4ff\",\n 100: \"#fae8ff\",\n 200: \"#f5d0fe\",\n 300: \"#f0abfc\",\n 400: \"#e879f9\",\n 500: \"#d946ef\",\n 600: \"#c026d3\",\n 700: \"#a21caf\",\n 800: \"#86198f\",\n 900: \"#701a75\",\n 950: \"#4a044e\"\n },\n pink: {\n 50: \"#fdf2f8\",\n 100: \"#fce7f3\",\n 200: \"#fbcfe8\",\n 300: \"#f9a8d4\",\n 400: \"#f472b6\",\n 500: \"#ec4899\",\n 600: \"#db2777\",\n 700: \"#be185d\",\n 800: \"#9d174d\",\n 900: \"#831843\",\n 950: \"#500724\"\n },\n rose: {\n 50: \"#fff1f2\",\n 100: \"#ffe4e6\",\n 200: \"#fecdd3\",\n 300: \"#fda4af\",\n 400: \"#fb7185\",\n 500: \"#f43f5e\",\n 600: \"#e11d48\",\n 700: \"#be123c\",\n 800: \"#9f1239\",\n 900: \"#881337\",\n 950: \"#4c0519\"\n },\n get lightBlue () {\n warn({\n version: \"v2.2\",\n from: \"lightBlue\",\n to: \"sky\"\n });\n return this.sky;\n },\n get warmGray () {\n warn({\n version: \"v3.0\",\n from: \"warmGray\",\n to: \"stone\"\n });\n return this.stone;\n },\n get trueGray () {\n warn({\n version: \"v3.0\",\n from: \"trueGray\",\n to: \"neutral\"\n });\n return this.neutral;\n },\n get coolGray () {\n warn({\n version: \"v3.0\",\n from: \"coolGray\",\n to: \"gray\"\n });\n return this.gray;\n },\n get blueGray () {\n warn({\n version: \"v3.0\",\n from: \"blueGray\",\n to: \"slate\"\n });\n return this.slate;\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"defaults\", {\n enumerable: true,\n get: function() {\n return defaults;\n }\n});\nfunction defaults(target, ...sources) {\n for (let source of sources){\n for(let k in source){\n var _target_hasOwnProperty;\n if (!(target === null || target === void 0 ? void 0 : (_target_hasOwnProperty = target.hasOwnProperty) === null || _target_hasOwnProperty === void 0 ? void 0 : _target_hasOwnProperty.call(target, k))) {\n target[k] = source[k];\n }\n }\n for (let k of Object.getOwnPropertySymbols(source)){\n var _target_hasOwnProperty1;\n if (!(target === null || target === void 0 ? void 0 : (_target_hasOwnProperty1 = target.hasOwnProperty) === null || _target_hasOwnProperty1 === void 0 ? void 0 : _target_hasOwnProperty1.call(target, k))) {\n target[k] = source[k];\n }\n }\n }\n return target;\n}\n","/**\n * Parse a path string into an array of path segments.\n *\n * Square bracket notation `a[b]` may be used to \"escape\" dots that would otherwise be interpreted as path separators.\n *\n * Example:\n * a -> ['a']\n * a.b.c -> ['a', 'b', 'c']\n * a[b].c -> ['a', 'b', 'c']\n * a[b.c].e.f -> ['a', 'b.c', 'e', 'f']\n * a[b][c][d] -> ['a', 'b', 'c', 'd']\n *\n * @param {string|string[]} path\n **/ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"toPath\", {\n enumerable: true,\n get: function() {\n return toPath;\n }\n});\nfunction toPath(path) {\n if (Array.isArray(path)) return path;\n let openBrackets = path.split(\"[\").length - 1;\n let closedBrackets = path.split(\"]\").length - 1;\n if (openBrackets !== closedBrackets) {\n throw new Error(`Path is invalid. Has unbalanced brackets: ${path}`);\n }\n return path.split(/\\.(?![^\\[]*\\])|[\\[\\]]/g).filter(Boolean);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n flagEnabled: function() {\n return flagEnabled;\n },\n issueFlagNotices: function() {\n return issueFlagNotices;\n },\n default: function() {\n return _default;\n }\n});\nconst _picocolors = /*#__PURE__*/ _interop_require_default(require(\"picocolors\"));\nconst _log = /*#__PURE__*/ _interop_require_default(require(\"./util/log\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet defaults = {\n optimizeUniversalDefaults: false,\n generalizedModifiers: true,\n get disableColorOpacityUtilitiesByDefault () {\n return false;\n },\n get relativeContentPathsByDefault () {\n return false;\n }\n};\nlet featureFlags = {\n future: [\n \"hoverOnlyWhenSupported\",\n \"respectDefaultRingColorOpacity\",\n \"disableColorOpacityUtilitiesByDefault\",\n \"relativeContentPathsByDefault\"\n ],\n experimental: [\n \"optimizeUniversalDefaults\",\n \"generalizedModifiers\"\n ]\n};\nfunction flagEnabled(config, flag) {\n if (featureFlags.future.includes(flag)) {\n var _config_future;\n var _config_future_flag, _ref;\n return config.future === \"all\" || ((_ref = (_config_future_flag = config === null || config === void 0 ? void 0 : (_config_future = config.future) === null || _config_future === void 0 ? void 0 : _config_future[flag]) !== null && _config_future_flag !== void 0 ? _config_future_flag : defaults[flag]) !== null && _ref !== void 0 ? _ref : false);\n }\n if (featureFlags.experimental.includes(flag)) {\n var _config_experimental;\n var _config_experimental_flag, _ref1;\n return config.experimental === \"all\" || ((_ref1 = (_config_experimental_flag = config === null || config === void 0 ? void 0 : (_config_experimental = config.experimental) === null || _config_experimental === void 0 ? void 0 : _config_experimental[flag]) !== null && _config_experimental_flag !== void 0 ? _config_experimental_flag : defaults[flag]) !== null && _ref1 !== void 0 ? _ref1 : false);\n }\n return false;\n}\nfunction experimentalFlagsEnabled(config) {\n if (config.experimental === \"all\") {\n return featureFlags.experimental;\n }\n var _config_experimental;\n return Object.keys((_config_experimental = config === null || config === void 0 ? void 0 : config.experimental) !== null && _config_experimental !== void 0 ? _config_experimental : {}).filter((flag)=>featureFlags.experimental.includes(flag) && config.experimental[flag]);\n}\nfunction issueFlagNotices(config) {\n if (process.env.JEST_WORKER_ID !== undefined) {\n return;\n }\n if (experimentalFlagsEnabled(config).length > 0) {\n let changes = experimentalFlagsEnabled(config).map((s)=>_picocolors.default.yellow(s)).join(\", \");\n _log.default.warn(\"experimental-flags-enabled\", [\n `You have enabled experimental features: ${changes}`,\n \"Experimental features in Tailwind CSS are not covered by semver, may introduce breaking changes, and can change at any time.\"\n ]);\n }\n}\nconst _default = featureFlags;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"normalizeConfig\", {\n enumerable: true,\n get: function() {\n return normalizeConfig;\n }\n});\nconst _featureFlags = require(\"../featureFlags\");\nconst _log = /*#__PURE__*/ _interop_require_wildcard(require(\"./log\"));\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction normalizeConfig(config) {\n // Quick structure validation\n /**\n * type FilePath = string\n * type RawFile = { raw: string, extension?: string }\n * type ExtractorFn = (content: string) => Array<string>\n * type TransformerFn = (content: string) => string\n *\n * type Content =\n * | Array<FilePath | RawFile>\n * | {\n * files: Array<FilePath | RawFile>,\n * extract?: ExtractorFn | { [extension: string]: ExtractorFn }\n * transform?: TransformerFn | { [extension: string]: TransformerFn }\n * }\n */ let valid = (()=>{\n // `config.purge` should not exist anymore\n if (config.purge) {\n return false;\n }\n // `config.content` should exist\n if (!config.content) {\n return false;\n }\n // `config.content` should be an object or an array\n if (!Array.isArray(config.content) && !(typeof config.content === \"object\" && config.content !== null)) {\n return false;\n }\n // When `config.content` is an array, it should consist of FilePaths or RawFiles\n if (Array.isArray(config.content)) {\n return config.content.every((path)=>{\n // `path` can be a string\n if (typeof path === \"string\") return true;\n // `path` can be an object { raw: string, extension?: string }\n // `raw` must be a string\n if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== \"string\") return false;\n // `extension` (if provided) should also be a string\n if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== \"string\") {\n return false;\n }\n return true;\n });\n }\n // When `config.content` is an object\n if (typeof config.content === \"object\" && config.content !== null) {\n // Only `files`, `relative`, `extract`, and `transform` can exist in `config.content`\n if (Object.keys(config.content).some((key)=>![\n \"files\",\n \"relative\",\n \"extract\",\n \"transform\"\n ].includes(key))) {\n return false;\n }\n // `config.content.files` should exist of FilePaths or RawFiles\n if (Array.isArray(config.content.files)) {\n if (!config.content.files.every((path)=>{\n // `path` can be a string\n if (typeof path === \"string\") return true;\n // `path` can be an object { raw: string, extension?: string }\n // `raw` must be a string\n if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== \"string\") return false;\n // `extension` (if provided) should also be a string\n if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== \"string\") {\n return false;\n }\n return true;\n })) {\n return false;\n }\n // `config.content.extract` is optional, and can be a Function or a Record<String, Function>\n if (typeof config.content.extract === \"object\") {\n for (let value of Object.values(config.content.extract)){\n if (typeof value !== \"function\") {\n return false;\n }\n }\n } else if (!(config.content.extract === undefined || typeof config.content.extract === \"function\")) {\n return false;\n }\n // `config.content.transform` is optional, and can be a Function or a Record<String, Function>\n if (typeof config.content.transform === \"object\") {\n for (let value of Object.values(config.content.transform)){\n if (typeof value !== \"function\") {\n return false;\n }\n }\n } else if (!(config.content.transform === undefined || typeof config.content.transform === \"function\")) {\n return false;\n }\n // `config.content.relative` is optional and can be a boolean\n if (typeof config.content.relative !== \"boolean\" && typeof config.content.relative !== \"undefined\") {\n return false;\n }\n }\n return true;\n }\n return false;\n })();\n if (!valid) {\n _log.default.warn(\"purge-deprecation\", [\n \"The `purge`/`content` options have changed in Tailwind CSS v3.0.\",\n \"Update your configuration file to eliminate this warning.\",\n \"https://tailwindcss.com/docs/upgrade-guide#configure-content-sources\"\n ]);\n }\n // Normalize the `safelist`\n config.safelist = (()=>{\n var _purge_options;\n let { content , purge , safelist } = config;\n if (Array.isArray(safelist)) return safelist;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.safelist)) return content.safelist;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.safelist)) return purge.safelist;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : (_purge_options = purge.options) === null || _purge_options === void 0 ? void 0 : _purge_options.safelist)) return purge.options.safelist;\n return [];\n })();\n // Normalize the `blocklist`\n config.blocklist = (()=>{\n let { blocklist } = config;\n if (Array.isArray(blocklist)) {\n if (blocklist.every((item)=>typeof item === \"string\")) {\n return blocklist;\n }\n _log.default.warn(\"blocklist-invalid\", [\n \"The `blocklist` option must be an array of strings.\",\n \"https://tailwindcss.com/docs/content-configuration#discarding-classes\"\n ]);\n }\n return [];\n })();\n // Normalize prefix option\n if (typeof config.prefix === \"function\") {\n _log.default.warn(\"prefix-function\", [\n \"As of Tailwind CSS v3.0, `prefix` cannot be a function.\",\n \"Update `prefix` in your configuration to be a string to eliminate this warning.\",\n \"https://tailwindcss.com/docs/upgrade-guide#prefix-cannot-be-a-function\"\n ]);\n config.prefix = \"\";\n } else {\n var _config_prefix;\n config.prefix = (_config_prefix = config.prefix) !== null && _config_prefix !== void 0 ? _config_prefix : \"\";\n }\n // Normalize the `content`\n config.content = {\n relative: (()=>{\n let { content } = config;\n if (content === null || content === void 0 ? void 0 : content.relative) {\n return content.relative;\n }\n return (0, _featureFlags.flagEnabled)(config, \"relativeContentPathsByDefault\");\n })(),\n files: (()=>{\n let { content , purge } = config;\n if (Array.isArray(purge)) return purge;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.content)) return purge.content;\n if (Array.isArray(content)) return content;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.content)) return content.content;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.files)) return content.files;\n return [];\n })(),\n extract: (()=>{\n let extract = (()=>{\n var _config_purge, _config_content, _config_purge1, _config_purge_extract, _config_content1, _config_content_extract, _config_purge2, _config_purge_options, _config_content2, _config_content_options;\n if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : _config_purge.extract) return config.purge.extract;\n if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : _config_content.extract) return config.content.extract;\n if ((_config_purge1 = config.purge) === null || _config_purge1 === void 0 ? void 0 : (_config_purge_extract = _config_purge1.extract) === null || _config_purge_extract === void 0 ? void 0 : _config_purge_extract.DEFAULT) return config.purge.extract.DEFAULT;\n if ((_config_content1 = config.content) === null || _config_content1 === void 0 ? void 0 : (_config_content_extract = _config_content1.extract) === null || _config_content_extract === void 0 ? void 0 : _config_content_extract.DEFAULT) return config.content.extract.DEFAULT;\n if ((_config_purge2 = config.purge) === null || _config_purge2 === void 0 ? void 0 : (_config_purge_options = _config_purge2.options) === null || _config_purge_options === void 0 ? void 0 : _config_purge_options.extractors) return config.purge.options.extractors;\n if ((_config_content2 = config.content) === null || _config_content2 === void 0 ? void 0 : (_config_content_options = _config_content2.options) === null || _config_content_options === void 0 ? void 0 : _config_content_options.extractors) return config.content.options.extractors;\n return {};\n })();\n let extractors = {};\n let defaultExtractor = (()=>{\n var _config_purge, _config_purge_options, _config_content, _config_content_options;\n if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : (_config_purge_options = _config_purge.options) === null || _config_purge_options === void 0 ? void 0 : _config_purge_options.defaultExtractor) {\n return config.purge.options.defaultExtractor;\n }\n if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : (_config_content_options = _config_content.options) === null || _config_content_options === void 0 ? void 0 : _config_content_options.defaultExtractor) {\n return config.content.options.defaultExtractor;\n }\n return undefined;\n })();\n if (defaultExtractor !== undefined) {\n extractors.DEFAULT = defaultExtractor;\n }\n // Functions\n if (typeof extract === \"function\") {\n extractors.DEFAULT = extract;\n } else if (Array.isArray(extract)) {\n for (let { extensions , extractor } of extract !== null && extract !== void 0 ? extract : []){\n for (let extension of extensions){\n extractors[extension] = extractor;\n }\n }\n } else if (typeof extract === \"object\" && extract !== null) {\n Object.assign(extractors, extract);\n }\n return extractors;\n })(),\n transform: (()=>{\n let transform = (()=>{\n var _config_purge, _config_content, _config_purge1, _config_purge_transform, _config_content1, _config_content_transform;\n if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : _config_purge.transform) return config.purge.transform;\n if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : _config_content.transform) return config.content.transform;\n if ((_config_purge1 = config.purge) === null || _config_purge1 === void 0 ? void 0 : (_config_purge_transform = _config_purge1.transform) === null || _config_purge_transform === void 0 ? void 0 : _config_purge_transform.DEFAULT) return config.purge.transform.DEFAULT;\n if ((_config_content1 = config.content) === null || _config_content1 === void 0 ? void 0 : (_config_content_transform = _config_content1.transform) === null || _config_content_transform === void 0 ? void 0 : _config_content_transform.DEFAULT) return config.content.transform.DEFAULT;\n return {};\n })();\n let transformers = {};\n if (typeof transform === \"function\") {\n transformers.DEFAULT = transform;\n }\n if (typeof transform === \"object\" && transform !== null) {\n Object.assign(transformers, transform);\n }\n return transformers;\n })()\n };\n // Validate globs to prevent bogus globs.\n // E.g.: `./src/*.{html}` is invalid, the `{html}` should just be `html`\n for (let file of config.content.files){\n if (typeof file === \"string\" && /{([^,]*?)}/g.test(file)) {\n _log.default.warn(\"invalid-glob-braces\", [\n `The glob pattern ${(0, _log.dim)(file)} in your Tailwind CSS configuration is invalid.`,\n `Update it to ${(0, _log.dim)(file.replace(/{([^,]*?)}/g, \"$1\"))} to silence this warning.`\n ]);\n break;\n }\n }\n return config;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return isPlainObject;\n }\n});\nfunction isPlainObject(value) {\n if (Object.prototype.toString.call(value) !== \"[object Object]\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === null || prototype === Object.prototype;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"cloneDeep\", {\n enumerable: true,\n get: function() {\n return cloneDeep;\n }\n});\nfunction cloneDeep(value) {\n if (Array.isArray(value)) {\n return value.map((child)=>cloneDeep(child));\n }\n if (typeof value === \"object\" && value !== null) {\n return Object.fromEntries(Object.entries(value).map(([k, v])=>[\n k,\n cloneDeep(v)\n ]));\n }\n return value;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return escapeCommas;\n }\n});\nfunction escapeCommas(className) {\n return className.replace(/\\\\,/g, \"\\\\2c \");\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _default = {\n aliceblue: [\n 240,\n 248,\n 255\n ],\n antiquewhite: [\n 250,\n 235,\n 215\n ],\n aqua: [\n 0,\n 255,\n 255\n ],\n aquamarine: [\n 127,\n 255,\n 212\n ],\n azure: [\n 240,\n 255,\n 255\n ],\n beige: [\n 245,\n 245,\n 220\n ],\n bisque: [\n 255,\n 228,\n 196\n ],\n black: [\n 0,\n 0,\n 0\n ],\n blanchedalmond: [\n 255,\n 235,\n 205\n ],\n blue: [\n 0,\n 0,\n 255\n ],\n blueviolet: [\n 138,\n 43,\n 226\n ],\n brown: [\n 165,\n 42,\n 42\n ],\n burlywood: [\n 222,\n 184,\n 135\n ],\n cadetblue: [\n 95,\n 158,\n 160\n ],\n chartreuse: [\n 127,\n 255,\n 0\n ],\n chocolate: [\n 210,\n 105,\n 30\n ],\n coral: [\n 255,\n 127,\n 80\n ],\n cornflowerblue: [\n 100,\n 149,\n 237\n ],\n cornsilk: [\n 255,\n 248,\n 220\n ],\n crimson: [\n 220,\n 20,\n 60\n ],\n cyan: [\n 0,\n 255,\n 255\n ],\n darkblue: [\n 0,\n 0,\n 139\n ],\n darkcyan: [\n 0,\n 139,\n 139\n ],\n darkgoldenrod: [\n 184,\n 134,\n 11\n ],\n darkgray: [\n 169,\n 169,\n 169\n ],\n darkgreen: [\n 0,\n 100,\n 0\n ],\n darkgrey: [\n 169,\n 169,\n 169\n ],\n darkkhaki: [\n 189,\n 183,\n 107\n ],\n darkmagenta: [\n 139,\n 0,\n 139\n ],\n darkolivegreen: [\n 85,\n 107,\n 47\n ],\n darkorange: [\n 255,\n 140,\n 0\n ],\n darkorchid: [\n 153,\n 50,\n 204\n ],\n darkred: [\n 139,\n 0,\n 0\n ],\n darksalmon: [\n 233,\n 150,\n 122\n ],\n darkseagreen: [\n 143,\n 188,\n 143\n ],\n darkslateblue: [\n 72,\n 61,\n 139\n ],\n darkslategray: [\n 47,\n 79,\n 79\n ],\n darkslategrey: [\n 47,\n 79,\n 79\n ],\n darkturquoise: [\n 0,\n 206,\n 209\n ],\n darkviolet: [\n 148,\n 0,\n 211\n ],\n deeppink: [\n 255,\n 20,\n 147\n ],\n deepskyblue: [\n 0,\n 191,\n 255\n ],\n dimgray: [\n 105,\n 105,\n 105\n ],\n dimgrey: [\n 105,\n 105,\n 105\n ],\n dodgerblue: [\n 30,\n 144,\n 255\n ],\n firebrick: [\n 178,\n 34,\n 34\n ],\n floralwhite: [\n 255,\n 250,\n 240\n ],\n forestgreen: [\n 34,\n 139,\n 34\n ],\n fuchsia: [\n 255,\n 0,\n 255\n ],\n gainsboro: [\n 220,\n 220,\n 220\n ],\n ghostwhite: [\n 248,\n 248,\n 255\n ],\n gold: [\n 255,\n 215,\n 0\n ],\n goldenrod: [\n 218,\n 165,\n 32\n ],\n gray: [\n 128,\n 128,\n 128\n ],\n green: [\n 0,\n 128,\n 0\n ],\n greenyellow: [\n 173,\n 255,\n 47\n ],\n grey: [\n 128,\n 128,\n 128\n ],\n honeydew: [\n 240,\n 255,\n 240\n ],\n hotpink: [\n 255,\n 105,\n 180\n ],\n indianred: [\n 205,\n 92,\n 92\n ],\n indigo: [\n 75,\n 0,\n 130\n ],\n ivory: [\n 255,\n 255,\n 240\n ],\n khaki: [\n 240,\n 230,\n 140\n ],\n lavender: [\n 230,\n 230,\n 250\n ],\n lavenderblush: [\n 255,\n 240,\n 245\n ],\n lawngreen: [\n 124,\n 252,\n 0\n ],\n lemonchiffon: [\n 255,\n 250,\n 205\n ],\n lightblue: [\n 173,\n 216,\n 230\n ],\n lightcoral: [\n 240,\n 128,\n 128\n ],\n lightcyan: [\n 224,\n 255,\n 255\n ],\n lightgoldenrodyellow: [\n 250,\n 250,\n 210\n ],\n lightgray: [\n 211,\n 211,\n 211\n ],\n lightgreen: [\n 144,\n 238,\n 144\n ],\n lightgrey: [\n 211,\n 211,\n 211\n ],\n lightpink: [\n 255,\n 182,\n 193\n ],\n lightsalmon: [\n 255,\n 160,\n 122\n ],\n lightseagreen: [\n 32,\n 178,\n 170\n ],\n lightskyblue: [\n 135,\n 206,\n 250\n ],\n lightslategray: [\n 119,\n 136,\n 153\n ],\n lightslategrey: [\n 119,\n 136,\n 153\n ],\n lightsteelblue: [\n 176,\n 196,\n 222\n ],\n lightyellow: [\n 255,\n 255,\n 224\n ],\n lime: [\n 0,\n 255,\n 0\n ],\n limegreen: [\n 50,\n 205,\n 50\n ],\n linen: [\n 250,\n 240,\n 230\n ],\n magenta: [\n 255,\n 0,\n 255\n ],\n maroon: [\n 128,\n 0,\n 0\n ],\n mediumaquamarine: [\n 102,\n 205,\n 170\n ],\n mediumblue: [\n 0,\n 0,\n 205\n ],\n mediumorchid: [\n 186,\n 85,\n 211\n ],\n mediumpurple: [\n 147,\n 112,\n 219\n ],\n mediumseagreen: [\n 60,\n 179,\n 113\n ],\n mediumslateblue: [\n 123,\n 104,\n 238\n ],\n mediumspringgreen: [\n 0,\n 250,\n 154\n ],\n mediumturquoise: [\n 72,\n 209,\n 204\n ],\n mediumvioletred: [\n 199,\n 21,\n 133\n ],\n midnightblue: [\n 25,\n 25,\n 112\n ],\n mintcream: [\n 245,\n 255,\n 250\n ],\n mistyrose: [\n 255,\n 228,\n 225\n ],\n moccasin: [\n 255,\n 228,\n 181\n ],\n navajowhite: [\n 255,\n 222,\n 173\n ],\n navy: [\n 0,\n 0,\n 128\n ],\n oldlace: [\n 253,\n 245,\n 230\n ],\n olive: [\n 128,\n 128,\n 0\n ],\n olivedrab: [\n 107,\n 142,\n 35\n ],\n orange: [\n 255,\n 165,\n 0\n ],\n orangered: [\n 255,\n 69,\n 0\n ],\n orchid: [\n 218,\n 112,\n 214\n ],\n palegoldenrod: [\n 238,\n 232,\n 170\n ],\n palegreen: [\n 152,\n 251,\n 152\n ],\n paleturquoise: [\n 175,\n 238,\n 238\n ],\n palevioletred: [\n 219,\n 112,\n 147\n ],\n papayawhip: [\n 255,\n 239,\n 213\n ],\n peachpuff: [\n 255,\n 218,\n 185\n ],\n peru: [\n 205,\n 133,\n 63\n ],\n pink: [\n 255,\n 192,\n 203\n ],\n plum: [\n 221,\n 160,\n 221\n ],\n powderblue: [\n 176,\n 224,\n 230\n ],\n purple: [\n 128,\n 0,\n 128\n ],\n rebeccapurple: [\n 102,\n 51,\n 153\n ],\n red: [\n 255,\n 0,\n 0\n ],\n rosybrown: [\n 188,\n 143,\n 143\n ],\n royalblue: [\n 65,\n 105,\n 225\n ],\n saddlebrown: [\n 139,\n 69,\n 19\n ],\n salmon: [\n 250,\n 128,\n 114\n ],\n sandybrown: [\n 244,\n 164,\n 96\n ],\n seagreen: [\n 46,\n 139,\n 87\n ],\n seashell: [\n 255,\n 245,\n 238\n ],\n sienna: [\n 160,\n 82,\n 45\n ],\n silver: [\n 192,\n 192,\n 192\n ],\n skyblue: [\n 135,\n 206,\n 235\n ],\n slateblue: [\n 106,\n 90,\n 205\n ],\n slategray: [\n 112,\n 128,\n 144\n ],\n slategrey: [\n 112,\n 128,\n 144\n ],\n snow: [\n 255,\n 250,\n 250\n ],\n springgreen: [\n 0,\n 255,\n 127\n ],\n steelblue: [\n 70,\n 130,\n 180\n ],\n tan: [\n 210,\n 180,\n 140\n ],\n teal: [\n 0,\n 128,\n 128\n ],\n thistle: [\n 216,\n 191,\n 216\n ],\n tomato: [\n 255,\n 99,\n 71\n ],\n turquoise: [\n 64,\n 224,\n 208\n ],\n violet: [\n 238,\n 130,\n 238\n ],\n wheat: [\n 245,\n 222,\n 179\n ],\n white: [\n 255,\n 255,\n 255\n ],\n whitesmoke: [\n 245,\n 245,\n 245\n ],\n yellow: [\n 255,\n 255,\n 0\n ],\n yellowgreen: [\n 154,\n 205,\n 50\n ]\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n parseColor: function() {\n return parseColor;\n },\n formatColor: function() {\n return formatColor;\n }\n});\nconst _colorNames = /*#__PURE__*/ _interop_require_default(require(\"./colorNames\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet HEX = /^#([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?$/i;\nlet SHORT_HEX = /^#([a-f\\d])([a-f\\d])([a-f\\d])([a-f\\d])?$/i;\nlet VALUE = /(?:\\d+|\\d*\\.\\d+)%?/;\nlet SEP = /(?:\\s*,\\s*|\\s+)/;\nlet ALPHA_SEP = /\\s*[,/]\\s*/;\nlet CUSTOM_PROPERTY = /var\\(--(?:[^ )]*?)\\)/;\nlet RGB = new RegExp(`^(rgba?)\\\\(\\\\s*(${VALUE.source}|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\\\s*\\\\)$`);\nlet HSL = new RegExp(`^(hsla?)\\\\(\\\\s*((?:${VALUE.source})(?:deg|rad|grad|turn)?|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\\\s*\\\\)$`);\nfunction parseColor(value, { loose =false } = {}) {\n var _match_, _match__toString;\n if (typeof value !== \"string\") {\n return null;\n }\n value = value.trim();\n if (value === \"transparent\") {\n return {\n mode: \"rgb\",\n color: [\n \"0\",\n \"0\",\n \"0\"\n ],\n alpha: \"0\"\n };\n }\n if (value in _colorNames.default) {\n return {\n mode: \"rgb\",\n color: _colorNames.default[value].map((v)=>v.toString())\n };\n }\n let hex = value.replace(SHORT_HEX, (_, r, g, b, a)=>[\n \"#\",\n r,\n r,\n g,\n g,\n b,\n b,\n a ? a + a : \"\"\n ].join(\"\")).match(HEX);\n if (hex !== null) {\n return {\n mode: \"rgb\",\n color: [\n parseInt(hex[1], 16),\n parseInt(hex[2], 16),\n parseInt(hex[3], 16)\n ].map((v)=>v.toString()),\n alpha: hex[4] ? (parseInt(hex[4], 16) / 255).toString() : undefined\n };\n }\n var _value_match;\n let match = (_value_match = value.match(RGB)) !== null && _value_match !== void 0 ? _value_match : value.match(HSL);\n if (match === null) {\n return null;\n }\n let color = [\n match[2],\n match[3],\n match[4]\n ].filter(Boolean).map((v)=>v.toString());\n // rgba(var(--my-color), 0.1)\n // hsla(var(--my-color), 0.1)\n if (color.length === 2 && color[0].startsWith(\"var(\")) {\n return {\n mode: match[1],\n color: [\n color[0]\n ],\n alpha: color[1]\n };\n }\n if (!loose && color.length !== 3) {\n return null;\n }\n if (color.length < 3 && !color.some((part)=>/^var\\(.*?\\)$/.test(part))) {\n return null;\n }\n return {\n mode: match[1],\n color,\n alpha: (_match_ = match[5]) === null || _match_ === void 0 ? void 0 : (_match__toString = _match_.toString) === null || _match__toString === void 0 ? void 0 : _match__toString.call(_match_)\n };\n}\nfunction formatColor({ mode , color , alpha }) {\n let hasAlpha = alpha !== undefined;\n if (mode === \"rgba\" || mode === \"hsla\") {\n return `${mode}(${color.join(\", \")}${hasAlpha ? `, ${alpha}` : \"\"})`;\n }\n return `${mode}(${color.join(\" \")}${hasAlpha ? ` / ${alpha}` : \"\"})`;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n withAlphaValue: function() {\n return withAlphaValue;\n },\n default: function() {\n return withAlphaVariable;\n }\n});\nconst _color = require(\"./color\");\nfunction withAlphaValue(color, alphaValue, defaultValue) {\n if (typeof color === \"function\") {\n return color({\n opacityValue: alphaValue\n });\n }\n let parsed = (0, _color.parseColor)(color, {\n loose: true\n });\n if (parsed === null) {\n return defaultValue;\n }\n return (0, _color.formatColor)({\n ...parsed,\n alpha: alphaValue\n });\n}\nfunction withAlphaVariable({ color , property , variable }) {\n let properties = [].concat(property);\n if (typeof color === \"function\") {\n return {\n [variable]: \"1\",\n ...Object.fromEntries(properties.map((p)=>{\n return [\n p,\n color({\n opacityVariable: variable,\n opacityValue: `var(${variable})`\n })\n ];\n }))\n };\n }\n const parsed = (0, _color.parseColor)(color);\n if (parsed === null) {\n return Object.fromEntries(properties.map((p)=>[\n p,\n color\n ]));\n }\n if (parsed.alpha !== undefined) {\n // Has an alpha value, return color as-is\n return Object.fromEntries(properties.map((p)=>[\n p,\n color\n ]));\n }\n return {\n [variable]: \"1\",\n ...Object.fromEntries(properties.map((p)=>{\n return [\n p,\n (0, _color.formatColor)({\n ...parsed,\n alpha: `var(${variable})`\n })\n ];\n }))\n };\n}\n","/**\n * This splits a string on a top-level character.\n *\n * Regex doesn't support recursion (at least not the JS-flavored version).\n * So we have to use a tiny state machine to keep track of paren placement.\n *\n * Expected behavior using commas:\n * var(--a, 0 0 1px rgb(0, 0, 0)), 0 0 1px rgb(0, 0, 0)\n * ─┬─ ┬ ┬ ┬\n * x x x ╰──────── Split because top-level\n * ╰──────────────┴──┴───────────── Ignored b/c inside >= 1 levels of parens\n *\n * @param {string} input\n * @param {string} separator\n */ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"splitAtTopLevelOnly\", {\n enumerable: true,\n get: function() {\n return splitAtTopLevelOnly;\n }\n});\nfunction splitAtTopLevelOnly(input, separator) {\n let stack = [];\n let parts = [];\n let lastPos = 0;\n let isEscaped = false;\n for(let idx = 0; idx < input.length; idx++){\n let char = input[idx];\n if (stack.length === 0 && char === separator[0] && !isEscaped) {\n if (separator.length === 1 || input.slice(idx, idx + separator.length) === separator) {\n parts.push(input.slice(lastPos, idx));\n lastPos = idx + separator.length;\n }\n }\n if (isEscaped) {\n isEscaped = false;\n } else if (char === \"\\\\\") {\n isEscaped = true;\n }\n if (char === \"(\" || char === \"[\" || char === \"{\") {\n stack.push(char);\n } else if (char === \")\" && stack[stack.length - 1] === \"(\" || char === \"]\" && stack[stack.length - 1] === \"[\" || char === \"}\" && stack[stack.length - 1] === \"{\") {\n stack.pop();\n }\n }\n parts.push(input.slice(lastPos));\n return parts;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n parseBoxShadowValue: function() {\n return parseBoxShadowValue;\n },\n formatBoxShadowValue: function() {\n return formatBoxShadowValue;\n }\n});\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nlet KEYWORDS = new Set([\n \"inset\",\n \"inherit\",\n \"initial\",\n \"revert\",\n \"unset\"\n]);\nlet SPACE = /\\ +(?![^(]*\\))/g // Similar to the one above, but with spaces instead.\n;\nlet LENGTH = /^-?(\\d+|\\.\\d+)(.*?)$/g;\nfunction parseBoxShadowValue(input) {\n let shadows = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(input, \",\");\n return shadows.map((shadow)=>{\n let value = shadow.trim();\n let result = {\n raw: value\n };\n let parts = value.split(SPACE);\n let seen = new Set();\n for (let part of parts){\n // Reset index, since the regex is stateful.\n LENGTH.lastIndex = 0;\n // Keyword\n if (!seen.has(\"KEYWORD\") && KEYWORDS.has(part)) {\n result.keyword = part;\n seen.add(\"KEYWORD\");\n } else if (LENGTH.test(part)) {\n if (!seen.has(\"X\")) {\n result.x = part;\n seen.add(\"X\");\n } else if (!seen.has(\"Y\")) {\n result.y = part;\n seen.add(\"Y\");\n } else if (!seen.has(\"BLUR\")) {\n result.blur = part;\n seen.add(\"BLUR\");\n } else if (!seen.has(\"SPREAD\")) {\n result.spread = part;\n seen.add(\"SPREAD\");\n }\n } else {\n if (!result.color) {\n result.color = part;\n } else {\n if (!result.unknown) result.unknown = [];\n result.unknown.push(part);\n }\n }\n }\n // Check if valid\n result.valid = result.x !== undefined && result.y !== undefined;\n return result;\n });\n}\nfunction formatBoxShadowValue(shadows) {\n return shadows.map((shadow)=>{\n if (!shadow.valid) {\n return shadow.raw;\n }\n return [\n shadow.keyword,\n shadow.x,\n shadow.y,\n shadow.blur,\n shadow.spread,\n shadow.color\n ].filter(Boolean).join(\" \");\n }).join(\", \");\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n normalize: function() {\n return normalize;\n },\n url: function() {\n return url;\n },\n number: function() {\n return number;\n },\n percentage: function() {\n return percentage;\n },\n length: function() {\n return length;\n },\n lineWidth: function() {\n return lineWidth;\n },\n shadow: function() {\n return shadow;\n },\n color: function() {\n return color;\n },\n image: function() {\n return image;\n },\n gradient: function() {\n return gradient;\n },\n position: function() {\n return position;\n },\n familyName: function() {\n return familyName;\n },\n genericName: function() {\n return genericName;\n },\n absoluteSize: function() {\n return absoluteSize;\n },\n relativeSize: function() {\n return relativeSize;\n }\n});\nconst _color = require(\"./color\");\nconst _parseBoxShadowValue = require(\"./parseBoxShadowValue\");\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nlet cssFunctions = [\n \"min\",\n \"max\",\n \"clamp\",\n \"calc\"\n];\n// Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Types\nfunction isCSSFunction(value) {\n return cssFunctions.some((fn)=>new RegExp(`^${fn}\\\\(.*\\\\)`).test(value));\n}\nconst placeholder = \"--tw-placeholder\";\nconst placeholderRe = new RegExp(placeholder, \"g\");\nfunction normalize(value, isRoot = true) {\n if (value.startsWith(\"--\")) {\n return `var(${value})`;\n }\n // Keep raw strings if it starts with `url(`\n if (value.includes(\"url(\")) {\n return value.split(/(url\\(.*?\\))/g).filter(Boolean).map((part)=>{\n if (/^url\\(.*?\\)$/.test(part)) {\n return part;\n }\n return normalize(part, false);\n }).join(\"\");\n }\n // Convert `_` to ` `, except for escaped underscores `\\_`\n value = value.replace(/([^\\\\])_+/g, (fullMatch, characterBefore)=>characterBefore + \" \".repeat(fullMatch.length - 1)).replace(/^_/g, \" \").replace(/\\\\_/g, \"_\");\n // Remove leftover whitespace\n if (isRoot) {\n value = value.trim();\n }\n value = normalizeMathOperatorSpacing(value);\n return value;\n}\n/**\n * Add spaces around operators inside math functions\n * like calc() that do not follow an operator or '('.\n *\n * @param {string} value\n * @returns {string}\n */ function normalizeMathOperatorSpacing(value) {\n return value.replace(/(calc|min|max|clamp)\\(.+\\)/g, (match)=>{\n let vars = [];\n return match.replace(/var\\((--.+?)[,)]/g, (match, g1)=>{\n vars.push(g1);\n return match.replace(g1, placeholder);\n }).replace(/(-?\\d*\\.?\\d(?!\\b-\\d.+[,)](?![^+\\-/*])\\D)(?:%|[a-z]+)?|\\))([+\\-/*])/g, \"$1 $2 \").replace(placeholderRe, ()=>vars.shift());\n });\n}\nfunction url(value) {\n return value.startsWith(\"url(\");\n}\nfunction number(value) {\n return !isNaN(Number(value)) || isCSSFunction(value);\n}\nfunction percentage(value) {\n return value.endsWith(\"%\") && number(value.slice(0, -1)) || isCSSFunction(value);\n}\n// Please refer to MDN when updating this list:\n// https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units\n// https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Container_Queries#container_query_length_units\nlet lengthUnits = [\n \"cm\",\n \"mm\",\n \"Q\",\n \"in\",\n \"pc\",\n \"pt\",\n \"px\",\n \"em\",\n \"ex\",\n \"ch\",\n \"rem\",\n \"lh\",\n \"rlh\",\n \"vw\",\n \"vh\",\n \"vmin\",\n \"vmax\",\n \"vb\",\n \"vi\",\n \"svw\",\n \"svh\",\n \"lvw\",\n \"lvh\",\n \"dvw\",\n \"dvh\",\n \"cqw\",\n \"cqh\",\n \"cqi\",\n \"cqb\",\n \"cqmin\",\n \"cqmax\"\n];\nlet lengthUnitsPattern = `(?:${lengthUnits.join(\"|\")})`;\nfunction length(value) {\n return value === \"0\" || new RegExp(`^[+-]?[0-9]*\\.?[0-9]+(?:[eE][+-]?[0-9]+)?${lengthUnitsPattern}$`).test(value) || isCSSFunction(value);\n}\nlet lineWidths = new Set([\n \"thin\",\n \"medium\",\n \"thick\"\n]);\nfunction lineWidth(value) {\n return lineWidths.has(value);\n}\nfunction shadow(value) {\n let parsedShadows = (0, _parseBoxShadowValue.parseBoxShadowValue)(normalize(value));\n for (let parsedShadow of parsedShadows){\n if (!parsedShadow.valid) {\n return false;\n }\n }\n return true;\n}\nfunction color(value) {\n let colors = 0;\n let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \"_\").every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if ((0, _color.parseColor)(part, {\n loose: true\n }) !== null) return colors++, true;\n return false;\n });\n if (!result) return false;\n return colors > 0;\n}\nfunction image(value) {\n let images = 0;\n let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \",\").every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if (url(part) || gradient(part) || [\n \"element(\",\n \"image(\",\n \"cross-fade(\",\n \"image-set(\"\n ].some((fn)=>part.startsWith(fn))) {\n images++;\n return true;\n }\n return false;\n });\n if (!result) return false;\n return images > 0;\n}\nlet gradientTypes = new Set([\n \"conic-gradient\",\n \"linear-gradient\",\n \"radial-gradient\",\n \"repeating-conic-gradient\",\n \"repeating-linear-gradient\",\n \"repeating-radial-gradient\"\n]);\nfunction gradient(value) {\n value = normalize(value);\n for (let type of gradientTypes){\n if (value.startsWith(`${type}(`)) {\n return true;\n }\n }\n return false;\n}\nlet validPositions = new Set([\n \"center\",\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n]);\nfunction position(value) {\n let positions = 0;\n let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \"_\").every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if (validPositions.has(part) || length(part) || percentage(part)) {\n positions++;\n return true;\n }\n return false;\n });\n if (!result) return false;\n return positions > 0;\n}\nfunction familyName(value) {\n let fonts = 0;\n let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \",\").every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n // If it contains spaces, then it should be quoted\n if (part.includes(\" \")) {\n if (!/(['\"])([^\"']+)\\1/g.test(part)) {\n return false;\n }\n }\n // If it starts with a number, it's invalid\n if (/^\\d/g.test(part)) {\n return false;\n }\n fonts++;\n return true;\n });\n if (!result) return false;\n return fonts > 0;\n}\nlet genericNames = new Set([\n \"serif\",\n \"sans-serif\",\n \"monospace\",\n \"cursive\",\n \"fantasy\",\n \"system-ui\",\n \"ui-serif\",\n \"ui-sans-serif\",\n \"ui-monospace\",\n \"ui-rounded\",\n \"math\",\n \"emoji\",\n \"fangsong\"\n]);\nfunction genericName(value) {\n return genericNames.has(value);\n}\nlet absoluteSizes = new Set([\n \"xx-small\",\n \"x-small\",\n \"small\",\n \"medium\",\n \"large\",\n \"x-large\",\n \"x-large\",\n \"xxx-large\"\n]);\nfunction absoluteSize(value) {\n return absoluteSizes.has(value);\n}\nlet relativeSizes = new Set([\n \"larger\",\n \"smaller\"\n]);\nfunction relativeSize(value) {\n return relativeSizes.has(value);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"backgroundSize\", {\n enumerable: true,\n get: function() {\n return backgroundSize;\n }\n});\nconst _dataTypes = require(\"./dataTypes\");\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nfunction backgroundSize(value) {\n let keywordValues = [\n \"cover\",\n \"contain\"\n ];\n // the <length-percentage> type will probably be a css function\n // so we have to use `splitAtTopLevelOnly`\n return (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \",\").every((part)=>{\n let sizes = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(part, \"_\").filter(Boolean);\n if (sizes.length === 1 && keywordValues.includes(sizes[0])) return true;\n if (sizes.length !== 1 && sizes.length !== 2) return false;\n return sizes.every((size)=>(0, _dataTypes.length)(size) || (0, _dataTypes.percentage)(size) || size === \"auto\");\n });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n updateAllClasses: function() {\n return updateAllClasses;\n },\n asValue: function() {\n return asValue;\n },\n parseColorFormat: function() {\n return parseColorFormat;\n },\n asColor: function() {\n return asColor;\n },\n asLookupValue: function() {\n return asLookupValue;\n },\n typeMap: function() {\n return typeMap;\n },\n coerceValue: function() {\n return coerceValue;\n },\n getMatchingTypes: function() {\n return getMatchingTypes;\n }\n});\nconst _escapeCommas = /*#__PURE__*/ _interop_require_default(require(\"./escapeCommas\"));\nconst _withAlphaVariable = require(\"./withAlphaVariable\");\nconst _dataTypes = require(\"./dataTypes\");\nconst _negateValue = /*#__PURE__*/ _interop_require_default(require(\"./negateValue\"));\nconst _validateFormalSyntax = require(\"./validateFormalSyntax\");\nconst _featureFlags = require(\"../featureFlags.js\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction updateAllClasses(selectors, updateClass) {\n selectors.walkClasses((sel)=>{\n sel.value = updateClass(sel.value);\n if (sel.raws && sel.raws.value) {\n sel.raws.value = (0, _escapeCommas.default)(sel.raws.value);\n }\n });\n}\nfunction resolveArbitraryValue(modifier, validate) {\n if (!isArbitraryValue(modifier)) {\n return undefined;\n }\n let value = modifier.slice(1, -1);\n if (!validate(value)) {\n return undefined;\n }\n return (0, _dataTypes.normalize)(value);\n}\nfunction asNegativeValue(modifier, lookup = {}, validate) {\n let positiveValue = lookup[modifier];\n if (positiveValue !== undefined) {\n return (0, _negateValue.default)(positiveValue);\n }\n if (isArbitraryValue(modifier)) {\n let resolved = resolveArbitraryValue(modifier, validate);\n if (resolved === undefined) {\n return undefined;\n }\n return (0, _negateValue.default)(resolved);\n }\n}\nfunction asValue(modifier, options = {}, { validate =()=>true } = {}) {\n var _options_values;\n let value = (_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier];\n if (value !== undefined) {\n return value;\n }\n if (options.supportsNegativeValues && modifier.startsWith(\"-\")) {\n return asNegativeValue(modifier.slice(1), options.values, validate);\n }\n return resolveArbitraryValue(modifier, validate);\n}\nfunction isArbitraryValue(input) {\n return input.startsWith(\"[\") && input.endsWith(\"]\");\n}\nfunction splitUtilityModifier(modifier) {\n let slashIdx = modifier.lastIndexOf(\"/\");\n if (slashIdx === -1 || slashIdx === modifier.length - 1) {\n return [\n modifier,\n undefined\n ];\n }\n let arbitrary = isArbitraryValue(modifier);\n // The modifier could be of the form `[foo]/[bar]`\n // We want to handle this case properly\n // without affecting `[foo/bar]`\n if (arbitrary && !modifier.includes(\"]/[\")) {\n return [\n modifier,\n undefined\n ];\n }\n return [\n modifier.slice(0, slashIdx),\n modifier.slice(slashIdx + 1)\n ];\n}\nfunction parseColorFormat(value) {\n if (typeof value === \"string\" && value.includes(\"<alpha-value>\")) {\n let oldValue = value;\n return ({ opacityValue =1 })=>oldValue.replace(\"<alpha-value>\", opacityValue);\n }\n return value;\n}\nfunction unwrapArbitraryModifier(modifier) {\n return (0, _dataTypes.normalize)(modifier.slice(1, -1));\n}\nfunction asColor(modifier, options = {}, { tailwindConfig ={} } = {}) {\n var _options_values;\n if (((_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier]) !== undefined) {\n var _options_values1;\n return parseColorFormat((_options_values1 = options.values) === null || _options_values1 === void 0 ? void 0 : _options_values1[modifier]);\n }\n // TODO: Hoist this up to getMatchingTypes or something\n // We do this here because we need the alpha value (if any)\n let [color, alpha] = splitUtilityModifier(modifier);\n if (alpha !== undefined) {\n var _options_values2, _tailwindConfig_theme, _tailwindConfig_theme_opacity;\n var _options_values_color;\n let normalizedColor = (_options_values_color = (_options_values2 = options.values) === null || _options_values2 === void 0 ? void 0 : _options_values2[color]) !== null && _options_values_color !== void 0 ? _options_values_color : isArbitraryValue(color) ? color.slice(1, -1) : undefined;\n if (normalizedColor === undefined) {\n return undefined;\n }\n normalizedColor = parseColorFormat(normalizedColor);\n if (isArbitraryValue(alpha)) {\n return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, unwrapArbitraryModifier(alpha));\n }\n if (((_tailwindConfig_theme = tailwindConfig.theme) === null || _tailwindConfig_theme === void 0 ? void 0 : (_tailwindConfig_theme_opacity = _tailwindConfig_theme.opacity) === null || _tailwindConfig_theme_opacity === void 0 ? void 0 : _tailwindConfig_theme_opacity[alpha]) === undefined) {\n return undefined;\n }\n return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, tailwindConfig.theme.opacity[alpha]);\n }\n return asValue(modifier, options, {\n validate: _dataTypes.color\n });\n}\nfunction asLookupValue(modifier, options = {}) {\n var _options_values;\n return (_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier];\n}\nfunction guess(validate) {\n return (modifier, options)=>{\n return asValue(modifier, options, {\n validate\n });\n };\n}\nlet typeMap = {\n any: asValue,\n color: asColor,\n url: guess(_dataTypes.url),\n image: guess(_dataTypes.image),\n length: guess(_dataTypes.length),\n percentage: guess(_dataTypes.percentage),\n position: guess(_dataTypes.position),\n lookup: asLookupValue,\n \"generic-name\": guess(_dataTypes.genericName),\n \"family-name\": guess(_dataTypes.familyName),\n number: guess(_dataTypes.number),\n \"line-width\": guess(_dataTypes.lineWidth),\n \"absolute-size\": guess(_dataTypes.absoluteSize),\n \"relative-size\": guess(_dataTypes.relativeSize),\n shadow: guess(_dataTypes.shadow),\n size: guess(_validateFormalSyntax.backgroundSize)\n};\nlet supportedTypes = Object.keys(typeMap);\nfunction splitAtFirst(input, delim) {\n let idx = input.indexOf(delim);\n if (idx === -1) return [\n undefined,\n input\n ];\n return [\n input.slice(0, idx),\n input.slice(idx + 1)\n ];\n}\nfunction coerceValue(types, modifier, options, tailwindConfig) {\n if (options.values && modifier in options.values) {\n for (let { type } of types !== null && types !== void 0 ? types : []){\n let result = typeMap[type](modifier, options, {\n tailwindConfig\n });\n if (result === undefined) {\n continue;\n }\n return [\n result,\n type,\n null\n ];\n }\n }\n if (isArbitraryValue(modifier)) {\n let arbitraryValue = modifier.slice(1, -1);\n let [explicitType, value] = splitAtFirst(arbitraryValue, \":\");\n // It could be that this resolves to `url(https` which is not a valid\n // identifier. We currently only support \"simple\" words with dashes or\n // underscores. E.g.: family-name\n if (!/^[\\w-_]+$/g.test(explicitType)) {\n value = arbitraryValue;\n } else if (explicitType !== undefined && !supportedTypes.includes(explicitType)) {\n return [];\n }\n if (value.length > 0 && supportedTypes.includes(explicitType)) {\n return [\n asValue(`[${value}]`, options),\n explicitType,\n null\n ];\n }\n }\n let matches = getMatchingTypes(types, modifier, options, tailwindConfig);\n // Find first matching type\n for (let match of matches){\n return match;\n }\n return [];\n}\nfunction* getMatchingTypes(types, rawModifier, options, tailwindConfig) {\n let modifiersEnabled = (0, _featureFlags.flagEnabled)(tailwindConfig, \"generalizedModifiers\");\n let [modifier, utilityModifier] = splitUtilityModifier(rawModifier);\n let canUseUtilityModifier = modifiersEnabled && options.modifiers != null && (options.modifiers === \"any\" || typeof options.modifiers === \"object\" && (utilityModifier && isArbitraryValue(utilityModifier) || utilityModifier in options.modifiers));\n if (!canUseUtilityModifier) {\n modifier = rawModifier;\n utilityModifier = undefined;\n }\n if (utilityModifier !== undefined && modifier === \"\") {\n modifier = \"DEFAULT\";\n }\n // Check the full value first\n // TODO: Move to asValue… somehow\n if (utilityModifier !== undefined) {\n if (typeof options.modifiers === \"object\") {\n var _options_modifiers;\n var _options_modifiers_utilityModifier;\n let configValue = (_options_modifiers_utilityModifier = (_options_modifiers = options.modifiers) === null || _options_modifiers === void 0 ? void 0 : _options_modifiers[utilityModifier]) !== null && _options_modifiers_utilityModifier !== void 0 ? _options_modifiers_utilityModifier : null;\n if (configValue !== null) {\n utilityModifier = configValue;\n } else if (isArbitraryValue(utilityModifier)) {\n utilityModifier = unwrapArbitraryModifier(utilityModifier);\n }\n }\n }\n for (let { type } of types !== null && types !== void 0 ? types : []){\n let result = typeMap[type](modifier, options, {\n tailwindConfig\n });\n if (result === undefined) {\n continue;\n }\n yield [\n result,\n type,\n utilityModifier !== null && utilityModifier !== void 0 ? utilityModifier : null\n ];\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return toColorValue;\n }\n});\nfunction toColorValue(maybeFunction) {\n return typeof maybeFunction === \"function\" ? maybeFunction({}) : maybeFunction;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return resolveConfig;\n }\n});\nconst _negateValue = /*#__PURE__*/ _interop_require_default(require(\"./negateValue\"));\nconst _corePluginList = /*#__PURE__*/ _interop_require_default(require(\"../corePluginList\"));\nconst _configurePlugins = /*#__PURE__*/ _interop_require_default(require(\"./configurePlugins\"));\nconst _colors = /*#__PURE__*/ _interop_require_default(require(\"../public/colors\"));\nconst _defaults = require(\"./defaults\");\nconst _toPath = require(\"./toPath\");\nconst _normalizeConfig = require(\"./normalizeConfig\");\nconst _isPlainObject = /*#__PURE__*/ _interop_require_default(require(\"./isPlainObject\"));\nconst _cloneDeep = require(\"./cloneDeep\");\nconst _pluginUtils = require(\"./pluginUtils\");\nconst _withAlphaVariable = require(\"./withAlphaVariable\");\nconst _toColorValue = /*#__PURE__*/ _interop_require_default(require(\"./toColorValue\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction isFunction(input) {\n return typeof input === \"function\";\n}\nfunction mergeWith(target, ...sources) {\n let customizer = sources.pop();\n for (let source of sources){\n for(let k in source){\n let merged = customizer(target[k], source[k]);\n if (merged === undefined) {\n if ((0, _isPlainObject.default)(target[k]) && (0, _isPlainObject.default)(source[k])) {\n target[k] = mergeWith({}, target[k], source[k], customizer);\n } else {\n target[k] = source[k];\n }\n } else {\n target[k] = merged;\n }\n }\n }\n return target;\n}\nconst configUtils = {\n colors: _colors.default,\n negative (scale) {\n // TODO: Log that this function isn't really needed anymore?\n return Object.keys(scale).filter((key)=>scale[key] !== \"0\").reduce((negativeScale, key)=>{\n let negativeValue = (0, _negateValue.default)(scale[key]);\n if (negativeValue !== undefined) {\n negativeScale[`-${key}`] = negativeValue;\n }\n return negativeScale;\n }, {});\n },\n breakpoints (screens) {\n return Object.keys(screens).filter((key)=>typeof screens[key] === \"string\").reduce((breakpoints, key)=>({\n ...breakpoints,\n [`screen-${key}`]: screens[key]\n }), {});\n }\n};\nfunction value(valueToResolve, ...args) {\n return isFunction(valueToResolve) ? valueToResolve(...args) : valueToResolve;\n}\nfunction collectExtends(items) {\n return items.reduce((merged, { extend })=>{\n return mergeWith(merged, extend, (mergedValue, extendValue)=>{\n if (mergedValue === undefined) {\n return [\n extendValue\n ];\n }\n if (Array.isArray(mergedValue)) {\n return [\n extendValue,\n ...mergedValue\n ];\n }\n return [\n extendValue,\n mergedValue\n ];\n });\n }, {});\n}\nfunction mergeThemes(themes) {\n return {\n ...themes.reduce((merged, theme)=>(0, _defaults.defaults)(merged, theme), {}),\n // In order to resolve n config objects, we combine all of their `extend` properties\n // into arrays instead of objects so they aren't overridden.\n extend: collectExtends(themes)\n };\n}\nfunction mergeExtensionCustomizer(merged, value) {\n // When we have an array of objects, we do want to merge it\n if (Array.isArray(merged) && (0, _isPlainObject.default)(merged[0])) {\n return merged.concat(value);\n }\n // When the incoming value is an array, and the existing config is an object, prepend the existing object\n if (Array.isArray(value) && (0, _isPlainObject.default)(value[0]) && (0, _isPlainObject.default)(merged)) {\n return [\n merged,\n ...value\n ];\n }\n // Override arrays (for example for font-families, box-shadows, ...)\n if (Array.isArray(value)) {\n return value;\n }\n // Execute default behaviour\n return undefined;\n}\nfunction mergeExtensions({ extend , ...theme }) {\n return mergeWith(theme, extend, (themeValue, extensions)=>{\n // The `extend` property is an array, so we need to check if it contains any functions\n if (!isFunction(themeValue) && !extensions.some(isFunction)) {\n return mergeWith({}, themeValue, ...extensions, mergeExtensionCustomizer);\n }\n return (resolveThemePath, utils)=>mergeWith({}, ...[\n themeValue,\n ...extensions\n ].map((e)=>value(e, resolveThemePath, utils)), mergeExtensionCustomizer);\n });\n}\n/**\n *\n * @param {string} key\n * @return {Iterable<string[] & {alpha: string | undefined}>}\n */ function* toPaths(key) {\n let path = (0, _toPath.toPath)(key);\n if (path.length === 0) {\n return;\n }\n yield path;\n if (Array.isArray(key)) {\n return;\n }\n let pattern = /^(.*?)\\s*\\/\\s*([^/]+)$/;\n let matches = key.match(pattern);\n if (matches !== null) {\n let [, prefix, alpha] = matches;\n let newPath = (0, _toPath.toPath)(prefix);\n newPath.alpha = alpha;\n yield newPath;\n }\n}\nfunction resolveFunctionKeys(object) {\n // theme('colors.red.500 / 0.5') -> ['colors', 'red', '500 / 0', '5]\n const resolvePath = (key, defaultValue)=>{\n for (const path of toPaths(key)){\n let index = 0;\n let val = object;\n while(val !== undefined && val !== null && index < path.length){\n val = val[path[index++]];\n let shouldResolveAsFn = isFunction(val) && (path.alpha === undefined || index <= path.length - 1);\n val = shouldResolveAsFn ? val(resolvePath, configUtils) : val;\n }\n if (val !== undefined) {\n if (path.alpha !== undefined) {\n let normalized = (0, _pluginUtils.parseColorFormat)(val);\n return (0, _withAlphaVariable.withAlphaValue)(normalized, path.alpha, (0, _toColorValue.default)(normalized));\n }\n if ((0, _isPlainObject.default)(val)) {\n return (0, _cloneDeep.cloneDeep)(val);\n }\n return val;\n }\n }\n return defaultValue;\n };\n Object.assign(resolvePath, {\n theme: resolvePath,\n ...configUtils\n });\n return Object.keys(object).reduce((resolved, key)=>{\n resolved[key] = isFunction(object[key]) ? object[key](resolvePath, configUtils) : object[key];\n return resolved;\n }, {});\n}\nfunction extractPluginConfigs(configs) {\n let allConfigs = [];\n configs.forEach((config)=>{\n allConfigs = [\n ...allConfigs,\n config\n ];\n var _config_plugins;\n const plugins = (_config_plugins = config === null || config === void 0 ? void 0 : config.plugins) !== null && _config_plugins !== void 0 ? _config_plugins : [];\n if (plugins.length === 0) {\n return;\n }\n plugins.forEach((plugin)=>{\n if (plugin.__isOptionsFunction) {\n plugin = plugin();\n }\n var _plugin_config;\n allConfigs = [\n ...allConfigs,\n ...extractPluginConfigs([\n (_plugin_config = plugin === null || plugin === void 0 ? void 0 : plugin.config) !== null && _plugin_config !== void 0 ? _plugin_config : {}\n ])\n ];\n });\n });\n return allConfigs;\n}\nfunction resolveCorePlugins(corePluginConfigs) {\n const result = [\n ...corePluginConfigs\n ].reduceRight((resolved, corePluginConfig)=>{\n if (isFunction(corePluginConfig)) {\n return corePluginConfig({\n corePlugins: resolved\n });\n }\n return (0, _configurePlugins.default)(corePluginConfig, resolved);\n }, _corePluginList.default);\n return result;\n}\nfunction resolvePluginLists(pluginLists) {\n const result = [\n ...pluginLists\n ].reduceRight((resolved, pluginList)=>{\n return [\n ...resolved,\n ...pluginList\n ];\n }, []);\n return result;\n}\nfunction resolveConfig(configs) {\n let allConfigs = [\n ...extractPluginConfigs(configs),\n {\n prefix: \"\",\n important: false,\n separator: \":\"\n }\n ];\n var _t_theme, _c_plugins;\n return (0, _normalizeConfig.normalizeConfig)((0, _defaults.defaults)({\n theme: resolveFunctionKeys(mergeExtensions(mergeThemes(allConfigs.map((t)=>{\n return (_t_theme = t === null || t === void 0 ? void 0 : t.theme) !== null && _t_theme !== void 0 ? _t_theme : {};\n })))),\n corePlugins: resolveCorePlugins(allConfigs.map((c)=>c.corePlugins)),\n plugins: resolvePluginLists(configs.map((c)=>{\n return (_c_plugins = c === null || c === void 0 ? void 0 : c.plugins) !== null && _c_plugins !== void 0 ? _c_plugins : [];\n }))\n }, ...allConfigs));\n}\n","module.exports = {\n content: [],\n presets: [],\n darkMode: 'media', // or 'class'\n theme: {\n accentColor: ({ theme }) => ({\n ...theme('colors'),\n auto: 'auto',\n }),\n animation: {\n none: 'none',\n spin: 'spin 1s linear infinite',\n ping: 'ping 1s cubic-bezier(0, 0, 0.2, 1) infinite',\n pulse: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',\n bounce: 'bounce 1s infinite',\n },\n aria: {\n busy: 'busy=\"true\"',\n checked: 'checked=\"true\"',\n disabled: 'disabled=\"true\"',\n expanded: 'expanded=\"true\"',\n hidden: 'hidden=\"true\"',\n pressed: 'pressed=\"true\"',\n readonly: 'readonly=\"true\"',\n required: 'required=\"true\"',\n selected: 'selected=\"true\"',\n },\n aspectRatio: {\n auto: 'auto',\n square: '1 / 1',\n video: '16 / 9',\n },\n backdropBlur: ({ theme }) => theme('blur'),\n backdropBrightness: ({ theme }) => theme('brightness'),\n backdropContrast: ({ theme }) => theme('contrast'),\n backdropGrayscale: ({ theme }) => theme('grayscale'),\n backdropHueRotate: ({ theme }) => theme('hueRotate'),\n backdropInvert: ({ theme }) => theme('invert'),\n backdropOpacity: ({ theme }) => theme('opacity'),\n backdropSaturate: ({ theme }) => theme('saturate'),\n backdropSepia: ({ theme }) => theme('sepia'),\n backgroundColor: ({ theme }) => theme('colors'),\n backgroundImage: {\n none: 'none',\n 'gradient-to-t': 'linear-gradient(to top, var(--tw-gradient-stops))',\n 'gradient-to-tr': 'linear-gradient(to top right, var(--tw-gradient-stops))',\n 'gradient-to-r': 'linear-gradient(to right, var(--tw-gradient-stops))',\n 'gradient-to-br': 'linear-gradient(to bottom right, var(--tw-gradient-stops))',\n 'gradient-to-b': 'linear-gradient(to bottom, var(--tw-gradient-stops))',\n 'gradient-to-bl': 'linear-gradient(to bottom left, var(--tw-gradient-stops))',\n 'gradient-to-l': 'linear-gradient(to left, var(--tw-gradient-stops))',\n 'gradient-to-tl': 'linear-gradient(to top left, var(--tw-gradient-stops))',\n },\n backgroundOpacity: ({ theme }) => theme('opacity'),\n backgroundPosition: {\n bottom: 'bottom',\n center: 'center',\n left: 'left',\n 'left-bottom': 'left bottom',\n 'left-top': 'left top',\n right: 'right',\n 'right-bottom': 'right bottom',\n 'right-top': 'right top',\n top: 'top',\n },\n backgroundSize: {\n auto: 'auto',\n cover: 'cover',\n contain: 'contain',\n },\n blur: {\n 0: '0',\n none: '0',\n sm: '4px',\n DEFAULT: '8px',\n md: '12px',\n lg: '16px',\n xl: '24px',\n '2xl': '40px',\n '3xl': '64px',\n },\n borderColor: ({ theme }) => ({\n ...theme('colors'),\n DEFAULT: theme('colors.gray.200', 'currentColor'),\n }),\n borderOpacity: ({ theme }) => theme('opacity'),\n borderRadius: {\n none: '0px',\n sm: '0.125rem',\n DEFAULT: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n '3xl': '1.5rem',\n full: '9999px',\n },\n borderSpacing: ({ theme }) => ({\n ...theme('spacing'),\n }),\n borderWidth: {\n DEFAULT: '1px',\n 0: '0px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n boxShadow: {\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n DEFAULT: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\n none: 'none',\n },\n boxShadowColor: ({ theme }) => theme('colors'),\n brightness: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 90: '.9',\n 95: '.95',\n 100: '1',\n 105: '1.05',\n 110: '1.1',\n 125: '1.25',\n 150: '1.5',\n 200: '2',\n },\n caretColor: ({ theme }) => theme('colors'),\n colors: ({ colors }) => ({\n inherit: colors.inherit,\n current: colors.current,\n transparent: colors.transparent,\n black: colors.black,\n white: colors.white,\n slate: colors.slate,\n gray: colors.gray,\n zinc: colors.zinc,\n neutral: colors.neutral,\n stone: colors.stone,\n red: colors.red,\n orange: colors.orange,\n amber: colors.amber,\n yellow: colors.yellow,\n lime: colors.lime,\n green: colors.green,\n emerald: colors.emerald,\n teal: colors.teal,\n cyan: colors.cyan,\n sky: colors.sky,\n blue: colors.blue,\n indigo: colors.indigo,\n violet: colors.violet,\n purple: colors.purple,\n fuchsia: colors.fuchsia,\n pink: colors.pink,\n rose: colors.rose,\n }),\n columns: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n '3xs': '16rem',\n '2xs': '18rem',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n },\n container: {},\n content: {\n none: 'none',\n },\n contrast: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 100: '1',\n 125: '1.25',\n 150: '1.5',\n 200: '2',\n },\n cursor: {\n auto: 'auto',\n default: 'default',\n pointer: 'pointer',\n wait: 'wait',\n text: 'text',\n move: 'move',\n help: 'help',\n 'not-allowed': 'not-allowed',\n none: 'none',\n 'context-menu': 'context-menu',\n progress: 'progress',\n cell: 'cell',\n crosshair: 'crosshair',\n 'vertical-text': 'vertical-text',\n alias: 'alias',\n copy: 'copy',\n 'no-drop': 'no-drop',\n grab: 'grab',\n grabbing: 'grabbing',\n 'all-scroll': 'all-scroll',\n 'col-resize': 'col-resize',\n 'row-resize': 'row-resize',\n 'n-resize': 'n-resize',\n 'e-resize': 'e-resize',\n 's-resize': 's-resize',\n 'w-resize': 'w-resize',\n 'ne-resize': 'ne-resize',\n 'nw-resize': 'nw-resize',\n 'se-resize': 'se-resize',\n 'sw-resize': 'sw-resize',\n 'ew-resize': 'ew-resize',\n 'ns-resize': 'ns-resize',\n 'nesw-resize': 'nesw-resize',\n 'nwse-resize': 'nwse-resize',\n 'zoom-in': 'zoom-in',\n 'zoom-out': 'zoom-out',\n },\n divideColor: ({ theme }) => theme('borderColor'),\n divideOpacity: ({ theme }) => theme('borderOpacity'),\n divideWidth: ({ theme }) => theme('borderWidth'),\n dropShadow: {\n sm: '0 1px 1px rgb(0 0 0 / 0.05)',\n DEFAULT: ['0 1px 2px rgb(0 0 0 / 0.1)', '0 1px 1px rgb(0 0 0 / 0.06)'],\n md: ['0 4px 3px rgb(0 0 0 / 0.07)', '0 2px 2px rgb(0 0 0 / 0.06)'],\n lg: ['0 10px 8px rgb(0 0 0 / 0.04)', '0 4px 3px rgb(0 0 0 / 0.1)'],\n xl: ['0 20px 13px rgb(0 0 0 / 0.03)', '0 8px 5px rgb(0 0 0 / 0.08)'],\n '2xl': '0 25px 25px rgb(0 0 0 / 0.15)',\n none: '0 0 #0000',\n },\n fill: ({ theme }) => ({\n none: 'none',\n ...theme('colors'),\n }),\n flex: {\n 1: '1 1 0%',\n auto: '1 1 auto',\n initial: '0 1 auto',\n none: 'none',\n },\n flexBasis: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n }),\n flexGrow: {\n 0: '0',\n DEFAULT: '1',\n },\n flexShrink: {\n 0: '0',\n DEFAULT: '1',\n },\n fontFamily: {\n sans: [\n 'ui-sans-serif',\n 'system-ui',\n '-apple-system',\n 'BlinkMacSystemFont',\n '\"Segoe UI\"',\n 'Roboto',\n '\"Helvetica Neue\"',\n 'Arial',\n '\"Noto Sans\"',\n 'sans-serif',\n '\"Apple Color Emoji\"',\n '\"Segoe UI Emoji\"',\n '\"Segoe UI Symbol\"',\n '\"Noto Color Emoji\"',\n ],\n serif: ['ui-serif', 'Georgia', 'Cambria', '\"Times New Roman\"', 'Times', 'serif'],\n mono: [\n 'ui-monospace',\n 'SFMono-Regular',\n 'Menlo',\n 'Monaco',\n 'Consolas',\n '\"Liberation Mono\"',\n '\"Courier New\"',\n 'monospace',\n ],\n },\n fontSize: {\n xs: ['0.75rem', { lineHeight: '1rem' }],\n sm: ['0.875rem', { lineHeight: '1.25rem' }],\n base: ['1rem', { lineHeight: '1.5rem' }],\n lg: ['1.125rem', { lineHeight: '1.75rem' }],\n xl: ['1.25rem', { lineHeight: '1.75rem' }],\n '2xl': ['1.5rem', { lineHeight: '2rem' }],\n '3xl': ['1.875rem', { lineHeight: '2.25rem' }],\n '4xl': ['2.25rem', { lineHeight: '2.5rem' }],\n '5xl': ['3rem', { lineHeight: '1' }],\n '6xl': ['3.75rem', { lineHeight: '1' }],\n '7xl': ['4.5rem', { lineHeight: '1' }],\n '8xl': ['6rem', { lineHeight: '1' }],\n '9xl': ['8rem', { lineHeight: '1' }],\n },\n fontWeight: {\n thin: '100',\n extralight: '200',\n light: '300',\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n },\n gap: ({ theme }) => theme('spacing'),\n gradientColorStops: ({ theme }) => theme('colors'),\n gradientColorStopPositions: {\n '0%': '0%',\n '5%': '5%',\n '10%': '10%',\n '15%': '15%',\n '20%': '20%',\n '25%': '25%',\n '30%': '30%',\n '35%': '35%',\n '40%': '40%',\n '45%': '45%',\n '50%': '50%',\n '55%': '55%',\n '60%': '60%',\n '65%': '65%',\n '70%': '70%',\n '75%': '75%',\n '80%': '80%',\n '85%': '85%',\n '90%': '90%',\n '95%': '95%',\n '100%': '100%',\n },\n grayscale: {\n 0: '0',\n DEFAULT: '100%',\n },\n gridAutoColumns: {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n },\n gridAutoRows: {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n },\n gridColumn: {\n auto: 'auto',\n 'span-1': 'span 1 / span 1',\n 'span-2': 'span 2 / span 2',\n 'span-3': 'span 3 / span 3',\n 'span-4': 'span 4 / span 4',\n 'span-5': 'span 5 / span 5',\n 'span-6': 'span 6 / span 6',\n 'span-7': 'span 7 / span 7',\n 'span-8': 'span 8 / span 8',\n 'span-9': 'span 9 / span 9',\n 'span-10': 'span 10 / span 10',\n 'span-11': 'span 11 / span 11',\n 'span-12': 'span 12 / span 12',\n 'span-full': '1 / -1',\n },\n gridColumnEnd: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridColumnStart: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridRow: {\n auto: 'auto',\n 'span-1': 'span 1 / span 1',\n 'span-2': 'span 2 / span 2',\n 'span-3': 'span 3 / span 3',\n 'span-4': 'span 4 / span 4',\n 'span-5': 'span 5 / span 5',\n 'span-6': 'span 6 / span 6',\n 'span-full': '1 / -1',\n },\n gridRowEnd: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n },\n gridRowStart: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n },\n gridTemplateColumns: {\n none: 'none',\n 1: 'repeat(1, minmax(0, 1fr))',\n 2: 'repeat(2, minmax(0, 1fr))',\n 3: 'repeat(3, minmax(0, 1fr))',\n 4: 'repeat(4, minmax(0, 1fr))',\n 5: 'repeat(5, minmax(0, 1fr))',\n 6: 'repeat(6, minmax(0, 1fr))',\n 7: 'repeat(7, minmax(0, 1fr))',\n 8: 'repeat(8, minmax(0, 1fr))',\n 9: 'repeat(9, minmax(0, 1fr))',\n 10: 'repeat(10, minmax(0, 1fr))',\n 11: 'repeat(11, minmax(0, 1fr))',\n 12: 'repeat(12, minmax(0, 1fr))',\n },\n gridTemplateRows: {\n none: 'none',\n 1: 'repeat(1, minmax(0, 1fr))',\n 2: 'repeat(2, minmax(0, 1fr))',\n 3: 'repeat(3, minmax(0, 1fr))',\n 4: 'repeat(4, minmax(0, 1fr))',\n 5: 'repeat(5, minmax(0, 1fr))',\n 6: 'repeat(6, minmax(0, 1fr))',\n },\n height: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n full: '100%',\n screen: '100vh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n hueRotate: {\n 0: '0deg',\n 15: '15deg',\n 30: '30deg',\n 60: '60deg',\n 90: '90deg',\n 180: '180deg',\n },\n inset: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n full: '100%',\n }),\n invert: {\n 0: '0',\n DEFAULT: '100%',\n },\n keyframes: {\n spin: {\n to: {\n transform: 'rotate(360deg)',\n },\n },\n ping: {\n '75%, 100%': {\n transform: 'scale(2)',\n opacity: '0',\n },\n },\n pulse: {\n '50%': {\n opacity: '.5',\n },\n },\n bounce: {\n '0%, 100%': {\n transform: 'translateY(-25%)',\n animationTimingFunction: 'cubic-bezier(0.8,0,1,1)',\n },\n '50%': {\n transform: 'none',\n animationTimingFunction: 'cubic-bezier(0,0,0.2,1)',\n },\n },\n },\n letterSpacing: {\n tighter: '-0.05em',\n tight: '-0.025em',\n normal: '0em',\n wide: '0.025em',\n wider: '0.05em',\n widest: '0.1em',\n },\n lineHeight: {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '2',\n 3: '.75rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n },\n listStyleType: {\n none: 'none',\n disc: 'disc',\n decimal: 'decimal',\n },\n listStyleImage: {\n none: 'none',\n },\n margin: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n }),\n lineClamp: {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n },\n maxHeight: ({ theme }) => ({\n ...theme('spacing'),\n none: 'none',\n full: '100%',\n screen: '100vh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n maxWidth: ({ theme, breakpoints }) => ({\n none: 'none',\n 0: '0rem',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n prose: '65ch',\n ...breakpoints(theme('screens')),\n }),\n minHeight: {\n 0: '0px',\n full: '100%',\n screen: '100vh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n },\n minWidth: {\n 0: '0px',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n },\n objectPosition: {\n bottom: 'bottom',\n center: 'center',\n left: 'left',\n 'left-bottom': 'left bottom',\n 'left-top': 'left top',\n right: 'right',\n 'right-bottom': 'right bottom',\n 'right-top': 'right top',\n top: 'top',\n },\n opacity: {\n 0: '0',\n 5: '0.05',\n 10: '0.1',\n 20: '0.2',\n 25: '0.25',\n 30: '0.3',\n 40: '0.4',\n 50: '0.5',\n 60: '0.6',\n 70: '0.7',\n 75: '0.75',\n 80: '0.8',\n 90: '0.9',\n 95: '0.95',\n 100: '1',\n },\n order: {\n first: '-9999',\n last: '9999',\n none: '0',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n outlineColor: ({ theme }) => theme('colors'),\n outlineOffset: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n outlineWidth: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n padding: ({ theme }) => theme('spacing'),\n placeholderColor: ({ theme }) => theme('colors'),\n placeholderOpacity: ({ theme }) => theme('opacity'),\n ringColor: ({ theme }) => ({\n DEFAULT: theme('colors.blue.500', '#3b82f6'),\n ...theme('colors'),\n }),\n ringOffsetColor: ({ theme }) => theme('colors'),\n ringOffsetWidth: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n ringOpacity: ({ theme }) => ({\n DEFAULT: '0.5',\n ...theme('opacity'),\n }),\n ringWidth: {\n DEFAULT: '3px',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n rotate: {\n 0: '0deg',\n 1: '1deg',\n 2: '2deg',\n 3: '3deg',\n 6: '6deg',\n 12: '12deg',\n 45: '45deg',\n 90: '90deg',\n 180: '180deg',\n },\n saturate: {\n 0: '0',\n 50: '.5',\n 100: '1',\n 150: '1.5',\n 200: '2',\n },\n scale: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 90: '.9',\n 95: '.95',\n 100: '1',\n 105: '1.05',\n 110: '1.1',\n 125: '1.25',\n 150: '1.5',\n },\n screens: {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n '2xl': '1536px',\n },\n scrollMargin: ({ theme }) => ({\n ...theme('spacing'),\n }),\n scrollPadding: ({ theme }) => theme('spacing'),\n sepia: {\n 0: '0',\n DEFAULT: '100%',\n },\n skew: {\n 0: '0deg',\n 1: '1deg',\n 2: '2deg',\n 3: '3deg',\n 6: '6deg',\n 12: '12deg',\n },\n space: ({ theme }) => ({\n ...theme('spacing'),\n }),\n spacing: {\n px: '1px',\n 0: '0px',\n 0.5: '0.125rem',\n 1: '0.25rem',\n 1.5: '0.375rem',\n 2: '0.5rem',\n 2.5: '0.625rem',\n 3: '0.75rem',\n 3.5: '0.875rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n 11: '2.75rem',\n 12: '3rem',\n 14: '3.5rem',\n 16: '4rem',\n 20: '5rem',\n 24: '6rem',\n 28: '7rem',\n 32: '8rem',\n 36: '9rem',\n 40: '10rem',\n 44: '11rem',\n 48: '12rem',\n 52: '13rem',\n 56: '14rem',\n 60: '15rem',\n 64: '16rem',\n 72: '18rem',\n 80: '20rem',\n 96: '24rem',\n },\n stroke: ({ theme }) => ({\n none: 'none',\n ...theme('colors'),\n }),\n strokeWidth: {\n 0: '0',\n 1: '1',\n 2: '2',\n },\n supports: {},\n data: {},\n textColor: ({ theme }) => theme('colors'),\n textDecorationColor: ({ theme }) => theme('colors'),\n textDecorationThickness: {\n auto: 'auto',\n 'from-font': 'from-font',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n textIndent: ({ theme }) => ({\n ...theme('spacing'),\n }),\n textOpacity: ({ theme }) => theme('opacity'),\n textUnderlineOffset: {\n auto: 'auto',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n transformOrigin: {\n center: 'center',\n top: 'top',\n 'top-right': 'top right',\n right: 'right',\n 'bottom-right': 'bottom right',\n bottom: 'bottom',\n 'bottom-left': 'bottom left',\n left: 'left',\n 'top-left': 'top left',\n },\n transitionDelay: {\n 0: '0s',\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n },\n transitionDuration: {\n DEFAULT: '150ms',\n 0: '0s',\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n },\n transitionProperty: {\n none: 'none',\n all: 'all',\n DEFAULT:\n 'color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter',\n colors: 'color, background-color, border-color, text-decoration-color, fill, stroke',\n opacity: 'opacity',\n shadow: 'box-shadow',\n transform: 'transform',\n },\n transitionTimingFunction: {\n DEFAULT: 'cubic-bezier(0.4, 0, 0.2, 1)',\n linear: 'linear',\n in: 'cubic-bezier(0.4, 0, 1, 1)',\n out: 'cubic-bezier(0, 0, 0.2, 1)',\n 'in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',\n },\n translate: ({ theme }) => ({\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n full: '100%',\n }),\n width: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n screen: '100vw',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n willChange: {\n auto: 'auto',\n scroll: 'scroll-position',\n contents: 'contents',\n transform: 'transform',\n },\n zIndex: {\n auto: 'auto',\n 0: '0',\n 10: '10',\n 20: '20',\n 30: '30',\n 40: '40',\n 50: '50',\n },\n },\n plugins: [],\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return getAllConfigs;\n }\n});\nconst _configfull = /*#__PURE__*/ _interop_require_default(require(\"../../stubs/config.full.js\"));\nconst _featureFlags = require(\"../featureFlags\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction getAllConfigs(config) {\n var _config_presets;\n const configs = ((_config_presets = config === null || config === void 0 ? void 0 : config.presets) !== null && _config_presets !== void 0 ? _config_presets : [\n _configfull.default\n ]).slice().reverse().flatMap((preset)=>getAllConfigs(preset instanceof Function ? preset() : preset));\n const features = {\n // Add experimental configs here...\n respectDefaultRingColorOpacity: {\n theme: {\n ringColor: ({ theme })=>({\n DEFAULT: \"#3b82f67f\",\n ...theme(\"colors\")\n })\n }\n },\n disableColorOpacityUtilitiesByDefault: {\n corePlugins: {\n backgroundOpacity: false,\n borderOpacity: false,\n divideOpacity: false,\n placeholderOpacity: false,\n ringOpacity: false,\n textOpacity: false\n }\n }\n };\n const experimentals = Object.keys(features).filter((feature)=>(0, _featureFlags.flagEnabled)(config, feature)).map((feature)=>features[feature]);\n return [\n config,\n ...experimentals,\n ...configs\n ];\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return resolveConfig;\n }\n});\nconst _resolveConfig = /*#__PURE__*/ _interop_require_default(require(\"../util/resolveConfig\"));\nconst _getAllConfigs = /*#__PURE__*/ _interop_require_default(require(\"../util/getAllConfigs\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction resolveConfig(...configs) {\n let [, ...defaultConfigs] = (0, _getAllConfigs.default)(configs[0]);\n return (0, _resolveConfig.default)([\n ...configs,\n ...defaultConfigs\n ]);\n}\n","let resolveConfig = require('./lib/public/resolve-config')\nmodule.exports = (resolveConfig.__esModule ? resolveConfig : { default: resolveConfig }).default\n","let colors = require('./lib/public/colors')\nmodule.exports = (colors.__esModule ? colors : { default: colors }).default\n","import * as TailwindColors from \"tailwindcss/colors\"\n\nexport const BrandColors = {\n 50: \"#FCE3E4\",\n 100: \"#F9CDCE\",\n 200: \"#F39699\",\n 300: \"#ED6368\",\n 400: \"#E72C32\",\n 500: \"#C4161C\",\n 600: \"#9C1216\",\n 700: \"#770D11\",\n 800: \"#4E090B\",\n 900: \"#290506\",\n}\n\nconst customColors = {\n onprimary: TailwindColors.white,\n warning: TailwindColors.amber,\n error: TailwindColors.rose,\n info: TailwindColors.cyan,\n success: TailwindColors.lime,\n primary: TailwindColors.sky,\n brand: BrandColors,\n}\n\nexport const CustomColors = {\n ...customColors,\n // Warning\n warning: customColors.warning[\"500\"],\n \"warning-darken\": customColors.warning[\"600\"],\n \"warning-lighten\": customColors.warning[\"400\"],\n // Success\n success: customColors.success[\"500\"],\n \"success-darken\": customColors.success[\"600\"],\n \"success-lighten\": customColors.success[\"400\"],\n // Error\n error: customColors.error[\"500\"],\n \"error-darken\": customColors.error[\"600\"],\n \"error-lighten\": customColors.error[\"400\"],\n // Info\n info: customColors.info[\"500\"],\n \"info-darken\": customColors.info[\"600\"],\n \"info-lighten\": customColors.info[\"400\"],\n // Primary\n primary: customColors.primary[\"500\"],\n \"primary-darken\": customColors.primary[\"600\"],\n \"primary-lighten\": customColors.primary[\"400\"],\n // Surfaces\n onsurface: TailwindColors.slate[\"500\"],\n onbackground: TailwindColors.slate[\"700\"],\n surface: TailwindColors.slate[\"50\"],\n background: TailwindColors.white,\n}\n\nexport default {\n prefix: \"e-\",\n corePlugins: {\n preflight: false,\n },\n content: [\"./src/**/*.{html,js,vue,ts}\"],\n theme: {\n extend: {\n colors: CustomColors,\n maxWidth: {\n \"1/12\": \"8.333333333%\",\n \"2/12\": \"16.666666666%\",\n \"3/12\": \"25%\",\n \"4/12\": \"33.333333333%\",\n \"5/12\": \"41.666666667%\",\n \"6/12\": \"50%\",\n \"7/12\": \"58.333333334%\",\n \"8/12\": \"66.666666666%\",\n \"9/12\": \"75%\",\n \"10/12\": \"83.333333334%\",\n \"11/12\": \"91.666666666%\",\n \"12/12\": \"100%\",\n },\n },\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n base: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"1.875rem\",\n \"4xl\": \"2.25rem\",\n \"5xl\": \"3rem\",\n \"6xl\": \"3.75rem\",\n \"7xl\": \"4.5rem\",\n \"8xl\": \"6rem\",\n \"9xl\": \"8rem\",\n },\n },\n plugins: [],\n safelist: [\n {\n pattern: /e-w-(full|auto)/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-grow/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-basis-(\\d{1,2}\\/\\d{1,2}|full|auto|0)/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /^!?e-max-w-(\\d{1,2}\\/\\d{1,2})/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-offset-(1[0-2]|[1-9])/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-items-(start|center|end|baseline|stretch)/,\n },\n {\n pattern: /e-self-(start|center|end|baseline|stretch)/,\n },\n {\n pattern:\n /e-justify-(around|between|center|end|evenly|normal|start|stretch)/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern:\n /e-content-(around|baseline|between|center|end|evenly|normal|start|stretch)/,\n },\n ],\n}\n","import resolveConfig from \"tailwindcss/resolveConfig\"\nimport tailwindConfig from \"../config\"\nimport { Size, BaseColor } from \"@/types\"\n\nexport const fullConfig = resolveConfig(tailwindConfig) as any\n\nexport const TextSizes = fullConfig.theme.fontSize\n\nexport const Colors = fullConfig.theme.colors\n\nexport const BadgeSizes = [\n Size.dot,\n Size.xs,\n Size.sm,\n Size.md,\n Size.lg,\n Size.xl,\n] as const\n\nexport const AvatarSizes = [\n Size.xs,\n Size.sm,\n Size.md,\n Size.lg,\n Size.xl,\n Size[\"2xl\"],\n] as const\n\nexport const IconSizes = [\n Size.xs,\n Size.sm,\n Size.md,\n Size.base,\n Size.lg,\n Size.xl,\n Size[\"2xl\"],\n Size[\"3xl\"],\n Size[\"4xl\"],\n Size[\"5xl\"],\n Size[\"6xl\"],\n Size[\"7xl\"],\n Size[\"8xl\"],\n Size[\"9xl\"],\n] as const\n\nexport const BadgeColors = [\n BaseColor.warning,\n BaseColor.error,\n BaseColor.info,\n BaseColor.success,\n BaseColor.primary,\n BaseColor.default,\n] as const\n\nexport const EVENTS = [\n \"play\",\n \"pause\",\n \"ended\",\n \"loadeddata\",\n \"waiting\",\n \"playing\",\n \"timeupdate\",\n \"canplay\",\n \"canplaythrough\",\n \"statechanged\",\n]\n\nexport default {}\n","\nimport Vue, { PropType } from \"vue\"\nimport { IconSizes } from \"@/constants\"\nimport { BaseColor, Size, TailwindColorClass, TIconSize } from \"@/types\"\n\nexport default Vue.extend({\n name: \"EIcon\",\n props: {\n icon: {\n type: String,\n default: \"\",\n },\n color: {\n type: String as PropType<TailwindColorClass>,\n default: BaseColor.default,\n },\n size: {\n type: String as PropType<TIconSize>,\n default: Size.sm,\n },\n },\n computed: {\n sizes(): Record<Size, string> {\n return IconSizes.reduce((acc, s) => {\n return {\n ...acc,\n [s]: `e-text-${s}`,\n }\n }, {}) as Record<Size, string>\n },\n iconClasses(): string[] {\n const sizeClasses = this.sizes[this.size] || this.sizes[Size.sm]\n const iconClasses = `${\n this.icon?.split(\" \")?.length > 1 ? this.icon : `fa fa-${this.icon}`\n }`\n const color = this.color\n\n return [\n \"e-inline-flex e-items-center e-justify-center e-rounded-full\",\n color,\n iconClasses,\n sizeClasses,\n ]\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { Size } from \"@/types\"\nimport { TextSizes, Colors } from \"@/constants\"\n\nexport default Vue.extend({\n name: \"ESpinner\",\n props: {\n dark: {\n type: Boolean,\n default: false,\n },\n color: {\n type: Boolean,\n default: true,\n },\n animationDuration: {\n type: [Number, String],\n default: 1000,\n },\n size: {\n type: String as PropType<Size>,\n default: Size.base,\n },\n opacity: {\n type: [String, Number],\n default: 1,\n },\n },\n data() {\n return {\n sizes: TextSizes,\n colors: Colors,\n }\n },\n computed: {\n computedSize(): number {\n return this.sizes[Size[this.size]] || this.size || this.sizes[Size.base]\n },\n fill(): { primary: string; secondary: string } {\n let fill = {\n primary: this.colors.brand[500],\n secondary: this.colors.neutral[300],\n }\n\n if (this.dark && !this.color) {\n fill = {\n primary: this.colors.neutral[100],\n secondary: this.colors.neutral[100],\n }\n }\n\n if (!this.dark && this.color) {\n fill = {\n primary: this.colors.brand[500],\n secondary: this.colors.neutral[950],\n }\n }\n\n if (!this.dark && !this.color) {\n fill = {\n primary: this.colors.neutral[200],\n secondary: this.colors.neutral[200],\n }\n }\n\n return fill\n },\n },\n methods: {\n getNthPathStyle(index: number) {\n const animationDuration =\n typeof this.animationDuration === \"string\"\n ? Number.parseInt(this.animationDuration)\n : this.animationDuration\n\n return {\n animationDuration: `${this.animationDuration}ms`,\n animationDelay: `${(index / 10) * animationDuration}ms`,\n fill: `${this.fill[index % 2 === 0 ? \"primary\" : \"secondary\"]}`,\n }\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { FlexAlignContent, FlexAlignItems, FlexJustifyContent } from \"@/types\"\n\nexport default Vue.extend({\n props: {\n align: {\n type: String as PropType<FlexAlignItems>,\n default: undefined,\n },\n alignContent: {\n type: String as PropType<FlexAlignContent>,\n default: undefined,\n },\n justify: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifyXs: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifySm: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifyMd: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifyLg: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifyXl: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n noGutters: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n },\n computed: {\n justifyClasses(): Record<string, boolean> {\n return {\n [`e-justify-${this.justify}`]: !!this.justify,\n [`xs:e-justify-${this.justifySm}`]: !!this.justifySm,\n [`sm:e-justify-${this.justifySm}`]: !!this.justifySm,\n [`md:e-justify-${this.justifyMd}`]: !!this.justifyMd,\n [`lg:e-justify-${this.justifyLg}`]: !!this.justifyLg,\n [`xl:e-justify-${this.justifyXl}`]: !!this.justifyXl,\n }\n },\n rowClasses(): Record<string, boolean> {\n return {\n ...(this.align ? { [`e-items-${this.align}`]: true } : {}),\n ...(this.alignContent\n ? { [`e-content-${this.alignContent}`]: true }\n : {}),\n ...(this.noGutters ? { [\"e-row--no-gutters\"]: true } : {}),\n ...this.justifyClasses,\n }\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { FlexAlignSelf } from \"@/types\"\n\nexport default Vue.extend({\n props: {\n alignSelf: {\n type: String as PropType<FlexAlignSelf>,\n default: \"auto\",\n },\n cols: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n lg: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n md: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n offset: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetLg: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetMd: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetSm: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetXs: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetXl: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n sm: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n xs: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n xl: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n },\n computed: {\n colClasses(): Record<string, boolean> {\n return {\n // Align self\n ...(this.alignSelf ? { [`e-self-${this.alignSelf}`]: true } : {}),\n\n // cols=\"auto\"\n [this.autoClasses(\"xs:\", this.xs)]: this.isSizePropAuto(this.xs),\n [this.autoClasses(\"sm:\", this.sm)]: this.isSizePropAuto(this.sm),\n [this.autoClasses(\"md:\", this.md)]: this.isSizePropAuto(this.md),\n [this.autoClasses(\"lg:\", this.lg)]: this.isSizePropAuto(this.lg),\n [this.autoClasses(\"xl:e\", this.xl)]: this.isSizePropAuto(this.xl),\n [this.autoClasses(\"\", this.cols)]: this.isSizePropAuto(this.cols, true),\n\n // cols=\"12\"\n \"xs:e-basis-full xs:!e-max-w-12/12\": this.xs === 12 || this.xs === \"12\",\n \"sm:e-basis-full sm:!e-max-w-12/12\": this.sm === 12 || this.sm === \"12\",\n \"md:e-basis-full md:!e-max-w-12/12\": this.md === 12 || this.md === \"12\",\n \"lg:e-basis-full lg:!e-max-w-12/12\": this.lg === 12 || this.lg === \"12\",\n \"xl:e-basis-full xl:!e-max-w-12/12\": this.xl === 12 || this.xl === \"12\",\n \"e-basis-full e-max-w-12/12\": this.cols === 12 || this.cols === \"12\",\n\n // cols=\"n\"\n [`xs:e-basis-${this.xs}/12 xs:!e-max-w-${this.xs}/12`]:\n this.isSizePropertyNumeric(this.xs),\n [`sm:e-basis-${this.sm}/12 sm:!e-max-w-${this.sm}/12`]:\n this.isSizePropertyNumeric(this.sm),\n [`md:e-basis-${this.md}/12 md:!e-max-w-${this.md}/12`]:\n this.isSizePropertyNumeric(this.md),\n [`lg:e-basis-${this.lg}/12 lg:!e-max-w-${this.lg}/12`]:\n this.isSizePropertyNumeric(this.lg),\n [`xl:e-basis-${this.xl}/12 xl:!e-max-w-${this.xl}/12`]:\n this.isSizePropertyNumeric(this.xl),\n [`e-basis-${this.cols}/12 !e-max-w-${this.cols}/12`]:\n this.isSizePropertyNumeric(this.cols),\n\n // offset=\"n\"\n [`xs:e-offset-${this.offsetXs}`]: this.offsetXs !== undefined,\n [`sm:e-offset-${this.offsetSm}`]: this.offsetSm !== undefined,\n [`md:e-offset-${this.offsetMd}`]: this.offsetMd !== undefined,\n [`lg:e-offset-${this.offsetLg}`]: this.offsetLg !== undefined,\n [`xl:e-offset-${this.offsetXl}`]: this.offsetXl !== undefined,\n [`e-offset-${this.offset}`]: this.offset !== undefined,\n }\n },\n },\n methods: {\n autoClasses(prefix: string, value: boolean | string | number) {\n const basis = value === \"auto\" ? \"auto\" : \"0\"\n const grow = value === \"auto\" ? \"-0\" : \"\"\n const width = value === \"auto\" ? \"auto\" : \"full\"\n\n return `${prefix}e-basis-${basis} ${prefix}e-grow${grow} ${prefix}e-w-${width}`\n },\n isSizePropAuto(\n prop: boolean | string | number | undefined,\n acceptUndefined = false\n ) {\n return (\n prop === \"auto\" ||\n prop === 0 ||\n prop === \"0\" ||\n (acceptUndefined && !prop)\n )\n },\n isSizePropertyNumeric(prop: boolean | string | number | undefined) {\n const n = Number.parseInt(prop as string)\n\n return prop !== \"auto\" && !isNaN(n) && n >= 1 && n < 12\n },\n },\n})\n","export function isFullScreen() {\n return !!(\n document.fullscreenElement ||\n document.mozFullScreenElement ||\n document.webkitFullscreenElement ||\n document.msFullscreenElement\n )\n}\n\nexport function makeFullScreen(element: HTMLElement) {\n if (isFullScreen()) {\n return new Promise((resolve) => resolve())\n }\n\n if (element.requestFullscreen) {\n return element?.requestFullscreen()\n } else if (element.mozRequestFullScreen) {\n return element?.mozRequestFullScreen()\n } else if (element.webkitRequestFullScreen) {\n return element?.webkitRequestFullScreen()\n } else if (element.msRequestFullscreen) {\n return element?.msRequestFullscreen()\n }\n}\n\nexport function exitFullScreen() {\n if (!isFullScreen()) {\n return new Promise((resolve) => resolve())\n }\n\n if (document.exitFullscreen) {\n return document.exitFullscreen()\n } else if (document.mozCancelFullScreen) {\n return document.mozCancelFullScreen()\n } else if (document.webkitCancelFullScreen) {\n return document.webkitCancelFullScreen()\n } else if (document.msExitFullscreen) {\n return document.msExitFullscreen()\n }\n}\n","\nimport Vue, { PropType } from \"vue\"\nimport { makeFullScreen, exitFullScreen } from \"@/utils\"\nimport ESpinner from \"@/components/ESpinner.vue\"\n// types:\nexport type VideoSource = {\n type: string\n src: string\n}\n\n// Helper functions\nconst leadingZeroFormatter = new Intl.NumberFormat(undefined, {\n minimumIntegerDigits: 2,\n})\n\n// List of events so we can bind them on mount\nexport const VIDEO_PLAYER_EVENTS = [\n \"play\",\n \"pause\",\n \"ended\",\n \"loadeddata\",\n \"waiting\",\n \"playing\",\n \"timeupdate\",\n \"canplay\",\n \"canplaythrough\",\n \"statechanged\",\n \"error\",\n]\n\nconst formatDuration = (time: number) => {\n const seconds = Math.floor(time % 60)\n const minutes = Math.floor(time / 60) % 60\n const hours = Math.floor(time / 3600)\n if (hours === 0) {\n return `${minutes}:${leadingZeroFormatter.format(seconds)}`\n } else {\n return `${hours}:${leadingZeroFormatter.format(\n minutes\n )}:${leadingZeroFormatter.format(seconds)}`\n }\n}\n\nexport default Vue.extend({\n name: \"VideoPlayer\",\n components: {\n ESpinner,\n },\n props: {\n sources: {\n type: [Array, String] as PropType<VideoSource[] | string>,\n required: true,\n },\n videoListeners: {\n type: Object as PropType<Partial<HTMLVideoElement>>,\n default: () => ({}),\n },\n videoOptions: {\n type: Object as PropType<Partial<HTMLVideoElement>>,\n default: () => ({}),\n },\n },\n data() {\n return {\n playing: false,\n percentagePlayed: 0,\n videoLength: \"0:00\",\n duration: 0,\n videoDuration: 0,\n currentTime: \"0:00\",\n realtime: 0,\n isScrubbing: false,\n wasPaused: false,\n isFullscreen: false,\n isFinished: false,\n isLoading: true,\n isError: false,\n }\n },\n computed: {\n sourceItems() {\n return (\n Array.isArray(this.sources) ? this.sources : [{ src: this.sources }]\n ) as VideoSource[]\n },\n hasStartedOrFinished(): boolean {\n return (\n (this.isFinished || this.realtime <= 0.1) &&\n !this.isLoading &&\n !this.isLooped()\n )\n },\n withControls() {\n const videoOptions = this.videoOptions as Partial<HTMLVideoElement>\n\n return videoOptions?.controls === false ? \"hide\" : \"\"\n },\n },\n mounted() {\n this.bindEvents()\n this.initializePlayer()\n this.initializeFullscreenListeners()\n },\n destroyed() {\n this.unbindEvents()\n this.destroyPlayer()\n this.removeFullscreenListeners()\n },\n\n methods: {\n handle404Error() {\n this.isError = true\n this.isLoading = false\n this.playing = false\n },\n bindEvents() {\n VIDEO_PLAYER_EVENTS.forEach((event) => {\n this.bindVideoEvent(event)\n })\n },\n unbindEvents() {\n VIDEO_PLAYER_EVENTS.forEach((event) => {\n this.unbindVideoEvent(event)\n })\n },\n bindVideoEvent(which: string) {\n const player = this.$refs.player as HTMLVideoElement\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n player.addEventListener(\n which,\n (event) => {\n if (which === \"loadeddata\") {\n this.videoLength = formatDuration(player.duration)\n }\n\n if (which === \"timeupdate\") {\n this.percentagePlayed = (player.currentTime / player.duration) * 100\n timelineContainer.style.setProperty(\n \"--progress-position\",\n this.percentagePlayed.toString()\n )\n }\n\n this.$emit(which, { event, player: this })\n },\n true\n )\n },\n unbindVideoEvent(which: string) {\n const player = this.$refs.player as HTMLVideoElement\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n player.addEventListener(\n which,\n (event) => {\n if (which === \"loadeddata\") {\n this.videoLength = formatDuration(player.duration)\n }\n\n if (which === \"timeupdate\") {\n this.percentagePlayed = (player.currentTime / player.duration) * 100\n timelineContainer.style.setProperty(\n \"--progress-position\",\n this.percentagePlayed.toString()\n )\n }\n\n this.$emit(which, { event, player: this })\n },\n true\n )\n },\n initializePlayer() {\n const playerRef = this.$refs.player as HTMLVideoElement\n if (!playerRef) {\n return\n }\n if (playerRef.autoplay) {\n this.setPlaying(true)\n }\n document.addEventListener(\"mouseup\", this.handleScrubbingOnMouseEnd)\n document.addEventListener(\"keydown\", this.handleKeyDown)\n },\n destroyPlayer() {\n window.removeEventListener(\"keydown\", this.handleKeyDown)\n document.removeEventListener(\"mouseup\", this.handleScrubbingOnMouseEnd)\n },\n removeFullscreenListeners() {\n if (\n document.fullscreenEnabled ||\n document.webkitFullscreenEnabled ||\n document.mozFullScreenEnabled ||\n document.msFullscreenEnabled\n ) {\n document.removeEventListener(\n \"fullscreenchange\",\n this.handleFullscreenChange\n )\n document.removeEventListener(\n \"webkitfullscreenchange\",\n this.handleFullscreenChange\n )\n document.removeEventListener(\n \"mozfullscreenchange\",\n this.handleFullscreenChange\n )\n document.removeEventListener(\n \"MSFullscreenChange\",\n this.handleFullscreenChange\n )\n } else {\n console.log(\"Fullscreen API is not supported in this browser.\")\n }\n },\n initializeFullscreenListeners() {\n if (\n document.fullscreenEnabled ||\n document.webkitFullscreenEnabled ||\n document.mozFullScreenEnabled ||\n document.msFullscreenEnabled\n ) {\n document.addEventListener(\n \"fullscreenchange\",\n this.handleFullscreenChange\n )\n document.addEventListener(\n \"webkitfullscreenchange\",\n this.handleFullscreenChange\n )\n document.addEventListener(\n \"mozfullscreenchange\",\n this.handleFullscreenChange\n )\n document.addEventListener(\n \"MSFullscreenChange\",\n this.handleFullscreenChange\n )\n } else {\n console.log(\"Fullscreen API is not supported in this browser.\")\n }\n },\n handleFullscreenChange() {\n this.isFullscreen =\n document.fullscreenElement ||\n document.mozFullScreenElement ||\n document.webkitFullscreenElement ||\n document.msFullscreenElement ||\n (window.innerWidth == screen.width &&\n window.innerHeight == screen.height)\n },\n\n isLooped() {\n const player = this.$refs.player as HTMLVideoElement\n\n return player.loop\n },\n handleScrubbingOnMouseEnd(e: MouseEvent) {\n if (this.isScrubbing) {\n this.toggleScrubbing(e)\n }\n },\n handleEnded() {\n this.isFinished = true\n this.playing = false\n },\n handleLoading() {\n this.isLoading = false\n },\n play() {\n const playerRef = this.$refs.player as HTMLVideoElement\n if (!playerRef) {\n return\n }\n const playPromise = playerRef.play()\n if (playPromise !== undefined) {\n playerRef\n .play()\n .then(() => this.setPlaying(true))\n .catch(console.error)\n }\n },\n pause() {\n const playerRef = this.$refs.player as HTMLVideoElement\n if (!playerRef) {\n return\n }\n playerRef.pause()\n this.setPlaying(false)\n },\n togglePlay() {\n if (this.playing) {\n this.pause()\n } else {\n this.play()\n }\n },\n setPlaying(state: boolean) {\n this.playing = state\n },\n seekToPercentage(percentage: number) {\n const playerRef = this.$refs.player as HTMLVideoElement\n if (!playerRef) {\n return\n }\n const currentTime = (percentage / 100) * playerRef.duration\n playerRef.currentTime = currentTime\n },\n convertTimeToDuration(seconds: number) {\n // @ts-ignore\n return [parseInt((seconds / 60) % 60, 10), parseInt(seconds % 60, 10)]\n .join(\":\")\n .replace(/\\b(\\d)\\b/g, \"0$1\")\n },\n\n closeFullscreenMode() {\n if (document.fullscreenElement) {\n exitFullScreen().then(() => {\n this.isFullscreen = false\n console.log(\"Exited fullscreen\")\n })\n\n this.isFullscreen = false\n }\n },\n openFullscreenMode() {\n const element = this.$refs.videoContainer as HTMLDivElement\n if (element) {\n makeFullScreen(element).then(() => {\n this.isFullscreen = true\n })\n this.isFullscreen = true\n }\n },\n toggleFullscreenMode() {\n if (this.isFullscreen) {\n this.closeFullscreenMode()\n } else {\n this.openFullscreenMode()\n }\n },\n\n getDuration() {\n const player = this.$refs.player as HTMLVideoElement\n this.videoLength = formatDuration(player.duration)\n this.videoDuration = player.duration\n },\n handleTimeUpdate() {\n const player = this.$refs.player as HTMLVideoElement\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n if (!player || !timelineContainer) {\n return\n }\n this.currentTime = formatDuration(player.currentTime)\n this.realtime = player.currentTime\n const percent = Number(this.realtime) / Number(this.videoDuration)\n timelineContainer.style.setProperty(\n \"--progress-position\",\n percent.toString()\n )\n },\n handleTimelineUpdate(e: MouseEvent) {\n const player = this.$refs.player as HTMLVideoElement\n if (!document.body.contains(player)) {\n return\n }\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n const rect = timelineContainer.getBoundingClientRect()\n const percent =\n Math.min(Math.max(0, e.x - rect.x), rect.width) / rect.width\n timelineContainer.style.setProperty(\n \"--preview-position\",\n percent.toString()\n )\n if (this.isScrubbing) {\n e.preventDefault()\n timelineContainer.style.setProperty(\n \"--progress-position\",\n percent.toString()\n )\n }\n },\n skip(duration = 5) {\n const player = this.$refs.player as HTMLVideoElement\n\n player.currentTime += duration\n },\n async toggleScrubbing(e: MouseEvent) {\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n const videoContainer = this.$refs.videoContainer as HTMLDivElement\n const player = this.$refs.player as HTMLVideoElement\n if (!player) {\n return\n }\n const rect = timelineContainer.getBoundingClientRect()\n const percent =\n Math.min(Math.max(0, e.x - rect.x), rect.width) / rect.width\n this.isScrubbing = (e.buttons & 1) === 1\n videoContainer.classList.toggle(\"scrubbing\", this.isScrubbing)\n if (this.isScrubbing) {\n this.wasPaused = player.paused\n await player.pause()\n this.handleTimelineUpdate(e)\n\n return\n }\n this.realtime = percent * this.videoDuration\n player.currentTime = percent * this.videoDuration\n if (this.wasPaused) {\n return\n }\n const playPromise = player.play()\n // @see issue: https://developer.chrome.com/blog/play-request-was-interrupted/\n if (playPromise !== undefined) {\n playPromise\n .then(() => this.handleTimelineUpdate(e))\n .catch(console.error)\n }\n },\n\n handleKeyDown(e: KeyboardEvent) {\n const tagName = document.activeElement?.tagName.toLowerCase()\n if (tagName === \"input\") {\n return\n }\n switch (e.key.toLowerCase()) {\n case \" \":\n if (tagName === \"button\") {\n return\n }\n this.togglePlay()\n break\n case \"k\":\n this.togglePlay()\n break\n case \"escape\":\n e.preventDefault()\n this.closeFullscreenMode()\n this.isFullscreen = false\n\n break\n case \"f\":\n this.openFullscreenMode()\n this.isFullscreen = true\n\n break\n }\n },\n },\n})\n","import * as d3 from \"d3\"\nimport { TimelineAxis, TimelineAxesConfig } from \"@/types\"\n\nconst getFormattedDay = (d: Date) => {\n const day = d3.utcFormat(\"%_d\")(d)\n const daySuffixes: { [key: string]: string } = {\n [\"1\"]: \"st\",\n [\"2\"]: \"nd\",\n [\"3\"]: \"rd\",\n }\n\n const daySuffix = daySuffixes[day.charAt(1)] || \"th\"\n\n return `${day}${daySuffix}`\n}\n\nconst getFormatterDayNoEndOfMonth = (d: Date) => {\n const nextDay = new Date(\n Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate() + 1)\n )\n const isEndOfTheMonth = nextDay.getUTCDate() === 1\n\n if (isEndOfTheMonth) {\n return \"\"\n }\n\n return d3.utcFormat(\"%-d\")(d)\n}\n\nconst getFormattedHour = (d: Date) => {\n return [\"0\", \" 0\", \"00\"].includes(d3.utcFormat(\"%H\")(d))\n ? \"\"\n : `${d3.utcFormat(\"%H\")(d)}h`\n}\n\nconst getFormattedHourMinute = (d: Date) => {\n const HH_MM = d3.utcFormat(\"%H:%M\")(d)\n\n return HH_MM === \"00:00\" ? \"\" : HH_MM\n}\n\nconst getFormattedMinuteSecond = (d: Date) => {\n return d3.utcFormat(\"%M:%S\")(d)\n}\n\nconst getFormattedOverviewMinuteSecond = (d: Date) => {\n const HH_MM_SS = d3.utcFormat(\"%Hh%Mm\")(d)\n\n return `${HH_MM_SS}`\n}\n\nconst getFormattedOverviewHour = (d: Date) => {\n const hour = getFormattedHourMinute(d)\n const day = getFormattedDay(d)\n const month = d3.utcFormat(\"%B\")(d)\n\n return hour || `${month} ${day}`\n}\n\nconst filterHourDivisibleBy = (n: number) => {\n return (d: Date) => {\n const hour = d3.utcFormat(\"%H\")(d)\n const minute = d3.utcFormat(\"%M\")(d)\n\n return !(minute === \"00\" && Number.parseInt(hour) % n === 0)\n }\n}\n\nconst filterMinutesDivisibleBy = (n: number) => {\n return (d: Date) => {\n const minute = d3.utcFormat(\"%M\")(d)\n\n return Number.parseInt(minute) % n !== 0\n }\n}\n\nconst filterMinutesSecondsDivisibleBy = (n: number) => {\n return (d: Date) => {\n const minute = d3.utcFormat(\"%M\")(d)\n const second = d3.utcFormat(\"%S\")(d)\n\n return Number.parseInt(minute) % n !== 0 && Number.parseInt(second) === 0\n }\n}\n\n/**\n * Precision of the timeline ticks\n * (measured in Hours per Pixel)\n */\nconst Precision = {\n _10_seconds: 0.000025,\n _20_seconds: 0.0001,\n _30_seconds: 0.00015,\n _1_minute: 0.0003,\n _2_minutes: 0.00075,\n _5_minutes: 0.002,\n _15_minutes: 0.005,\n _30_minutes: 0.01,\n _1_hour: 0.025,\n _2_hours: 0.05,\n _3_hours: 0.1,\n _4_hours: 0.15,\n _6_hours: 0.25,\n _1_day: 1,\n _2_days: 2,\n _1_month: 8,\n _1_month_abbr: 13,\n _1_month_letter: 22,\n _3_months: 33,\n infinity: Infinity,\n}\n\n/**\n * Map of formats and ticks intervals for the Timeline axis(s) by type.\n */\nexport const defaultAxesConfig: TimelineAxesConfig = {\n [TimelineAxis.overview]: [\n {\n precision: Precision._30_seconds,\n interval: d3.utcMinute.every(2),\n format: getFormattedOverviewMinuteSecond,\n },\n {\n precision: Precision._1_minute,\n interval: d3.utcMinute.every(5),\n format: getFormattedOverviewMinuteSecond,\n },\n {\n precision: Precision._2_minutes,\n interval: d3.utcMinute.every(10),\n format: getFormattedOverviewHour,\n },\n {\n precision: Precision._5_minutes,\n interval: d3.utcMinute.every(20),\n format: (d: Date) => {\n const HH_MM = getFormattedHourMinute(d)\n const hour = Number.parseInt(d3.utcFormat(\"%H\")(d))\n const day = getFormattedDay(d)\n const month = d3.utcFormat(\"%B\")(d)\n\n if (HH_MM && hour % 6 === 0) {\n return `${month} ${day} ${HH_MM}`\n }\n\n return getFormattedOverviewHour(d)\n },\n },\n {\n precision: Precision._15_minutes,\n interval: d3.utcHour,\n format: (d: Date) => {\n const HH_MM = getFormattedHourMinute(d)\n const hour = Number.parseInt(d3.utcFormat(\"%H\")(d))\n const day = getFormattedDay(d)\n const month = d3.utcFormat(\"%B\")(d)\n\n if (HH_MM && hour % 6 === 0) {\n return `${month} ${day} ${HH_MM}`\n }\n\n return getFormattedOverviewHour(d)\n },\n },\n {\n precision: Precision._30_minutes,\n interval: d3.utcHour.every(2),\n format: (d: Date) => {\n const HH_MM = getFormattedHourMinute(d)\n const hour = Number.parseInt(d3.utcFormat(\"%H\")(d))\n const day = getFormattedDay(d)\n const month = d3.utcFormat(\"%B\")(d)\n\n if (HH_MM && hour % 6 === 0) {\n return `${month} ${day} ${HH_MM}`\n }\n\n return getFormattedOverviewHour(d)\n },\n },\n {\n precision: Precision._2_hours,\n interval: d3.utcHour.every(6),\n format: (d: Date) => {\n const hour = getFormattedHourMinute(d)\n const day = getFormattedDay(d)\n const month = d3.utcFormat(\"%B\")(d)\n\n return hour || `${month} ${day}`\n },\n },\n {\n precision: Precision._3_hours,\n interval: d3.utcHour.every(12),\n format: getFormattedOverviewHour,\n },\n {\n precision: Precision._6_hours,\n interval: d3.utcHour.every(24),\n format: (d: Date) => {\n const day = getFormattedDay(d)\n const abbreviatedMonth = d3.utcFormat(\"%b\")(d)\n\n return `${abbreviatedMonth} ${day}`\n },\n },\n {\n precision: Precision._2_days,\n interval: d3.utcMonth,\n format: (d: Date) => {\n const startOfTheYear = d.getUTCMonth() === 0 && d.getUTCDate() === 1\n const format = startOfTheYear ? \"%Y – %B\" : \"%B\"\n\n return d3.utcFormat(format)(d)\n },\n },\n {\n precision: Precision.infinity,\n interval: d3.utcYear,\n format: \"%Y\",\n },\n ],\n [TimelineAxis.detailed]: [\n {\n precision: Precision._10_seconds,\n interval: d3.utcSecond.every(10),\n format: getFormattedMinuteSecond,\n },\n {\n precision: Precision._20_seconds,\n interval: d3.utcSecond\n .every(20)\n ?.filter(filterMinutesSecondsDivisibleBy(2)),\n format: getFormattedMinuteSecond,\n },\n {\n precision: Precision._30_seconds,\n interval: d3.utcSecond\n .every(30)\n ?.filter(filterMinutesSecondsDivisibleBy(2)),\n format: getFormattedMinuteSecond,\n },\n {\n precision: Precision._1_minute,\n interval: d3.utcMinute.filter(filterMinutesDivisibleBy(5)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._2_minutes,\n interval: d3.utcMinute.every(2)?.filter(filterMinutesDivisibleBy(10)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._5_minutes,\n interval: d3.utcMinute.every(5)?.filter(filterMinutesDivisibleBy(20)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._15_minutes,\n interval: d3.utcMinute.every(15)?.filter(filterHourDivisibleBy(1)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._30_minutes,\n interval: d3.utcMinute.every(30)?.filter(filterHourDivisibleBy(2)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._1_hour,\n interval: d3.utcHour.filter(filterHourDivisibleBy(6)),\n format: getFormattedHour,\n },\n {\n precision: Precision._2_hours,\n interval: d3.utcHour.every(2)?.filter(filterHourDivisibleBy(6)),\n format: getFormattedHour,\n },\n {\n precision: Precision._3_hours,\n interval: d3.utcHour.every(3)?.filter(filterHourDivisibleBy(12)),\n format: getFormattedHour,\n },\n {\n precision: Precision._4_hours,\n interval: d3.utcHour.every(4),\n format: getFormattedHour,\n },\n {\n precision: Precision._6_hours,\n interval: d3.utcHour.every(6),\n format: getFormattedHour,\n },\n {\n precision: Precision._1_day,\n interval: d3.utcDay,\n format: getFormatterDayNoEndOfMonth,\n },\n {\n precision: Precision._2_days,\n interval: d3.utcDay.every(2),\n format: getFormatterDayNoEndOfMonth,\n },\n {\n precision: Precision._1_month,\n interval: d3.utcMonth,\n format: \"%B\",\n },\n {\n precision: Precision._1_month_abbr,\n interval: d3.utcMonth,\n format: \"%b\",\n },\n {\n precision: Precision._1_month_letter,\n interval: d3.utcMonth,\n format: (d: Date) => d3.utcFormat(\"%B\")(d).charAt(0),\n },\n {\n precision: Precision._3_months,\n interval: d3.utcMonth.every(3),\n format: \"Q%q\",\n },\n {\n precision: Precision.infinity,\n interval: d3.utcMonth.every(3),\n format: \"\",\n },\n ],\n [TimelineAxis.detailedBackground]: [\n {\n precision: Precision._10_seconds,\n interval: d3.utcSecond,\n format: \"\",\n },\n {\n precision: Precision._20_seconds,\n interval: d3.utcSecond.every(5),\n format: \"\",\n },\n {\n precision: Precision._30_seconds,\n interval: d3.utcSecond.every(10),\n format: \"\",\n },\n {\n precision: Precision._1_minute,\n interval: d3.utcSecond.every(20),\n format: \"\",\n },\n {\n precision: Precision._2_minutes,\n interval: d3.utcSecond.every(30),\n format: \"\",\n },\n {\n precision: Precision._5_minutes,\n interval: d3.utcMinute,\n format: \"\",\n },\n {\n precision: Precision._15_minutes,\n interval: d3.utcMinute.every(3),\n format: \"\",\n },\n {\n precision: Precision._30_minutes,\n interval: d3.utcMinute.every(6),\n format: \"\",\n },\n {\n precision: Precision._1_hour,\n interval: d3.utcMinute.every(15),\n format: \"\",\n },\n {\n precision: Precision._2_hours,\n interval: d3.utcMinute.every(30),\n format: \"\",\n },\n {\n precision: Precision._3_hours,\n interval: d3.utcHour,\n format: \"\",\n },\n {\n precision: Precision._4_hours,\n interval: d3.utcHour,\n format: \"\",\n },\n {\n precision: Precision._6_hours,\n interval: d3.utcMinute.every(120),\n format: \"\",\n },\n {\n precision: Precision._1_day,\n interval: d3.utcHour.every(8),\n format: \"\",\n },\n {\n precision: Precision._2_days,\n interval: d3.utcHour.every(12),\n format: \"\",\n },\n {\n precision: Precision._1_month,\n interval: d3.utcDay.filter((d: Date) => {\n const dayOfMonth = d.getUTCDate()\n const daysInMonth = new Date(\n d.getUTCFullYear(),\n d.getUTCMonth() + 1,\n 0\n ).getUTCDate()\n const fifthOfMonth = Math.ceil(daysInMonth / 5) // 1/4 of the month\n\n return (\n dayOfMonth === fifthOfMonth ||\n dayOfMonth === 2 * fifthOfMonth ||\n dayOfMonth === 3 * fifthOfMonth ||\n dayOfMonth === 4 * fifthOfMonth\n )\n }),\n format: \"\",\n },\n {\n precision: Precision._1_month_abbr,\n interval: d3.utcDay.filter((d: Date) => {\n const dayOfMonth = d.getUTCDate()\n const daysInMonth = new Date(\n d.getUTCFullYear(),\n d.getUTCMonth() + 1,\n 0\n ).getUTCDate()\n const quarterOfTheMonth = Math.ceil(daysInMonth / 4) // 1/4 of the month\n\n return (\n dayOfMonth === quarterOfTheMonth ||\n dayOfMonth === 2 * quarterOfTheMonth ||\n dayOfMonth === 3 * quarterOfTheMonth\n )\n }),\n format: \"\",\n },\n {\n precision: Precision._1_month_letter,\n interval: d3.utcDay.filter((d: Date) => {\n const dayOfMonth = d.getUTCDate()\n const daysInMonth = new Date(\n d.getUTCFullYear(),\n d.getUTCMonth() + 1,\n 0\n ).getUTCDate()\n const halfOfTheMonth = Math.ceil(daysInMonth / 2) // 1/4 of the month\n\n return dayOfMonth === halfOfTheMonth\n }),\n format: \"\",\n },\n {\n precision: Precision._3_months,\n interval: d3.utcMonth,\n format: \"\",\n },\n {\n precision: Precision.infinity,\n interval: d3.utcMonth,\n format: \"\",\n },\n ],\n}\n","import { DirectiveOptions } from \"vue\"\n\nexport interface ObservedElement extends HTMLElement {\n __resizeObserver__?: ResizeObserver\n}\n\nconst ResizeObserverDirective: DirectiveOptions = {\n bind(el, binding) {\n const { value: callback } = binding\n\n if (typeof callback !== \"function\") {\n console.error(\"Invalid callback function provided to v-resize-observer\")\n\n return\n }\n\n const observer: ResizeObserver = new ResizeObserver(\n (entries: ResizeObserverEntry[]) => {\n if (!entries[0]) {\n return\n }\n\n callback(entries[0])\n }\n )\n\n observer.observe(el)\n ;(el as ObservedElement).__resizeObserver__ = observer\n },\n unbind(el) {\n if ((el as ObservedElement).__resizeObserver__) {\n ;(el as ObservedElement).__resizeObserver__!.disconnect()\n delete (el as ObservedElement).__resizeObserver__\n }\n },\n}\n\nexport default ResizeObserverDirective\n","import ResizeObserverDirective from \"@/directives/resize-observer\"\n\nexport const DirectivesMap = [\n {\n name: \"resize-observer\",\n definition: ResizeObserverDirective,\n },\n]\n\nexport { ResizeObserverDirective }\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\nvar hookCallback;\n\nfunction hooks() {\n return hookCallback.apply(null, arguments);\n}\n\n// This is done to register the method called with moment()\n// without creating circular dependencies.\nfunction setHookCallback(callback) {\n hookCallback = callback;\n}\n\nfunction isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n}\n\nfunction isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n}\n\nfunction hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n}\n\nfunction isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n}\n\nfunction isUndefined(input) {\n return input === void 0;\n}\n\nfunction isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n}\n\nfunction isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n}\n\nfunction map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n}\n\nfunction extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n}\n\nfunction createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n}\n\nfunction defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n}\n\nfunction getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n}\n\nvar some;\nif (Array.prototype.some) {\n some = Array.prototype.some;\n} else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n}\n\nfunction isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n}\n\nfunction createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n}\n\n// Plugins that add properties should also add the key here (null value),\n// so we can properly clone ourselves.\nvar momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\nfunction copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n}\n\n// Moment prototype object\nfunction Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n}\n\nfunction isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n}\n\nfunction warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n}\n\nfunction deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n}\n\nvar deprecations = {};\n\nfunction deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n}\n\nhooks.suppressDeprecationWarnings = false;\nhooks.deprecationHandler = null;\n\nfunction isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n}\n\nfunction set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n}\n\nfunction mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n}\n\nfunction Locale(config) {\n if (config != null) {\n this.set(config);\n }\n}\n\nvar keys;\n\nif (Object.keys) {\n keys = Object.keys;\n} else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n}\n\nvar defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n};\n\nfunction calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n}\n\nfunction zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n}\n\nvar formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n// token: 'M'\n// padded: ['MM', 2]\n// ordinal: 'Mo'\n// callback: function () { this.month() + 1 }\nfunction addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n}\n\nfunction removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n}\n\nfunction makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n}\n\n// format date using native date object\nfunction formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n}\n\nfunction expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n}\n\nvar defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n};\n\nfunction longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n}\n\nvar defaultInvalidDate = 'Invalid date';\n\nfunction invalidDate() {\n return this._invalidDate;\n}\n\nvar defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\nfunction ordinal(number) {\n return this._ordinal.replace('%d', number);\n}\n\nvar defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n};\n\nfunction relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n}\n\nfunction pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n}\n\nvar aliases = {};\n\nfunction addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n}\n\nfunction normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n}\n\nfunction normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n}\n\nvar priorities = {};\n\nfunction addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n}\n\nfunction getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n}\n\nfunction isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n\nfunction absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n}\n\nfunction toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n}\n\nfunction makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n}\n\nfunction get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n}\n\nfunction set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n}\n\n// MOMENTS\n\nfunction stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n}\n\nfunction stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n}\n\nvar match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\nregexes = {};\n\nfunction addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n}\n\nfunction getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n}\n\n// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\nfunction unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n}\n\nfunction regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nvar tokens = {};\n\nfunction addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n}\n\nfunction addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n}\n\nfunction addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n}\n\nvar YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\nfunction mod(n, x) {\n return ((n % x) + x) % x;\n}\n\nvar indexOf;\n\nif (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n} else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n}\n\nfunction daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n}\n\n// FORMATTING\n\naddFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n});\n\naddFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n});\n\naddFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n});\n\n// ALIASES\n\naddUnitAlias('month', 'M');\n\n// PRIORITY\n\naddUnitPriority('month', 8);\n\n// PARSING\n\naddRegexToken('M', match1to2);\naddRegexToken('MM', match1to2, match2);\naddRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n});\naddRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n});\n\naddParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n});\n\naddParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n});\n\n// LOCALES\n\nvar defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\nfunction localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n}\n\nfunction localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n}\n\nfunction handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n}\n\nfunction getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n}\n\nfunction getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n}\n\nfunction monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n}\n\nfunction monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n}\n\nfunction computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n}\n\n// FORMATTING\n\naddFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n});\n\naddFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n});\n\naddFormatToken(0, ['YYYY', 4], 0, 'year');\naddFormatToken(0, ['YYYYY', 5], 0, 'year');\naddFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n// ALIASES\n\naddUnitAlias('year', 'y');\n\n// PRIORITIES\n\naddUnitPriority('year', 1);\n\n// PARSING\n\naddRegexToken('Y', matchSigned);\naddRegexToken('YY', match1to2, match2);\naddRegexToken('YYYY', match1to4, match4);\naddRegexToken('YYYYY', match1to6, match6);\naddRegexToken('YYYYYY', match1to6, match6);\n\naddParseToken(['YYYYY', 'YYYYYY'], YEAR);\naddParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n});\naddParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n});\naddParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n});\n\n// HELPERS\n\nfunction daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\n// HOOKS\n\nhooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n};\n\n// MOMENTS\n\nvar getSetYear = makeGetSet('FullYear', true);\n\nfunction getIsLeapYear() {\n return isLeapYear(this.year());\n}\n\nfunction createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n}\n\nfunction createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n}\n\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n}\n\n// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\nfunction dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n}\n\nfunction weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n}\n\nfunction weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n}\n\n// FORMATTING\n\naddFormatToken('w', ['ww', 2], 'wo', 'week');\naddFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n// ALIASES\n\naddUnitAlias('week', 'w');\naddUnitAlias('isoWeek', 'W');\n\n// PRIORITIES\n\naddUnitPriority('week', 5);\naddUnitPriority('isoWeek', 5);\n\n// PARSING\n\naddRegexToken('w', match1to2);\naddRegexToken('ww', match1to2, match2);\naddRegexToken('W', match1to2);\naddRegexToken('WW', match1to2, match2);\n\naddWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n);\n\n// HELPERS\n\n// LOCALES\n\nfunction localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n}\n\nvar defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n};\n\nfunction localeFirstDayOfWeek() {\n return this._week.dow;\n}\n\nfunction localeFirstDayOfYear() {\n return this._week.doy;\n}\n\n// MOMENTS\n\nfunction getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\nfunction getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\n// FORMATTING\n\naddFormatToken('d', 0, 'do', 'day');\n\naddFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n});\n\naddFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n});\n\naddFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n});\n\naddFormatToken('e', 0, 0, 'weekday');\naddFormatToken('E', 0, 0, 'isoWeekday');\n\n// ALIASES\n\naddUnitAlias('day', 'd');\naddUnitAlias('weekday', 'e');\naddUnitAlias('isoWeekday', 'E');\n\n// PRIORITY\naddUnitPriority('day', 11);\naddUnitPriority('weekday', 11);\naddUnitPriority('isoWeekday', 11);\n\n// PARSING\n\naddRegexToken('d', match1to2);\naddRegexToken('e', match1to2);\naddRegexToken('E', match1to2);\naddRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n});\naddRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n});\naddRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n});\n\naddWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n});\n\naddWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n});\n\n// HELPERS\n\nfunction parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n}\n\nfunction parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n}\n\n// LOCALES\nfunction shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n}\n\nvar defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\nfunction localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n}\n\nfunction localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n}\n\nfunction localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n}\n\nfunction handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n}\n\nfunction getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n}\n\nfunction getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n}\n\nfunction weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n}\n\nfunction weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n}\n\nfunction weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n}\n\nfunction computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n}\n\n// FORMATTING\n\nfunction hFormat() {\n return this.hours() % 12 || 12;\n}\n\nfunction kFormat() {\n return this.hours() || 24;\n}\n\naddFormatToken('H', ['HH', 2], 0, 'hour');\naddFormatToken('h', ['hh', 2], 0, hFormat);\naddFormatToken('k', ['kk', 2], 0, kFormat);\n\naddFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n});\n\naddFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n});\n\nfunction meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n}\n\nmeridiem('a', true);\nmeridiem('A', false);\n\n// ALIASES\n\naddUnitAlias('hour', 'h');\n\n// PRIORITY\naddUnitPriority('hour', 13);\n\n// PARSING\n\nfunction matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n}\n\naddRegexToken('a', matchMeridiem);\naddRegexToken('A', matchMeridiem);\naddRegexToken('H', match1to2);\naddRegexToken('h', match1to2);\naddRegexToken('k', match1to2);\naddRegexToken('HH', match1to2, match2);\naddRegexToken('hh', match1to2, match2);\naddRegexToken('kk', match1to2, match2);\n\naddRegexToken('hmm', match3to4);\naddRegexToken('hmmss', match5to6);\naddRegexToken('Hmm', match3to4);\naddRegexToken('Hmmss', match5to6);\n\naddParseToken(['H', 'HH'], HOUR);\naddParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n});\naddParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n});\naddParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n});\naddParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n});\n\n// LOCALES\n\nfunction localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n}\n\nvar defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\nfunction localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n}\n\nvar baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n};\n\n// internal storage for locale config files\nvar locales = {},\n localeFamilies = {},\n globalLocale;\n\nfunction commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n}\n\nfunction normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n}\n\n// pick the locale from the array\n// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\nfunction chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n}\n\nfunction isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n}\n\nfunction loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n}\n\n// This function will load locale and then set the global locale. If\n// no arguments are passed in, it will simply return the current global\n// locale key.\nfunction getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n}\n\nfunction defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n}\n\nfunction updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n}\n\n// returns locale data\nfunction getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n}\n\nfunction listLocales() {\n return keys(locales);\n}\n\nfunction checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n}\n\n// iso 8601 regex\n// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\nvar extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n// date from iso format\nfunction configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n}\n\nfunction extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n}\n\nfunction untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n}\n\nfunction preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n}\n\nfunction checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n}\n\nfunction calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n}\n\n// date and time from ref 2822 format\nfunction configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n}\n\n// date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\nfunction configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n}\n\nhooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n);\n\n// Pick the first defined of two or three arguments.\nfunction defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n}\n\nfunction currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n}\n\n// convert an array to a date.\n// the array should mirror the parameters below\n// note: all values past the year are optional and will default to the lowest possible value.\n// [year, month, day , hour, minute, second, millisecond]\nfunction configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n}\n\nfunction dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n}\n\n// constant that refers to the ISO standard\nhooks.ISO_8601 = function () {};\n\n// constant that refers to the RFC 2822 form\nhooks.RFC_2822 = function () {};\n\n// date from string and format string\nfunction configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n}\n\nfunction meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n}\n\n// date from string and array of format strings\nfunction configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n}\n\nfunction configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n}\n\nfunction createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n}\n\nfunction prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n}\n\nfunction configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n}\n\nfunction createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n}\n\nfunction createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n}\n\nvar prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n// Pick a moment m from moments so that m[fn](other) is true for all\n// other. This relies on the function fn to be transitive.\n//\n// moments should either be an array of moment objects or an array, whose\n// first element is an array of moment objects.\nfunction pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n}\n\n// TODO: Use [].sort instead?\nfunction min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n}\n\nfunction max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n}\n\nvar now = function () {\n return Date.now ? Date.now() : +new Date();\n};\n\nvar ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n];\n\nfunction isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n}\n\nfunction isValid$1() {\n return this._isValid;\n}\n\nfunction createInvalid$1() {\n return createDuration(NaN);\n}\n\nfunction Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n}\n\nfunction isDuration(obj) {\n return obj instanceof Duration;\n}\n\nfunction absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n}\n\n// compare two arrays, return the number of differences\nfunction compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n}\n\n// FORMATTING\n\nfunction offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n}\n\noffset('Z', ':');\noffset('ZZ', '');\n\n// PARSING\n\naddRegexToken('Z', matchShortOffset);\naddRegexToken('ZZ', matchShortOffset);\naddParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n});\n\n// HELPERS\n\n// timezone chunker\n// '+10:00' > ['10', '00']\n// '-1530' > ['-15', '30']\nvar chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\nfunction offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n}\n\n// Return a moment from input, that is local/utc/zone equivalent to model.\nfunction cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n}\n\nfunction getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n}\n\n// HOOKS\n\n// This function will be called whenever a moment is mutated.\n// It is intended to keep the offset in sync with the timezone.\nhooks.updateOffset = function () {};\n\n// MOMENTS\n\n// keepLocalTime = true means only change the timezone, without\n// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n// +0200, so we adjust the time as needed, to be valid.\n//\n// Keeping the time actually adds/subtracts (one hour)\n// from the actual represented time. That is why we call updateOffset\n// a second time. In case it wants us to change the offset again\n// _changeInProgress == true case, then we have to adjust, because\n// there is no such time in the given timezone.\nfunction getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n}\n\nfunction getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n}\n\nfunction setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n}\n\nfunction setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n}\n\nfunction setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n}\n\nfunction hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n}\n\nfunction isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n}\n\nfunction isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n}\n\nfunction isLocal() {\n return this.isValid() ? !this._isUTC : false;\n}\n\nfunction isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n}\n\nfunction isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n}\n\n// ASP.NET json date format regex\nvar aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\nfunction createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n}\n\ncreateDuration.fn = Duration.prototype;\ncreateDuration.invalid = createInvalid$1;\n\nfunction parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n}\n\nfunction positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n}\n\nfunction momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n}\n\n// TODO: remove 'name' arg after deprecation is removed\nfunction createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n}\n\nfunction addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n}\n\nvar add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\nfunction isString(input) {\n return typeof input === 'string' || input instanceof String;\n}\n\n// type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\nfunction isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n}\n\nfunction isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n}\n\nfunction isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n}\n\nfunction isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n}\n\nfunction getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n}\n\nfunction calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n}\n\nfunction clone() {\n return new Moment(this);\n}\n\nfunction isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n}\n\nfunction isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n}\n\nfunction isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n}\n\nfunction isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n}\n\nfunction isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n}\n\nfunction isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n}\n\nfunction diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n}\n\nfunction monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n}\n\nhooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\nhooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\nfunction toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n}\n\nfunction toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n}\n\n/**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\nfunction inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n}\n\nfunction format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n}\n\nfunction from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n}\n\nfunction to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n}\n\n// If passed a locale key, it will set the locale for this\n// instance. Otherwise, it will return the locale configuration\n// variables for this instance.\nfunction locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n}\n\nvar lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n);\n\nfunction localeData() {\n return this._locale;\n}\n\nvar MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n// actual modulo - handles negative numbers (for dates before 1970):\nfunction mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n}\n\nfunction localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n}\n\nfunction utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n}\n\nfunction startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n}\n\nfunction endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n}\n\nfunction valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n}\n\nfunction unix() {\n return Math.floor(this.valueOf() / 1000);\n}\n\nfunction toDate() {\n return new Date(this.valueOf());\n}\n\nfunction toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n}\n\nfunction toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n}\n\nfunction toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n}\n\nfunction isValid$2() {\n return isValid(this);\n}\n\nfunction parsingFlags() {\n return extend({}, getParsingFlags(this));\n}\n\nfunction invalidAt() {\n return getParsingFlags(this).overflow;\n}\n\nfunction creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n}\n\naddFormatToken('N', 0, 0, 'eraAbbr');\naddFormatToken('NN', 0, 0, 'eraAbbr');\naddFormatToken('NNN', 0, 0, 'eraAbbr');\naddFormatToken('NNNN', 0, 0, 'eraName');\naddFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\naddFormatToken('y', ['y', 1], 'yo', 'eraYear');\naddFormatToken('y', ['yy', 2], 0, 'eraYear');\naddFormatToken('y', ['yyy', 3], 0, 'eraYear');\naddFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\naddRegexToken('N', matchEraAbbr);\naddRegexToken('NN', matchEraAbbr);\naddRegexToken('NNN', matchEraAbbr);\naddRegexToken('NNNN', matchEraName);\naddRegexToken('NNNNN', matchEraNarrow);\n\naddParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n);\n\naddRegexToken('y', matchUnsigned);\naddRegexToken('yy', matchUnsigned);\naddRegexToken('yyy', matchUnsigned);\naddRegexToken('yyyy', matchUnsigned);\naddRegexToken('yo', matchEraYearOrdinal);\n\naddParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\naddParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n});\n\nfunction localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n}\n\nfunction localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n}\n\nfunction localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n}\n\nfunction getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n}\n\nfunction getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n}\n\nfunction getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n}\n\nfunction getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n}\n\nfunction erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n}\n\nfunction erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n}\n\nfunction erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n}\n\nfunction matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n}\n\nfunction matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n}\n\nfunction matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n}\n\nfunction matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n}\n\nfunction computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n}\n\n// FORMATTING\n\naddFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n});\n\naddFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n});\n\nfunction addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n}\n\naddWeekYearFormatToken('gggg', 'weekYear');\naddWeekYearFormatToken('ggggg', 'weekYear');\naddWeekYearFormatToken('GGGG', 'isoWeekYear');\naddWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n// ALIASES\n\naddUnitAlias('weekYear', 'gg');\naddUnitAlias('isoWeekYear', 'GG');\n\n// PRIORITY\n\naddUnitPriority('weekYear', 1);\naddUnitPriority('isoWeekYear', 1);\n\n// PARSING\n\naddRegexToken('G', matchSigned);\naddRegexToken('g', matchSigned);\naddRegexToken('GG', match1to2, match2);\naddRegexToken('gg', match1to2, match2);\naddRegexToken('GGGG', match1to4, match4);\naddRegexToken('gggg', match1to4, match4);\naddRegexToken('GGGGG', match1to6, match6);\naddRegexToken('ggggg', match1to6, match6);\n\naddWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n);\n\naddWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n});\n\n// MOMENTS\n\nfunction getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n}\n\nfunction getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n}\n\nfunction getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n}\n\nfunction getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n}\n\nfunction getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n}\n\nfunction getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n}\n\nfunction getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n}\n\nfunction setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n}\n\n// FORMATTING\n\naddFormatToken('Q', 0, 'Qo', 'quarter');\n\n// ALIASES\n\naddUnitAlias('quarter', 'Q');\n\n// PRIORITY\n\naddUnitPriority('quarter', 7);\n\n// PARSING\n\naddRegexToken('Q', match1);\naddParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n});\n\n// MOMENTS\n\nfunction getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n}\n\n// FORMATTING\n\naddFormatToken('D', ['DD', 2], 'Do', 'date');\n\n// ALIASES\n\naddUnitAlias('date', 'D');\n\n// PRIORITY\naddUnitPriority('date', 9);\n\n// PARSING\n\naddRegexToken('D', match1to2);\naddRegexToken('DD', match1to2, match2);\naddRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n});\n\naddParseToken(['D', 'DD'], DATE);\naddParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n});\n\n// MOMENTS\n\nvar getSetDayOfMonth = makeGetSet('Date', true);\n\n// FORMATTING\n\naddFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n// ALIASES\n\naddUnitAlias('dayOfYear', 'DDD');\n\n// PRIORITY\naddUnitPriority('dayOfYear', 4);\n\n// PARSING\n\naddRegexToken('DDD', match1to3);\naddRegexToken('DDDD', match3);\naddParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n});\n\n// HELPERS\n\n// MOMENTS\n\nfunction getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n}\n\n// FORMATTING\n\naddFormatToken('m', ['mm', 2], 0, 'minute');\n\n// ALIASES\n\naddUnitAlias('minute', 'm');\n\n// PRIORITY\n\naddUnitPriority('minute', 14);\n\n// PARSING\n\naddRegexToken('m', match1to2);\naddRegexToken('mm', match1to2, match2);\naddParseToken(['m', 'mm'], MINUTE);\n\n// MOMENTS\n\nvar getSetMinute = makeGetSet('Minutes', false);\n\n// FORMATTING\n\naddFormatToken('s', ['ss', 2], 0, 'second');\n\n// ALIASES\n\naddUnitAlias('second', 's');\n\n// PRIORITY\n\naddUnitPriority('second', 15);\n\n// PARSING\n\naddRegexToken('s', match1to2);\naddRegexToken('ss', match1to2, match2);\naddParseToken(['s', 'ss'], SECOND);\n\n// MOMENTS\n\nvar getSetSecond = makeGetSet('Seconds', false);\n\n// FORMATTING\n\naddFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n});\n\naddFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n});\n\naddFormatToken(0, ['SSS', 3], 0, 'millisecond');\naddFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n});\naddFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n});\naddFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n});\naddFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n});\naddFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n});\naddFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n});\n\n// ALIASES\n\naddUnitAlias('millisecond', 'ms');\n\n// PRIORITY\n\naddUnitPriority('millisecond', 16);\n\n// PARSING\n\naddRegexToken('S', match1to3, match1);\naddRegexToken('SS', match1to3, match2);\naddRegexToken('SSS', match1to3, match3);\n\nvar token, getSetMillisecond;\nfor (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n}\n\nfunction parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n}\n\nfor (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n}\n\ngetSetMillisecond = makeGetSet('Milliseconds', false);\n\n// FORMATTING\n\naddFormatToken('z', 0, 0, 'zoneAbbr');\naddFormatToken('zz', 0, 0, 'zoneName');\n\n// MOMENTS\n\nfunction getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n}\n\nfunction getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n}\n\nvar proto = Moment.prototype;\n\nproto.add = add;\nproto.calendar = calendar$1;\nproto.clone = clone;\nproto.diff = diff;\nproto.endOf = endOf;\nproto.format = format;\nproto.from = from;\nproto.fromNow = fromNow;\nproto.to = to;\nproto.toNow = toNow;\nproto.get = stringGet;\nproto.invalidAt = invalidAt;\nproto.isAfter = isAfter;\nproto.isBefore = isBefore;\nproto.isBetween = isBetween;\nproto.isSame = isSame;\nproto.isSameOrAfter = isSameOrAfter;\nproto.isSameOrBefore = isSameOrBefore;\nproto.isValid = isValid$2;\nproto.lang = lang;\nproto.locale = locale;\nproto.localeData = localeData;\nproto.max = prototypeMax;\nproto.min = prototypeMin;\nproto.parsingFlags = parsingFlags;\nproto.set = stringSet;\nproto.startOf = startOf;\nproto.subtract = subtract;\nproto.toArray = toArray;\nproto.toObject = toObject;\nproto.toDate = toDate;\nproto.toISOString = toISOString;\nproto.inspect = inspect;\nif (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n}\nproto.toJSON = toJSON;\nproto.toString = toString;\nproto.unix = unix;\nproto.valueOf = valueOf;\nproto.creationData = creationData;\nproto.eraName = getEraName;\nproto.eraNarrow = getEraNarrow;\nproto.eraAbbr = getEraAbbr;\nproto.eraYear = getEraYear;\nproto.year = getSetYear;\nproto.isLeapYear = getIsLeapYear;\nproto.weekYear = getSetWeekYear;\nproto.isoWeekYear = getSetISOWeekYear;\nproto.quarter = proto.quarters = getSetQuarter;\nproto.month = getSetMonth;\nproto.daysInMonth = getDaysInMonth;\nproto.week = proto.weeks = getSetWeek;\nproto.isoWeek = proto.isoWeeks = getSetISOWeek;\nproto.weeksInYear = getWeeksInYear;\nproto.weeksInWeekYear = getWeeksInWeekYear;\nproto.isoWeeksInYear = getISOWeeksInYear;\nproto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\nproto.date = getSetDayOfMonth;\nproto.day = proto.days = getSetDayOfWeek;\nproto.weekday = getSetLocaleDayOfWeek;\nproto.isoWeekday = getSetISODayOfWeek;\nproto.dayOfYear = getSetDayOfYear;\nproto.hour = proto.hours = getSetHour;\nproto.minute = proto.minutes = getSetMinute;\nproto.second = proto.seconds = getSetSecond;\nproto.millisecond = proto.milliseconds = getSetMillisecond;\nproto.utcOffset = getSetOffset;\nproto.utc = setOffsetToUTC;\nproto.local = setOffsetToLocal;\nproto.parseZone = setOffsetToParsedOffset;\nproto.hasAlignedHourOffset = hasAlignedHourOffset;\nproto.isDST = isDaylightSavingTime;\nproto.isLocal = isLocal;\nproto.isUtcOffset = isUtcOffset;\nproto.isUtc = isUtc;\nproto.isUTC = isUtc;\nproto.zoneAbbr = getZoneAbbr;\nproto.zoneName = getZoneName;\nproto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n);\nproto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n);\nproto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n);\nproto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n);\nproto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n);\n\nfunction createUnix(input) {\n return createLocal(input * 1000);\n}\n\nfunction createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n}\n\nfunction preParsePostFormat(string) {\n return string;\n}\n\nvar proto$1 = Locale.prototype;\n\nproto$1.calendar = calendar;\nproto$1.longDateFormat = longDateFormat;\nproto$1.invalidDate = invalidDate;\nproto$1.ordinal = ordinal;\nproto$1.preparse = preParsePostFormat;\nproto$1.postformat = preParsePostFormat;\nproto$1.relativeTime = relativeTime;\nproto$1.pastFuture = pastFuture;\nproto$1.set = set;\nproto$1.eras = localeEras;\nproto$1.erasParse = localeErasParse;\nproto$1.erasConvertYear = localeErasConvertYear;\nproto$1.erasAbbrRegex = erasAbbrRegex;\nproto$1.erasNameRegex = erasNameRegex;\nproto$1.erasNarrowRegex = erasNarrowRegex;\n\nproto$1.months = localeMonths;\nproto$1.monthsShort = localeMonthsShort;\nproto$1.monthsParse = localeMonthsParse;\nproto$1.monthsRegex = monthsRegex;\nproto$1.monthsShortRegex = monthsShortRegex;\nproto$1.week = localeWeek;\nproto$1.firstDayOfYear = localeFirstDayOfYear;\nproto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\nproto$1.weekdays = localeWeekdays;\nproto$1.weekdaysMin = localeWeekdaysMin;\nproto$1.weekdaysShort = localeWeekdaysShort;\nproto$1.weekdaysParse = localeWeekdaysParse;\n\nproto$1.weekdaysRegex = weekdaysRegex;\nproto$1.weekdaysShortRegex = weekdaysShortRegex;\nproto$1.weekdaysMinRegex = weekdaysMinRegex;\n\nproto$1.isPM = localeIsPM;\nproto$1.meridiem = localeMeridiem;\n\nfunction get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n}\n\nfunction listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n}\n\n// ()\n// (5)\n// (fmt, 5)\n// (fmt)\n// (true)\n// (true, 5)\n// (true, fmt, 5)\n// (true, fmt)\nfunction listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n}\n\nfunction listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n}\n\nfunction listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n}\n\nfunction listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n}\n\nfunction listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n}\n\nfunction listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n}\n\ngetSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n});\n\n// Side effect imports\n\nhooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n);\nhooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n);\n\nvar mathAbs = Math.abs;\n\nfunction abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n}\n\nfunction addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n}\n\n// supports only 2.0-style add(1, 's') or add(duration)\nfunction add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n}\n\n// supports only 2.0-style subtract(1, 's') or subtract(duration)\nfunction subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n}\n\nfunction absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n}\n\nfunction bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n}\n\nfunction daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n}\n\nfunction monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n}\n\nfunction as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n}\n\n// TODO: Use this.as('ms')?\nfunction valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n}\n\nfunction makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n}\n\nvar asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\nfunction clone$1() {\n return createDuration(this);\n}\n\nfunction get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n}\n\nfunction makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n}\n\nvar milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\nfunction weeks() {\n return absFloor(this.days() / 7);\n}\n\nvar round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\nfunction substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n}\n\nfunction relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n}\n\n// This function allows you to set the rounding function for relative time strings\nfunction getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n}\n\n// This function allows you to set a threshold for relative time strings\nfunction getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n}\n\nfunction humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n}\n\nvar abs$1 = Math.abs;\n\nfunction sign(x) {\n return (x > 0) - (x < 0) || +x;\n}\n\nfunction toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n}\n\nvar proto$2 = Duration.prototype;\n\nproto$2.isValid = isValid$1;\nproto$2.abs = abs;\nproto$2.add = add$1;\nproto$2.subtract = subtract$1;\nproto$2.as = as;\nproto$2.asMilliseconds = asMilliseconds;\nproto$2.asSeconds = asSeconds;\nproto$2.asMinutes = asMinutes;\nproto$2.asHours = asHours;\nproto$2.asDays = asDays;\nproto$2.asWeeks = asWeeks;\nproto$2.asMonths = asMonths;\nproto$2.asQuarters = asQuarters;\nproto$2.asYears = asYears;\nproto$2.valueOf = valueOf$1;\nproto$2._bubble = bubble;\nproto$2.clone = clone$1;\nproto$2.get = get$2;\nproto$2.milliseconds = milliseconds;\nproto$2.seconds = seconds;\nproto$2.minutes = minutes;\nproto$2.hours = hours;\nproto$2.days = days;\nproto$2.weeks = weeks;\nproto$2.months = months;\nproto$2.years = years;\nproto$2.humanize = humanize;\nproto$2.toISOString = toISOString$1;\nproto$2.toString = toISOString$1;\nproto$2.toJSON = toISOString$1;\nproto$2.locale = locale;\nproto$2.localeData = localeData;\n\nproto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n);\nproto$2.lang = lang;\n\n// FORMATTING\n\naddFormatToken('X', 0, 0, 'unix');\naddFormatToken('x', 0, 0, 'valueOf');\n\n// PARSING\n\naddRegexToken('x', matchSigned);\naddRegexToken('X', matchTimestamp);\naddParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n});\naddParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n});\n\n//! moment.js\n\nhooks.version = '2.29.4';\n\nsetHookCallback(createLocal);\n\nhooks.fn = proto;\nhooks.min = min;\nhooks.max = max;\nhooks.now = now;\nhooks.utc = createUTC;\nhooks.unix = createUnix;\nhooks.months = listMonths;\nhooks.isDate = isDate;\nhooks.locale = getSetGlobalLocale;\nhooks.invalid = createInvalid;\nhooks.duration = createDuration;\nhooks.isMoment = isMoment;\nhooks.weekdays = listWeekdays;\nhooks.parseZone = createInZone;\nhooks.localeData = getLocale;\nhooks.isDuration = isDuration;\nhooks.monthsShort = listMonthsShort;\nhooks.weekdaysMin = listWeekdaysMin;\nhooks.defineLocale = defineLocale;\nhooks.updateLocale = updateLocale;\nhooks.locales = listLocales;\nhooks.weekdaysShort = listWeekdaysShort;\nhooks.normalizeUnits = normalizeUnits;\nhooks.relativeTimeRounding = getSetRelativeTimeRounding;\nhooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\nhooks.calendarFormat = getCalendarFormat;\nhooks.prototype = proto;\n\n// currently HTML5 input type only supports 24-hour formats\nhooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n};\n\nexport default hooks;\n","//! moment-timezone.js\n//! version : 0.5.43\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n\n(function (root, factory) {\n\t\"use strict\";\n\n\t/*global define*/\n\tif (typeof module === 'object' && module.exports) {\n\t\tmodule.exports = factory(require('moment')); // Node\n\t} else if (typeof define === 'function' && define.amd) {\n\t\tdefine(['moment'], factory); // AMD\n\t} else {\n\t\tfactory(root.moment); // Browser\n\t}\n}(this, function (moment) {\n\t\"use strict\";\n\n\t// Resolves es6 module loading issue\n\tif (moment.version === undefined && moment.default) {\n\t\tmoment = moment.default;\n\t}\n\n\t// Do not load moment-timezone a second time.\n\t// if (moment.tz !== undefined) {\n\t// \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n\t// \treturn moment;\n\t// }\n\n\tvar VERSION = \"0.5.43\",\n\t\tzones = {},\n\t\tlinks = {},\n\t\tcountries = {},\n\t\tnames = {},\n\t\tguesses = {},\n\t\tcachedGuess;\n\n\tif (!moment || typeof moment.version !== 'string') {\n\t\tlogError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\n\t}\n\n\tvar momentVersion = moment.version.split('.'),\n\t\tmajor = +momentVersion[0],\n\t\tminor = +momentVersion[1];\n\n\t// Moment.js version check\n\tif (major < 2 || (major === 2 && minor < 6)) {\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n\t}\n\n\t/************************************\n\t\tUnpacking\n\t************************************/\n\n\tfunction charCodeToInt(charCode) {\n\t\tif (charCode > 96) {\n\t\t\treturn charCode - 87;\n\t\t} else if (charCode > 64) {\n\t\t\treturn charCode - 29;\n\t\t}\n\t\treturn charCode - 48;\n\t}\n\n\tfunction unpackBase60(string) {\n\t\tvar i = 0,\n\t\t\tparts = string.split('.'),\n\t\t\twhole = parts[0],\n\t\t\tfractional = parts[1] || '',\n\t\t\tmultiplier = 1,\n\t\t\tnum,\n\t\t\tout = 0,\n\t\t\tsign = 1;\n\n\t\t// handle negative numbers\n\t\tif (string.charCodeAt(0) === 45) {\n\t\t\ti = 1;\n\t\t\tsign = -1;\n\t\t}\n\n\t\t// handle digits before the decimal\n\t\tfor (i; i < whole.length; i++) {\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\n\t\t\tout = 60 * out + num;\n\t\t}\n\n\t\t// handle digits after the decimal\n\t\tfor (i = 0; i < fractional.length; i++) {\n\t\t\tmultiplier = multiplier / 60;\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\n\t\t\tout += num * multiplier;\n\t\t}\n\n\t\treturn out * sign;\n\t}\n\n\tfunction arrayToInt (array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = unpackBase60(array[i]);\n\t\t}\n\t}\n\n\tfunction intToUntil (array, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\n\t\t}\n\n\t\tarray[length - 1] = Infinity;\n\t}\n\n\tfunction mapIndices (source, indices) {\n\t\tvar out = [], i;\n\n\t\tfor (i = 0; i < indices.length; i++) {\n\t\t\tout[i] = source[indices[i]];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction unpack (string) {\n\t\tvar data = string.split('|'),\n\t\t\toffsets = data[2].split(' '),\n\t\t\tindices = data[3].split(''),\n\t\t\tuntils = data[4].split(' ');\n\n\t\tarrayToInt(offsets);\n\t\tarrayToInt(indices);\n\t\tarrayToInt(untils);\n\n\t\tintToUntil(untils, indices.length);\n\n\t\treturn {\n\t\t\tname : data[0],\n\t\t\tabbrs : mapIndices(data[1].split(' '), indices),\n\t\t\toffsets : mapIndices(offsets, indices),\n\t\t\tuntils : untils,\n\t\t\tpopulation : data[5] | 0\n\t\t};\n\t}\n\n\t/************************************\n\t\tZone object\n\t************************************/\n\n\tfunction Zone (packedString) {\n\t\tif (packedString) {\n\t\t\tthis._set(unpack(packedString));\n\t\t}\n\t}\n\n\tZone.prototype = {\n\t\t_set : function (unpacked) {\n\t\t\tthis.name = unpacked.name;\n\t\t\tthis.abbrs = unpacked.abbrs;\n\t\t\tthis.untils = unpacked.untils;\n\t\t\tthis.offsets = unpacked.offsets;\n\t\t\tthis.population = unpacked.population;\n\t\t},\n\n\t\t_index : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\tuntils = this.untils,\n\t\t\t\ti;\n\n\t\t\tfor (i = 0; i < untils.length; i++) {\n\t\t\t\tif (target < untils[i]) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tcountries : function () {\n\t\t\tvar zone_name = this.name;\n\t\t\treturn Object.keys(countries).filter(function (country_code) {\n\t\t\t\treturn countries[country_code].zones.indexOf(zone_name) !== -1;\n\t\t\t});\n\t\t},\n\n\t\tparse : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\toffsets = this.offsets,\n\t\t\t\tuntils = this.untils,\n\t\t\t\tmax = untils.length - 1,\n\t\t\t\toffset, offsetNext, offsetPrev, i;\n\n\t\t\tfor (i = 0; i < max; i++) {\n\t\t\t\toffset = offsets[i];\n\t\t\t\toffsetNext = offsets[i + 1];\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\n\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\n\t\t\t\t\toffset = offsetNext;\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\n\t\t\t\t\toffset = offsetPrev;\n\t\t\t\t}\n\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\n\t\t\t\t\treturn offsets[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn offsets[max];\n\t\t},\n\n\t\tabbr : function (mom) {\n\t\t\treturn this.abbrs[this._index(mom)];\n\t\t},\n\n\t\toffset : function (mom) {\n\t\t\tlogError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t},\n\n\t\tutcOffset : function (mom) {\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t}\n\t};\n\n\t/************************************\n\t\tCountry object\n\t************************************/\n\n\tfunction Country (country_name, zone_names) {\n\t\tthis.name = country_name;\n\t\tthis.zones = zone_names;\n\t}\n\n\t/************************************\n\t\tCurrent Timezone\n\t************************************/\n\n\tfunction OffsetAt(at) {\n\t\tvar timeString = at.toTimeString();\n\t\tvar abbr = timeString.match(/\\([a-z ]+\\)/i);\n\t\tif (abbr && abbr[0]) {\n\t\t\t// 17:56:31 GMT-0600 (CST)\n\t\t\t// 17:56:31 GMT-0600 (Central Standard Time)\n\t\t\tabbr = abbr[0].match(/[A-Z]/g);\n\t\t\tabbr = abbr ? abbr.join('') : undefined;\n\t\t} else {\n\t\t\t// 17:56:31 CST\n\t\t\t// 17:56:31 GMT+0800 (台北標準時間)\n\t\t\tabbr = timeString.match(/[A-Z]{3,5}/g);\n\t\t\tabbr = abbr ? abbr[0] : undefined;\n\t\t}\n\n\t\tif (abbr === 'GMT') {\n\t\t\tabbr = undefined;\n\t\t}\n\n\t\tthis.at = +at;\n\t\tthis.abbr = abbr;\n\t\tthis.offset = at.getTimezoneOffset();\n\t}\n\n\tfunction ZoneScore(zone) {\n\t\tthis.zone = zone;\n\t\tthis.offsetScore = 0;\n\t\tthis.abbrScore = 0;\n\t}\n\n\tZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\n\t\tthis.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\n\t\tif (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\n\t\t\tthis.abbrScore++;\n\t\t}\n\t};\n\n\tfunction findChange(low, high) {\n\t\tvar mid, diff;\n\n\t\twhile ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\n\t\t\tmid = new OffsetAt(new Date(low.at + diff));\n\t\t\tif (mid.offset === low.offset) {\n\t\t\t\tlow = mid;\n\t\t\t} else {\n\t\t\t\thigh = mid;\n\t\t\t}\n\t\t}\n\n\t\treturn low;\n\t}\n\n\tfunction userOffsets() {\n\t\tvar startYear = new Date().getFullYear() - 2,\n\t\t\tlast = new OffsetAt(new Date(startYear, 0, 1)),\n\t\t\toffsets = [last],\n\t\t\tchange, next, i;\n\n\t\tfor (i = 1; i < 48; i++) {\n\t\t\tnext = new OffsetAt(new Date(startYear, i, 1));\n\t\t\tif (next.offset !== last.offset) {\n\t\t\t\tchange = findChange(last, next);\n\t\t\t\toffsets.push(change);\n\t\t\t\toffsets.push(new OffsetAt(new Date(change.at + 6e4)));\n\t\t\t}\n\t\t\tlast = next;\n\t\t}\n\n\t\tfor (i = 0; i < 4; i++) {\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\n\t\t}\n\n\t\treturn offsets;\n\t}\n\n\tfunction sortZoneScores (a, b) {\n\t\tif (a.offsetScore !== b.offsetScore) {\n\t\t\treturn a.offsetScore - b.offsetScore;\n\t\t}\n\t\tif (a.abbrScore !== b.abbrScore) {\n\t\t\treturn a.abbrScore - b.abbrScore;\n\t\t}\n\t\tif (a.zone.population !== b.zone.population) {\n\t\t\treturn b.zone.population - a.zone.population;\n\t\t}\n\t\treturn b.zone.name.localeCompare(a.zone.name);\n\t}\n\n\tfunction addToGuesses (name, offsets) {\n\t\tvar i, offset;\n\t\tarrayToInt(offsets);\n\t\tfor (i = 0; i < offsets.length; i++) {\n\t\t\toffset = offsets[i];\n\t\t\tguesses[offset] = guesses[offset] || {};\n\t\t\tguesses[offset][name] = true;\n\t\t}\n\t}\n\n\tfunction guessesForUserOffsets (offsets) {\n\t\tvar offsetsLength = offsets.length,\n\t\t\tfilteredGuesses = {},\n\t\t\tout = [],\n\t\t\ti, j, guessesOffset;\n\n\t\tfor (i = 0; i < offsetsLength; i++) {\n\t\t\tguessesOffset = guesses[offsets[i].offset] || {};\n\t\t\tfor (j in guessesOffset) {\n\t\t\t\tif (guessesOffset.hasOwnProperty(j)) {\n\t\t\t\t\tfilteredGuesses[j] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i in filteredGuesses) {\n\t\t\tif (filteredGuesses.hasOwnProperty(i)) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction rebuildGuess () {\n\n\t\t// use Intl API when available and returning valid time zone\n\t\ttry {\n\t\t\tvar intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t\t\tif (intlName && intlName.length > 3) {\n\t\t\t\tvar name = names[normalizeName(intlName)];\n\t\t\t\tif (name) {\n\t\t\t\t\treturn name;\n\t\t\t\t}\n\t\t\t\tlogError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Intl unavailable, fall back to manual guessing.\n\t\t}\n\n\t\tvar offsets = userOffsets(),\n\t\t\toffsetsLength = offsets.length,\n\t\t\tguesses = guessesForUserOffsets(offsets),\n\t\t\tzoneScores = [],\n\t\t\tzoneScore, i, j;\n\n\t\tfor (i = 0; i < guesses.length; i++) {\n\t\t\tzoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\n\t\t\tfor (j = 0; j < offsetsLength; j++) {\n\t\t\t\tzoneScore.scoreOffsetAt(offsets[j]);\n\t\t\t}\n\t\t\tzoneScores.push(zoneScore);\n\t\t}\n\n\t\tzoneScores.sort(sortZoneScores);\n\n\t\treturn zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\n\t}\n\n\tfunction guess (ignoreCache) {\n\t\tif (!cachedGuess || ignoreCache) {\n\t\t\tcachedGuess = rebuildGuess();\n\t\t}\n\t\treturn cachedGuess;\n\t}\n\n\t/************************************\n\t\tGlobal Methods\n\t************************************/\n\n\tfunction normalizeName (name) {\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\n\t}\n\n\tfunction addZone (packed) {\n\t\tvar i, name, split, normalized;\n\n\t\tif (typeof packed === \"string\") {\n\t\t\tpacked = [packed];\n\t\t}\n\n\t\tfor (i = 0; i < packed.length; i++) {\n\t\t\tsplit = packed[i].split('|');\n\t\t\tname = split[0];\n\t\t\tnormalized = normalizeName(name);\n\t\t\tzones[normalized] = packed[i];\n\t\t\tnames[normalized] = name;\n\t\t\taddToGuesses(normalized, split[2].split(' '));\n\t\t}\n\t}\n\n\tfunction getZone (name, caller) {\n\n\t\tname = normalizeName(name);\n\n\t\tvar zone = zones[name];\n\t\tvar link;\n\n\t\tif (zone instanceof Zone) {\n\t\t\treturn zone;\n\t\t}\n\n\t\tif (typeof zone === 'string') {\n\t\t\tzone = new Zone(zone);\n\t\t\tzones[name] = zone;\n\t\t\treturn zone;\n\t\t}\n\n\t\t// Pass getZone to prevent recursion more than 1 level deep\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n\t\t\tzone = zones[name] = new Zone();\n\t\t\tzone._set(link);\n\t\t\tzone.name = names[name];\n\t\t\treturn zone;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction getNames () {\n\t\tvar i, out = [];\n\n\t\tfor (i in names) {\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out.sort();\n\t}\n\n\tfunction getCountryNames () {\n\t\treturn Object.keys(countries);\n\t}\n\n\tfunction addLink (aliases) {\n\t\tvar i, alias, normal0, normal1;\n\n\t\tif (typeof aliases === \"string\") {\n\t\t\taliases = [aliases];\n\t\t}\n\n\t\tfor (i = 0; i < aliases.length; i++) {\n\t\t\talias = aliases[i].split('|');\n\n\t\t\tnormal0 = normalizeName(alias[0]);\n\t\t\tnormal1 = normalizeName(alias[1]);\n\n\t\t\tlinks[normal0] = normal1;\n\t\t\tnames[normal0] = alias[0];\n\n\t\t\tlinks[normal1] = normal0;\n\t\t\tnames[normal1] = alias[1];\n\t\t}\n\t}\n\n\tfunction addCountries (data) {\n\t\tvar i, country_code, country_zones, split;\n\t\tif (!data || !data.length) return;\n\t\tfor (i = 0; i < data.length; i++) {\n\t\t\tsplit = data[i].split('|');\n\t\t\tcountry_code = split[0].toUpperCase();\n\t\t\tcountry_zones = split[1].split(' ');\n\t\t\tcountries[country_code] = new Country(\n\t\t\t\tcountry_code,\n\t\t\t\tcountry_zones\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction getCountry (name) {\n\t\tname = name.toUpperCase();\n\t\treturn countries[name] || null;\n\t}\n\n\tfunction zonesForCountry(country, with_offset) {\n\t\tcountry = getCountry(country);\n\n\t\tif (!country) return null;\n\n\t\tvar zones = country.zones.sort();\n\n\t\tif (with_offset) {\n\t\t\treturn zones.map(function (zone_name) {\n\t\t\t\tvar zone = getZone(zone_name);\n\t\t\t\treturn {\n\t\t\t\t\tname: zone_name,\n\t\t\t\t\toffset: zone.utcOffset(new Date())\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\treturn zones;\n\t}\n\n\tfunction loadData (data) {\n\t\taddZone(data.zones);\n\t\taddLink(data.links);\n\t\taddCountries(data.countries);\n\t\ttz.dataVersion = data.version;\n\t}\n\n\tfunction zoneExists (name) {\n\t\tif (!zoneExists.didShowError) {\n\t\t\tzoneExists.didShowError = true;\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n\t\t}\n\t\treturn !!getZone(name);\n\t}\n\n\tfunction needsOffset (m) {\n\t\tvar isUnixTimestamp = (m._f === 'X' || m._f === 'x');\n\t\treturn !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\n\t}\n\n\tfunction logError (message) {\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t\t\tconsole.error(message);\n\t\t}\n\t}\n\n\t/************************************\n\t\tmoment.tz namespace\n\t************************************/\n\n\tfunction tz (input) {\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\n\t\t\tname = arguments[arguments.length - 1],\n\t\t\tzone = getZone(name),\n\t\t\tout = moment.utc.apply(null, args);\n\n\t\tif (zone && !moment.isMoment(input) && needsOffset(out)) {\n\t\t\tout.add(zone.parse(out), 'minutes');\n\t\t}\n\n\t\tout.tz(name);\n\n\t\treturn out;\n\t}\n\n\ttz.version = VERSION;\n\ttz.dataVersion = '';\n\ttz._zones = zones;\n\ttz._links = links;\n\ttz._names = names;\n\ttz._countries\t= countries;\n\ttz.add = addZone;\n\ttz.link = addLink;\n\ttz.load = loadData;\n\ttz.zone = getZone;\n\ttz.zoneExists = zoneExists; // deprecated in 0.1.0\n\ttz.guess = guess;\n\ttz.names = getNames;\n\ttz.Zone = Zone;\n\ttz.unpack = unpack;\n\ttz.unpackBase60 = unpackBase60;\n\ttz.needsOffset = needsOffset;\n\ttz.moveInvalidForward = true;\n\ttz.moveAmbiguousForward = false;\n\ttz.countries = getCountryNames;\n\ttz.zonesForCountry = zonesForCountry;\n\n\t/************************************\n\t\tInterface with Moment.js\n\t************************************/\n\n\tvar fn = moment.fn;\n\n\tmoment.tz = tz;\n\n\tmoment.defaultZone = null;\n\n\tmoment.updateOffset = function (mom, keepTime) {\n\t\tvar zone = moment.defaultZone,\n\t\t\toffset;\n\n\t\tif (mom._z === undefined) {\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC) {\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\n\t\t\t}\n\t\t\tmom._z = zone;\n\t\t}\n\t\tif (mom._z) {\n\t\t\toffset = mom._z.utcOffset(mom);\n\t\t\tif (Math.abs(offset) < 16) {\n\t\t\t\toffset = offset / 60;\n\t\t\t}\n\t\t\tif (mom.utcOffset !== undefined) {\n\t\t\t\tvar z = mom._z;\n\t\t\t\tmom.utcOffset(-offset, keepTime);\n\t\t\t\tmom._z = z;\n\t\t\t} else {\n\t\t\t\tmom.zone(offset, keepTime);\n\t\t\t}\n\t\t}\n\t};\n\n\tfn.tz = function (name, keepTime) {\n\t\tif (name) {\n\t\t\tif (typeof name !== 'string') {\n\t\t\t\tthrow new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\n\t\t\t}\n\t\t\tthis._z = getZone(name);\n\t\t\tif (this._z) {\n\t\t\t\tmoment.updateOffset(this, keepTime);\n\t\t\t} else {\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif (this._z) { return this._z.name; }\n\t};\n\n\tfunction abbrWrap (old) {\n\t\treturn function () {\n\t\t\tif (this._z) { return this._z.abbr(this); }\n\t\t\treturn old.call(this);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap (old) {\n\t\treturn function () {\n\t\t\tthis._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap2 (old) {\n\t\treturn function () {\n\t\t\tif (arguments.length > 0) this._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfn.zoneName = abbrWrap(fn.zoneName);\n\tfn.zoneAbbr = abbrWrap(fn.zoneAbbr);\n\tfn.utc = resetZoneWrap(fn.utc);\n\tfn.local = resetZoneWrap(fn.local);\n\tfn.utcOffset = resetZoneWrap2(fn.utcOffset);\n\n\tmoment.tz.setDefault = function(name) {\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n\t\t}\n\t\tmoment.defaultZone = name ? getZone(name) : null;\n\t\treturn moment;\n\t};\n\n\t// Cloning a moment should include the _z property.\n\tvar momentProperties = moment.momentProperties;\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n\t\t// moment 2.8.1+\n\t\tmomentProperties.push('_z');\n\t\tmomentProperties.push('_a');\n\t} else if (momentProperties) {\n\t\t// moment 2.7.0\n\t\tmomentProperties._z = null;\n\t}\n\n\t// INJECT DATA\n\n\treturn moment;\n}));\n","var moment = module.exports = require(\"./moment-timezone\");\nmoment.tz.load(require('./data/packed/latest.json'));\n","\nimport * as d3 from \"d3\"\nimport Vue, { PropType } from \"vue\"\nimport { D3ZoomEvent, Axis, ZoomBehavior } from \"d3\"\nimport { defaultAxesConfig } from \"@/components/ETimeline.config\"\nimport {\n TimelineAxesConfig,\n TimelineAxis,\n TimelineTicksConfig,\n Timestamp,\n} from \"@/types\"\nimport { ResizeObserverDirective } from \"@/directives\"\nimport moment from \"moment-timezone\"\n\nexport type TimelineEvent =\n | {\n timestamp: string | Date\n [key: string]: any\n }\n | {\n startDate: string | Date\n endDate: string | Date\n [key: string]: any\n }\n\nexport type TimelineEventsGroup = {\n label: string\n color: string\n events: Array<TimelineEvent>\n}\n\nexport type TimelineEventsByType = {\n [eventsType: string]: TimelineEventsGroup\n}\n\nconst classes = {\n eventGroup: \"event-group\",\n eventGroupBg: \"event-group-bg\",\n labelBg: \"label-bg\",\n labelBgFill: \"label-bg-fill\",\n labelText: \"label-text\",\n xAxis: \"x-axis\",\n selectedTimestampCursor: \"selected-timestamp-cursor\",\n}\n\nexport default Vue.extend({\n name: \"ETimeline\",\n directives: {\n resizeObserver: ResizeObserverDirective,\n },\n props: {\n eventsGroups: {\n type: Object as PropType<TimelineEventsByType>,\n default: () => ({}),\n },\n xAxesConfig: {\n type: Object as PropType<TimelineAxesConfig>,\n default: () => defaultAxesConfig,\n },\n dark: {\n type: Boolean,\n default: false,\n },\n startDate: {\n type: String,\n default: undefined,\n },\n endDate: {\n type: String,\n default: undefined,\n },\n selectedTimestamp: {\n type: String,\n default: undefined,\n },\n showEventTooltip: {\n type: Boolean,\n default: true,\n },\n disableZoom: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n tooltip: null as unknown as HTMLElement,\n cursor: null as unknown as HTMLElement,\n timeline: null as unknown as HTMLElement,\n selectedTimestampCursor: null as unknown as HTMLElement,\n svg: null as unknown as d3.Selection<SVGSVGElement, any, any, any>,\n axesContainer: null as unknown as d3.Selection<\n SVGGElement,\n any,\n any,\n any\n >,\n xAxes: {} as unknown as Record<TimelineAxis, Axis<Date>>,\n timeScale: null as unknown as d3.ScaleTime<any, any, unknown>,\n initialTimeScale: null as unknown as d3.ScaleTime<any, any, unknown>,\n currentTimeScaleDensity: null as unknown as number,\n zoomBehavior: null as unknown as ZoomBehavior<SVGSVGElement, unknown>,\n isMouseDown: false,\n axisHeight: 22,\n eventGroupHeight: 18,\n eventGroupPadding: 0,\n isHoveringEvent: false,\n hoveredEvent: null as unknown as TimelineEvent,\n isHoveringTimeline: false,\n hoveredTimestamp: null as unknown as string,\n eventTooltipStyle: {},\n hoveredEventType: null as unknown as string,\n utcOffset: 0,\n }\n },\n computed: {\n labelRectWidth(): number {\n const eventsGroups = Object.values(\n this.eventsGroups\n ) as TimelineEventsGroup[]\n const maxLabelLength = eventsGroups.reduce((acc, eventsGroup) => {\n return Math.max(acc, eventsGroup.label?.length)\n }, 0)\n\n return maxLabelLength * 7.5 + 5\n },\n combinedXAxesHeight(): number {\n const axesCount = Object.keys(this.xAxesConfig).length - 1\n\n return this.axisHeight * axesCount\n },\n timelineHeight(): number {\n const eventsGroupsCount = Object.keys(this.eventsGroups).length\n const padding = this.eventGroupPadding * (eventsGroupsCount - 1)\n const eventsGouprsHeight = this.eventGroupHeight * eventsGroupsCount\n\n return this.combinedXAxesHeight + eventsGouprsHeight + padding\n },\n allEventsSorted(): TimelineEvent[] {\n const flattenedEvents = (\n Object.values(this.eventsGroups) as TimelineEventsGroup[]\n )\n .map((e: TimelineEventsGroup) => e.events)\n .flat()\n\n return flattenedEvents.sort((a, b) =>\n new Date(a.timestamp || a.startDate) >\n new Date(b.timestamp || b.startDate)\n ? 1\n : -1\n )\n },\n oldestEvent(): TimelineEvent {\n let oldestEvent\n if (this.allEventsSorted.length > 1) {\n oldestEvent = this.allEventsSorted[0]\n } else {\n const DAY = 86_400_000\n const yesterday = new Date(new Date().getTime() - DAY)\n\n oldestEvent = {\n timestamp: yesterday,\n }\n }\n\n return oldestEvent\n },\n latestEvent(): TimelineEvent {\n let latestEvent\n if (this.allEventsSorted.length > 1) {\n latestEvent = this.allEventsSorted[this.allEventsSorted.length - 1]\n } else {\n const defaultMaxDate = new Date()\n\n latestEvent = {\n timestamp: defaultMaxDate,\n }\n }\n\n return latestEvent\n },\n },\n watch: {\n dark() {\n this.onDarkModeChange()\n },\n selectedTimestamp() {\n this.repositionSelectedTimestampCursor()\n },\n startDate() {\n this.zoomToStartAndEndDates()\n },\n endDate() {\n this.zoomToStartAndEndDates()\n },\n },\n mounted() {\n this.initTimeline()\n },\n beforeDestroy() {\n document.removeEventListener(\"mouseup\", this.handleDocumentMouseUp)\n },\n methods: {\n tzStringToDate(timestamp: Timestamp): Date {\n return moment(timestamp).add(this.utcOffset, \"minutes\").toDate()\n },\n dateToTzString(date: Date): string {\n const userUtcOffset = new Date(date).getTimezoneOffset()\n\n return moment(date)\n .add(userUtcOffset, \"minutes\")\n .utcOffset(this.utcOffset, true)\n .format()\n },\n getFormattedTimestamp(timestamp: Timestamp): string {\n return moment.parseZone(timestamp).format(\"YYYY-MM-DDTHH:mm:ss\")\n },\n handleResize({ contentRect }: ResizeObserverEntry) {\n if (this.svg) {\n this.svg.attr(\"width\", contentRect.width)\n }\n },\n initTimeline() {\n this.initRefs()\n\n if (!this.timeline) {\n setTimeout(this.initTimeline, 500)\n\n return\n }\n\n this.initSvg()\n this.initUtcOffset()\n this.initTimeScale()\n this.initXAxes()\n this.initZoomBehavior()\n this.drawEventsGroups()\n this.initSelectedTimestampCursor()\n this.registerEventsListeners()\n },\n initRefs() {\n this.tooltip = this.$refs.tooltip as HTMLElement\n this.cursor = this.$refs.cursor as HTMLElement\n this.timeline = this.$refs.timelineContainer as HTMLElement\n this.selectedTimestampCursor = this.$refs.selectedTimestamp as HTMLElement\n },\n initSvg() {\n this.svg = d3\n .select(this.timeline)\n .append(\"svg\")\n .attr(\"width\", this.timeline.offsetWidth)\n .attr(\"height\", this.timelineHeight) as d3.Selection<\n SVGSVGElement,\n any,\n any,\n any\n >\n },\n initUtcOffset() {\n const sampleTimestamp =\n this.startDate ||\n this.oldestEvent.timestamp ||\n this.oldestEvent.startDate\n this.utcOffset = moment.parseZone(sampleTimestamp).utcOffset()\n },\n initTimeScale() {\n const startDate =\n this.startDate ||\n this.oldestEvent.timestamp ||\n this.oldestEvent.startDate\n const endDate =\n this.endDate || this.latestEvent.timestamp || this.latestEvent.endDate\n\n this.timeScale = d3\n .scaleTime()\n .domain([this.tzStringToDate(startDate), this.tzStringToDate(endDate)])\n .range([0, this.timeline.offsetWidth])\n\n this.initialTimeScale = this.timeScale.copy()\n this.updateCurrentTimeScaleDensity()\n },\n initXAxes() {\n let i = 0\n const padding = 5\n for (const axisName in this.xAxesConfig) {\n const axis = this.createAxis(axisName as TimelineAxis)\n this.xAxes[axisName as TimelineAxis] = axis\n this.svg\n .append(\"g\")\n .classed(classes.xAxis, true)\n .classed(`${classes.xAxis}-${axisName}`, true)\n .attr(\"transform\", `translate(0, ${i || padding})`)\n .call(axis)\n\n this.translateTicksText(axisName)\n i += this.axisHeight\n }\n },\n createAxis(axisName: TimelineAxis) {\n const axis = this.xAxesConfig[axisName as TimelineAxis]\n const config = this.getAxisTicksConfig(axis)\n\n return d3\n .axisBottom<Date>(this.timeScale)\n .ticks(config.interval)\n .tickFormat((d) => config.formatFn(d))\n .tickSizeOuter(0)\n .tickSizeInner(this.timelineHeight)\n },\n getAxisTicksConfig(configs: TimelineTicksConfig[]) {\n const { interval, format } = configs.find(\n (config) =>\n config.precision >= this.currentTimeScaleDensity && config.interval\n ) as TimelineTicksConfig\n\n const formatFn = (d: Date): string => {\n return typeof format === \"function\"\n ? format(d)\n : d3.timeFormat(format)(d)\n }\n\n return {\n formatFn,\n interval,\n }\n },\n initZoomBehavior() {\n if (this.disableZoom) {\n return\n }\n\n this.zoomBehavior = d3\n .zoom<SVGSVGElement, unknown>()\n .on(\"zoom\", this.handleZoom)\n .scaleExtent([0.25, 750_000])\n\n this.svg.call(this.zoomBehavior)\n },\n initSelectedTimestampCursor() {\n this.svg\n .append(\"line\")\n .attr(\"class\", classes.selectedTimestampCursor)\n .style(\"stroke\", \"red\")\n .style(\"stroke-width\", \"1px\")\n .style(\"opacity\", 0)\n .attr(\"x1\", 0)\n .attr(\"x2\", 0)\n .attr(\"y1\", 0)\n .attr(\"y2\", this.timelineHeight)\n this.repositionSelectedTimestampCursor()\n },\n repositionSelectedTimestampCursor() {\n const cursor = this.svg.select(`.${classes.selectedTimestampCursor}`)\n if (!this.selectedTimestamp) {\n cursor.style(\"opacity\", 0)\n\n return\n }\n const timestamp = this.tzStringToDate(this.selectedTimestamp)\n const cursorX = this.timeScale(timestamp)\n if (!isNaN(cursorX)) {\n cursor.attr(\"x1\", cursorX).attr(\"x2\", cursorX).style(\"opacity\", 0.5)\n } else {\n cursor.style(\"opacity\", 0)\n }\n },\n updateCurrentTimeScaleDensity() {\n const timeAtPixel0 = this.timeScale.invert(0).getTime()\n const timeAtPixel1 = this.timeScale.invert(1).getTime()\n const HOUR = 3_600_000\n\n this.currentTimeScaleDensity = (timeAtPixel1 - timeAtPixel0) / HOUR\n },\n registerEventsListeners() {\n document.addEventListener(\"mouseup\", this.handleDocumentMouseUp)\n this.svg.on(\"mousedown\", this.handleMouseDown)\n this.svg.on(\"mousemove\", this.handleMouseMove)\n this.svg.on(\"click\", this.handleClick)\n this.svg.on(\"mouseleave\", this.handleMouseLeave)\n },\n handleMouseDown() {\n this.isMouseDown = true\n },\n handleDocumentMouseUp() {\n this.isMouseDown = false\n },\n handleMouseLeave() {\n this.isHoveringTimeline = false\n },\n handleMouseMove(event: MouseEvent) {\n if (this.isMouseDown) {\n return\n }\n const mouseX = event.offsetX\n const date = this.timeScale.invert(mouseX)\n this.hoveredTimestamp = this.dateToTzString(date)\n this.isHoveringTimeline = true\n this.cursor.style.left = mouseX + \"px\"\n\n if (!this.tooltip) {\n return\n }\n\n this.eventTooltipStyle = {\n left: `${mouseX}px`,\n bottom: `${this.timeline.getBoundingClientRect().height}px`,\n }\n this.repositionSelectedTimestampCursor()\n },\n handleClick(event: MouseEvent) {\n const mouseX = event.offsetX\n const date = this.timeScale.invert(mouseX)\n const formattedDateTz = this.dateToTzString(date)\n\n this.$emit(\"date-clicked\", formattedDateTz)\n },\n handleEventMouseOver(\n _event: MouseEvent,\n eventData: TimelineEvent,\n eventType: string\n ) {\n this.hoveredEvent = eventData\n this.hoveredEventType = eventType\n this.isHoveringEvent = true\n this.$emit(\"event-mouseover\", { eventData, eventType })\n },\n handleEventMouseOut() {\n this.isHoveringEvent = false\n this.hoveredEvent = null as unknown as TimelineEvent\n this.$emit(\"event-mouseout\")\n },\n handleZoom(event: D3ZoomEvent<SVGSVGElement, any>) {\n const newScale = event.transform.rescaleX(this.initialTimeScale)\n this.timeScale.domain(newScale.domain())\n this.updateCurrentTimeScaleDensity()\n\n for (const axisName in this.xAxes) {\n this.rescaleAxis(axisName, newScale)\n this.translateTicksText(axisName)\n }\n this.updateEventsRects()\n this.repositionSelectedTimestampCursor()\n },\n zoomToStartAndEndDates() {\n const startDate =\n this.startDate ||\n this.oldestEvent.timestamp ||\n this.oldestEvent.startDate\n const endDate =\n this.endDate || this.latestEvent.timestamp || this.latestEvent.endDate\n\n const startTime = this.tzStringToDate(startDate)\n const endTime = this.tzStringToDate(endDate)\n const timelineWidth = this.timeline.offsetWidth\n const newDomain = [startTime, endTime]\n const newRange = [0, timelineWidth]\n\n this.timeScale = d3.scaleTime().domain(newDomain).range(newRange)\n this.initialTimeScale = this.timeScale.copy()\n\n this.updateCurrentTimeScaleDensity()\n for (const axisName in this.xAxes) {\n this.rescaleAxis(axisName, this.timeScale)\n this.translateTicksText(axisName)\n }\n this.updateEventsRects()\n this.repositionSelectedTimestampCursor()\n },\n rescaleAxis(axisName: string, newScale: d3.ScaleTime<any, any, unknown>) {\n const axis: Axis<Date> = this.xAxes[axisName as TimelineAxis]\n const ticksConfig = this.getAxisTicksConfig(\n this.xAxesConfig[axisName as TimelineAxis]\n )\n axis\n .scale(newScale)\n .ticks(ticksConfig.interval)\n .tickFormat((d) => ticksConfig.formatFn(d))\n .tickSizeOuter(0)\n this.svg.select<SVGGElement>(`.${classes.xAxis}-${axisName}`).call(axis)\n },\n translateTicksText(axisName: string) {\n this.svg\n .select<SVGGElement>(`.${classes.xAxis}-${axisName}`)\n .selectAll(\".tick text\")\n .each(function () {\n let textElement = d3.select(this as SVGTextElement)\n let textBBox = (textElement.node() as SVGGraphicsElement).getBBox()\n textElement\n .attr(\"x\", textBBox.height / 2)\n .attr(\"y\", 0)\n .style(\"text-anchor\", \"start\")\n })\n },\n updateEventsRects() {\n const rectsSelector = `.${classes.eventGroup} > rect:not(.${classes.labelBg}):not(.${classes.labelBgFill}):not(.${classes.eventGroupBg})`\n this.svg\n .selectAll<SVGRectElement, TimelineEvent>(rectsSelector)\n .attr(\"x\", this.getEventRectX)\n .attr(\"width\", this.getEventRectWidth)\n .attr(\"height\", this.eventGroupHeight)\n },\n getEventRectX(d: TimelineEvent) {\n return this.timeScale(this.tzStringToDate(d.startDate || d.timestamp))\n },\n getEventRectWidth(d: TimelineEvent) {\n if (!d) {\n return 0\n }\n if (d.startDate && d.endDate) {\n const startTimestamp = new Date(d.startDate)\n const endTimestamp = new Date(d.endDate)\n const width =\n this.timeScale(endTimestamp) - this.timeScale(startTimestamp)\n\n return Math.max(width, 1)\n } else {\n const oneSecondWidth = 1 / (this.currentTimeScaleDensity * 3600)\n\n return Math.max(oneSecondWidth, 1)\n }\n },\n drawEventsGroups() {\n this.svg.selectAll(`g.${classes.eventGroup}`).remove()\n Object.entries(this.eventsGroups).forEach(\n ([type, eventsGroup], index) => {\n const { color, label, events } = eventsGroup as TimelineEventsGroup\n const padding = index === 0 ? 0 : this.eventGroupPadding\n const yPosition =\n index * (this.eventGroupHeight + padding) + this.combinedXAxesHeight\n const gElement = this.svg\n .append(\"g\")\n .attr(\"data-color\", color)\n .classed(classes.eventGroup, true)\n .classed(`${classes.eventGroup}-${type}`, true)\n\n this.drawBackground({\n color,\n gElement,\n yPosition,\n })\n\n this.drawEvents({\n events,\n color,\n gElement,\n yPosition,\n type,\n })\n\n this.drawTextLabel({\n color,\n label,\n gElement,\n yPosition,\n })\n }\n )\n },\n drawBackground({\n color,\n yPosition,\n gElement,\n }: {\n gElement: d3.Selection<SVGGElement, any, any, any>\n yPosition: number\n color: string\n }) {\n gElement\n .append(\"rect\")\n .attr(\"class\", classes.eventGroupBg)\n .attr(\"x\", 0)\n .attr(\"y\", yPosition)\n .attr(\"width\", this.timeline.offsetWidth)\n .attr(\"height\", this.eventGroupHeight)\n .attr(\"fill\", d3.color(color)!.toString())\n .style(\"opacity\", 0.1)\n },\n drawEvents({\n events,\n gElement,\n yPosition,\n color,\n type,\n }: {\n events: TimelineEvent[]\n gElement: d3.Selection<SVGGElement, any, any, any>\n yPosition: number\n color: string\n type: string\n }) {\n gElement\n .selectAll(\"rect\")\n .data(events)\n .enter()\n .append(\"rect\")\n .attr(\"x\", this.getEventRectX)\n .attr(\"y\", yPosition)\n .attr(\"ry\", 1.5)\n .attr(\"rx\", 1.5)\n .attr(\"width\", this.getEventRectWidth)\n .attr(\"height\", this.eventGroupHeight)\n .attr(\"stroke-width\", 5)\n .attr(\"cursor\", \"pointer\")\n .attr(\"stroke\", \"#0000\")\n .style(\"fill\", color)\n .on(\"mouseover\", (event, eventData) =>\n this.handleEventMouseOver(event, eventData, type)\n )\n .on(\"mouseout\", () => this.handleEventMouseOut())\n },\n drawTextLabel({\n gElement,\n yPosition,\n color,\n label,\n }: {\n gElement: d3.Selection<SVGGElement, any, any, any>\n yPosition: number\n color: string\n label: string\n }) {\n const bg = {\n x: -5,\n y: yPosition,\n w: this.labelRectWidth + 5,\n h: this.eventGroupHeight,\n radius: 3,\n }\n\n // Label rect background\n gElement\n .append(\"rect\")\n .attr(\"class\", classes.labelBg)\n .attr(\"x\", bg.x)\n .attr(\"y\", bg.y)\n .attr(\"width\", bg.w)\n .attr(\"height\", bg.h)\n .attr(\"rx\", bg.radius)\n .attr(\"ry\", bg.radius)\n .style(\"fill\", this.dark ? \"#131a29\" : \"white\")\n\n // Label rect fill\n gElement\n .append(\"rect\")\n .attr(\"class\", classes.labelBgFill)\n .attr(\"x\", bg.x)\n .attr(\"y\", bg.y)\n .attr(\"width\", bg.w)\n .attr(\"height\", bg.h)\n .attr(\"rx\", bg.radius)\n .attr(\"ry\", bg.radius)\n .style(\"fill\", this.getLabelBackgroundColor(color))\n .style(\"stroke\", this.getTextFillColor(color))\n .style(\"stroke-width\", 0.25)\n\n // Label text\n gElement\n .append(\"text\")\n .attr(\"class\", classes.labelText)\n .attr(\"x\", 5)\n .attr(\"y\", yPosition + this.eventGroupHeight / 2)\n .attr(\"dy\", \"0.35em\")\n .style(\"text-anchor\", \"start\")\n .style(\"font-size\", \"12px\")\n .style(\"font-weight\", 500)\n .style(\"stroke-linejoin\", \"round\")\n .style(\"paint-order\", \"stroke\")\n .style(\"fill\", this.getTextFillColor(color))\n .text(label)\n },\n getTextFillColor(baseColor: string) {\n return (\n this.dark\n ? d3.color(baseColor)?.brighter(1.5)\n : d3.color(baseColor)?.darker(2)\n )!.toString()\n },\n getLabelBackgroundColor(baseColor: string) {\n let color = d3.color(baseColor)\n color!.opacity = this.dark ? 0.2 : 0.5\n\n return color!.toString()\n },\n onDarkModeChange() {\n Object.entries(this.eventsGroups).forEach(([type, _eventsGroup]) => {\n const gElement = this.svg.select(`.${classes.eventGroup}-${type}`)\n\n const color = (gElement.node()! as HTMLElement).dataset.color\n gElement\n .select(`.${classes.labelBg}`)\n .style(\"fill\", this.dark ? \"black\" : \"white\")\n gElement\n .select(`.${classes.labelBgFill}`)\n .style(\"fill\", this.getLabelBackgroundColor(color as string))\n .style(\"stroke\", this.getTextFillColor(color as string))\n .style(\"stroke-width\", 0.25)\n gElement\n .select(`.${classes.labelText}`)\n .style(\"fill\", this.getTextFillColor(color as string))\n })\n },\n },\n})\n","// Components\nimport EAvatar from \"@/components/EAvatar.vue\"\nimport EBadge from \"@/components/EBadge.vue\"\nimport EIcon from \"@/components/EIcon.vue\"\nimport ESpinner from \"@/components/ESpinner.vue\"\nimport ERow from \"@/components/ERow.vue\"\nimport ECol from \"@/components/ECol.vue\"\nimport EVideoPlayer from \"@/components/EVideoPlayer.vue\"\nimport ETimeline from \"@/components/ETimeline.vue\"\n\n// Directives\nimport { DirectivesMap } from \"@/directives\"\n\nimport { VueConstructor } from \"vue\"\n\nexport const components = {\n EAvatar,\n EBadge,\n EIcon,\n ESpinner,\n ERow,\n ECol,\n EVideoPlayer,\n ETimeline,\n}\n\nexport default {\n install(Vue: VueConstructor) {\n // Register components\n Object.keys(components).forEach((name) => {\n // @ts-ignore\n Vue.component(name, components[name])\n })\n\n // Register directives\n DirectivesMap.forEach(({ name, definition }) => {\n Vue.directive(name, definition)\n })\n },\n}\n\nexport { EAvatar, EBadge, EIcon, ESpinner, ERow, ECol, EVideoPlayer, ETimeline }\n\nexport * from \"@/constants\"\n\nexport * from \"@/types\"\n\nexport * from \"@/utils\"\n\nexport * from \"@/directives\"\n"],"names":["Size","BaseColor","TimelineAxis","_sfc_main$7","Vue","colorClasses","sizeClasses","_sfc_main$6","Badge","exports","negateValue","value","sign","numericFunctions","fn","_default","pluginConfig","plugins","pluginName","x","create","picocolors_browserModule","_export","target","all","name","dim","_picocolors","_interop_require_default","require$$0","obj","alreadyShown","log","type","messages","key","message","input","_log","warn","version","from","to","defaults","sources","source","k","_target_hasOwnProperty","_target_hasOwnProperty1","toPath","path","openBrackets","closedBrackets","flagEnabled","issueFlagNotices","require$$1","featureFlags","config","flag","_config_future","_config_future_flag","_ref","_config_experimental","_config_experimental_flag","_ref1","experimentalFlagsEnabled","changes","s","normalizeConfig","_featureFlags","_interop_require_wildcard","_getRequireWildcardCache","nodeInterop","cacheBabelInterop","cacheNodeInterop","cache","newObj","hasPropertyDescriptor","desc","_purge_options","content","purge","safelist","blocklist","item","_config_prefix","extract","_config_purge","_config_content","_config_purge1","_config_purge_extract","_config_content1","_config_content_extract","_config_purge2","_config_purge_options","_config_content2","_config_content_options","extractors","defaultExtractor","extensions","extractor","extension","transform","_config_purge_transform","_config_content_transform","transformers","file","isPlainObject","prototype","cloneDeep","child","v","escapeCommas","className","parseColor","formatColor","_colorNames","HEX","SHORT_HEX","VALUE","SEP","ALPHA_SEP","CUSTOM_PROPERTY","RGB","HSL","loose","_match_","_match__toString","hex","_","r","g","b","a","_value_match","match","color","part","mode","alpha","hasAlpha","withAlphaValue","withAlphaVariable","_color","alphaValue","defaultValue","parsed","property","variable","properties","p","splitAtTopLevelOnly","separator","stack","parts","lastPos","isEscaped","idx","char","parseBoxShadowValue","formatBoxShadowValue","_splitAtTopLevelOnly","KEYWORDS","SPACE","LENGTH","shadow","result","seen","shadows","normalize","url","number","percentage","length","lineWidth","image","gradient","position","familyName","genericName","absoluteSize","relativeSize","_parseBoxShadowValue","require$$2","cssFunctions","isCSSFunction","placeholder","placeholderRe","isRoot","fullMatch","characterBefore","normalizeMathOperatorSpacing","vars","g1","lengthUnitsPattern","lineWidths","parsedShadows","parsedShadow","colors","images","gradientTypes","validPositions","positions","fonts","genericNames","absoluteSizes","relativeSizes","backgroundSize","_dataTypes","keywordValues","sizes","size","updateAllClasses","asValue","parseColorFormat","asColor","asLookupValue","typeMap","coerceValue","getMatchingTypes","_escapeCommas","_withAlphaVariable","_negateValue","require$$3","_validateFormalSyntax","require$$4","require$$5","selectors","updateClass","sel","resolveArbitraryValue","modifier","validate","isArbitraryValue","asNegativeValue","lookup","positiveValue","resolved","options","_options_values","splitUtilityModifier","slashIdx","oldValue","opacityValue","unwrapArbitraryModifier","tailwindConfig","_options_values1","_options_values2","_tailwindConfig_theme","_tailwindConfig_theme_opacity","_options_values_color","normalizedColor","guess","supportedTypes","splitAtFirst","delim","types","arbitraryValue","explicitType","matches","rawModifier","modifiersEnabled","utilityModifier","_options_modifiers","_options_modifiers_utilityModifier","configValue","toColorValue","maybeFunction","resolveConfig","_corePluginList","_configurePlugins","_colors","_defaults","_toPath","_normalizeConfig","require$$6","_isPlainObject","require$$7","_cloneDeep","require$$8","_pluginUtils","require$$9","require$$10","_toColorValue","require$$11","isFunction","mergeWith","customizer","merged","configUtils","scale","negativeScale","negativeValue","screens","breakpoints","valueToResolve","args","collectExtends","items","extend","mergedValue","extendValue","mergeThemes","themes","theme","mergeExtensionCustomizer","mergeExtensions","themeValue","resolveThemePath","utils","e","toPaths","pattern","prefix","newPath","resolveFunctionKeys","object","resolvePath","index","val","normalized","extractPluginConfigs","configs","allConfigs","_config_plugins","plugin","_plugin_config","resolveCorePlugins","corePluginConfigs","corePluginConfig","resolvePluginLists","pluginLists","pluginList","_t_theme","_c_plugins","t","c","config_full","getAllConfigs","_configfull","_config_presets","preset","features","experimentals","feature","_resolveConfig","_getAllConfigs","defaultConfigs","resolveConfig_1","colors_1","BrandColors","customColors","TailwindColors.white","TailwindColors.amber","TailwindColors.rose","TailwindColors.cyan","TailwindColors.lime","TailwindColors.sky","CustomColors","TailwindColors.slate","fullConfig","TextSizes","Colors","BadgeSizes","AvatarSizes","IconSizes","BadgeColors","EVENTS","_sfc_main$5","acc","iconClasses","_b","_a","_sfc_main$4","fill","animationDuration","_sfc_main$3","_sfc_main$2","prop","acceptUndefined","n","isFullScreen","makeFullScreen","element","resolve","exitFullScreen","leadingZeroFormatter","VIDEO_PLAYER_EVENTS","formatDuration","time","seconds","minutes","hours","_sfc_main$1","ESpinner","videoOptions","event","which","player","timelineContainer","playerRef","state","currentTime","percent","rect","duration","videoContainer","playPromise","tagName","getFormattedDay","d","day","d3","daySuffix","getFormatterDayNoEndOfMonth","getFormattedHour","getFormattedHourMinute","HH_MM","getFormattedMinuteSecond","getFormattedOverviewMinuteSecond","getFormattedOverviewHour","hour","month","filterHourDivisibleBy","filterMinutesDivisibleBy","minute","filterMinutesSecondsDivisibleBy","second","Precision","defaultAxesConfig","format","_c","_d","_e","_f","_g","_h","dayOfMonth","daysInMonth","fifthOfMonth","quarterOfTheMonth","halfOfTheMonth","ResizeObserverDirective","el","binding","callback","observer","entries","DirectivesMap","hookCallback","hooks","setHookCallback","isArray","isObject","hasOwnProp","isObjectEmpty","isUndefined","isNumber","isDate","map","arr","res","i","arrLen","createUTC","locale","strict","createLocalOrUTC","defaultParsingFlags","getParsingFlags","m","some","fun","len","isValid","flags","parsedParts","isNowValid","createInvalid","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","Moment","isMoment","msg","deprecate","firstTime","arg","argLen","deprecations","deprecateSimple","set","mergeConfigs","parentConfig","childConfig","Locale","keys","defaultCalendar","calendar","mom","now","output","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","removeFormattingTokens","makeFormatFunction","array","formatMoment","expandFormat","replaceLongDateFormatTokens","defaultLongDateFormat","longDateFormat","formatUpper","tok","defaultInvalidDate","invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","defaultRelativeTime","relativeTime","withoutSuffix","string","isFuture","pastFuture","diff","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedInput","normalizedProp","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","u","isLeapYear","year","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","get","stringGet","stringSet","prioritized","prioritizedLen","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","regexes","addRegexToken","regex","strictRegex","isStrict","localeData","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","tokenLen","addWeekParseToken","addTimeToArrayFromToken","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","mod","indexOf","o","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","localeMonthsShort","handleStrictParse","monthName","ii","llc","localeMonthsParse","setMonth","getSetMonth","getDaysInMonth","monthsShortRegex","computeMonthsParse","monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","y","daysInYear","getSetYear","getIsLeapYear","createDate","h","M","ms","date","createUTCDate","firstWeekOffset","dow","doy","fwd","fwdlw","dayOfYearFromWeeks","week","weekday","localWeekday","weekOffset","dayOfYear","resYear","resDayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","parseIsoWeekday","shiftWeekdays","ws","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","weekdays","localeWeekdaysShort","localeWeekdaysMin","handleStrictParse$1","weekdayName","localeWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","weekdaysRegex","computeWeekdaysParse","weekdaysShortRegex","weekdaysMinRegex","minPieces","minp","shortp","longp","hFormat","kFormat","meridiem","lowercase","matchMeridiem","kInput","pos","pos1","pos2","localeIsPM","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","baseConfig","locales","localeFamilies","globalLocale","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","next","split","loadLocale","isLocaleNameSane","oldLocale","aliasedRequire","getSetGlobalLocale","values","data","getLocale","defineLocale","updateLocale","tmpLocale","listLocales","checkOverflow","overflow","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","rfc2822","obsOffsets","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","weekdayProvided","weekdayActual","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","currentDateArray","nowValue","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","w","weekYear","temp","weekdayOverflow","curWeek","createLocal","skipped","stringLength","totalParsedInputLength","era","meridiemFixWrap","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","configFromObject","dayOrDate","createFromConfig","prepareConfig","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","min","max","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","years","quarters","months","weeks","days","milliseconds","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","offsetFromString","chunkOffset","matcher","chunk","cloneWithOffset","model","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","createAdder","direction","period","dur","tmp","isAdding","updateOffset","add","subtract","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","formats","sod","clone","isAfter","localInput","isBefore","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","anchor2","adjust","toString","toISOString","keepOffset","utc","inspect","zone","datetime","suffix","inputString","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOf","startOfDate","endOf","valueOf","unix","toDate","toArray","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","localeEras","eras","localeErasParse","eraName","abbr","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","erasAbbrRegex","erasNarrowRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetSecond","getSetMillisecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","preParsePostFormat","proto$1","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","mathAbs","abs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","round","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","humanize","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","total","totalSign","ymSign","daysSign","hmsSign","proto$2","root","factory","module","this","moment","VERSION","zones","links","countries","guesses","cachedGuess","logError","momentVersion","major","minor","charCodeToInt","charCode","unpackBase60","whole","fractional","multiplier","num","arrayToInt","intToUntil","mapIndices","indices","unpack","offsets","untils","Zone","packedString","unpacked","timestamp","zone_name","country_code","offsetNext","offsetPrev","tz","Country","country_name","zone_names","OffsetAt","at","timeString","ZoneScore","offsetAt","findChange","low","high","mid","userOffsets","startYear","last","change","sortZoneScores","addToGuesses","guessesForUserOffsets","offsetsLength","filteredGuesses","guessesOffset","rebuildGuess","intlName","normalizeName","zoneScores","zoneScore","getZone","ignoreCache","addZone","packed","caller","link","getNames","getCountryNames","addLink","normal0","normal1","addCountries","country_zones","getCountry","zonesForCountry","country","with_offset","loadData","zoneExists","needsOffset","isUnixTimestamp","z","abbrWrap","old","resetZoneWrap","resetZoneWrap2","momentTimezoneModule","classes","_sfc_main","eventsGroup","axesCount","eventsGroupsCount","padding","eventsGouprsHeight","oldestEvent","latestEvent","userUtcOffset","contentRect","sampleTimestamp","startDate","endDate","axisName","axis","interval","cursor","cursorX","timeAtPixel0","timeAtPixel1","mouseX","formattedDateTz","_event","eventData","eventType","newScale","startTime","endTime","timelineWidth","newDomain","newRange","ticksConfig","textElement","textBBox","rectsSelector","startTimestamp","endTimestamp","width","oneSecondWidth","label","events","yPosition","gElement","bg","baseColor","_eventsGroup","components","EAvatar","EBadge","EIcon","ERow","ECol","EVideoPlayer","ETimeline","definition"],"mappings":"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A,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAA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","x_google_ignoreList":[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,42,43,44]}
1
+ {"version":3,"file":"index.mjs","sources":["../src/types.ts","../src/components/EBadge.vue?vue&type=script&lang.ts","../src/components/EAvatar.vue?vue&type=script&lang.ts","../node_modules/tailwindcss/lib/util/negateValue.js","../node_modules/tailwindcss/lib/corePluginList.js","../node_modules/tailwindcss/lib/util/configurePlugins.js","../node_modules/picocolors/picocolors.browser.js","../node_modules/tailwindcss/lib/util/log.js","../node_modules/tailwindcss/lib/public/colors.js","../node_modules/tailwindcss/lib/util/defaults.js","../node_modules/tailwindcss/lib/util/toPath.js","../node_modules/tailwindcss/lib/featureFlags.js","../node_modules/tailwindcss/lib/util/normalizeConfig.js","../node_modules/tailwindcss/lib/util/isPlainObject.js","../node_modules/tailwindcss/lib/util/cloneDeep.js","../node_modules/tailwindcss/lib/util/escapeCommas.js","../node_modules/tailwindcss/lib/util/colorNames.js","../node_modules/tailwindcss/lib/util/color.js","../node_modules/tailwindcss/lib/util/withAlphaVariable.js","../node_modules/tailwindcss/lib/util/splitAtTopLevelOnly.js","../node_modules/tailwindcss/lib/util/parseBoxShadowValue.js","../node_modules/tailwindcss/lib/util/dataTypes.js","../node_modules/tailwindcss/lib/util/validateFormalSyntax.js","../node_modules/tailwindcss/lib/util/pluginUtils.js","../node_modules/tailwindcss/lib/util/toColorValue.js","../node_modules/tailwindcss/lib/util/resolveConfig.js","../node_modules/tailwindcss/stubs/config.full.js","../node_modules/tailwindcss/lib/util/getAllConfigs.js","../node_modules/tailwindcss/lib/public/resolve-config.js","../node_modules/tailwindcss/resolveConfig.js","../node_modules/tailwindcss/colors.js","../config.ts","../src/constants.ts","../src/components/EIcon.vue?vue&type=script&lang.ts","../src/components/ESpinner.vue?vue&type=script&lang.ts","../src/components/ERow.vue?vue&type=script&lang.ts","../src/components/ECol.vue?vue&type=script&lang.ts","../src/utils.ts","../src/components/EVideoPlayer.vue?vue&type=script&lang.ts","../src/components/ETimeline.config.ts","../src/directives/resize-observer.ts","../src/directives/index.ts","../node_modules/moment/dist/moment.js","../node_modules/moment-timezone/moment-timezone.js","../node_modules/moment-timezone/index.js","../src/components/ETimeline.vue?vue&type=script&lang.ts","../src/index.ts"],"sourcesContent":["import { BadgeSizes, AvatarSizes, IconSizes, BadgeColors } from \"@/constants\"\n\nexport enum Size {\n dot = \"dot\",\n xs = \"xs\",\n sm = \"sm\",\n md = \"base\",\n base = \"base\",\n lg = \"lg\",\n xl = \"xl\",\n \"2xl\" = \"2xl\",\n \"3xl\" = \"3xl\",\n \"4xl\" = \"4xl\",\n \"5xl\" = \"5xl\",\n \"6xl\" = \"6xl\",\n \"7xl\" = \"7xl\",\n \"8xl\" = \"8xl\",\n \"9xl\" = \"9xl\",\n}\n\nexport enum BaseColor {\n warning = \"warning\",\n error = \"error\",\n info = \"info\",\n success = \"success\",\n primary = \"primary\",\n brand = \"brand\",\n default = \"default\",\n}\n\nexport type TBadgeSize = (typeof BadgeSizes)[number]\n\nexport type TAvatarSize = (typeof AvatarSizes)[number]\n\nexport type TIconSize = (typeof IconSizes)[number]\n\nexport type TBadgeColor = (typeof BadgeColors)[number]\n\nexport type TailwindColorClass = string\n\nexport type FlexJustifyContent =\n | \"around\"\n | \"between\"\n | \"center\"\n | \"end\"\n | \"evenly\"\n | \"normal\"\n | \"start\"\n | \"stretch\"\n\nexport type FlexAlignItems = \"start\" | \"center\" | \"end\" | \"baseline\" | \"stretch\"\n\nexport type FlexAlignContent =\n | \"around\"\n | \"baseline\"\n | \"between\"\n | \"center\"\n | \"end\"\n | \"evenly\"\n | \"normal\"\n | \"start\"\n | \"stretch\"\n\nexport type FlexAlignSelf =\n | \"auto\"\n | \"baseline\"\n | \"center\"\n | \"end\"\n | \"start\"\n | \"stretch\"\n\nexport enum TimelineAxis {\n overview = \"overview\",\n detailed = \"detailed\",\n detailedBackground = \"detailedBackground\",\n}\n\nexport type TimelineTicksConfig = {\n precision: number\n interval: any\n format: string | ((d: Date) => string)\n}\n\nexport type TimelineAxesConfig = {\n [key in TimelineAxis]: TimelineTicksConfig[]\n}\n\nexport type Timestamp = Date | string | number\n\nexport default {}\n","\nimport Vue, { PropType } from \"vue\"\nimport { BaseColor, Size, TBadgeColor, TBadgeSize } from \"@/types\"\n\nexport default Vue.extend({\n name: \"EBadge\",\n props: {\n text: {\n type: String,\n default: \"\",\n },\n color: {\n type: String as PropType<TBadgeColor>,\n default: BaseColor.default,\n },\n size: {\n type: String as PropType<TBadgeSize>,\n default: Size.base,\n },\n },\n data() {\n return {\n colors: {\n [BaseColor.error]: \"e-bg-rose-500 e-text-white\",\n [BaseColor.info]: \"e-bg-cyan-500 e-text-white\",\n [BaseColor.warning]: \"e-bg-amber-500 e-text-white\",\n [BaseColor.primary]: \"e-bg-sky-500 e-text-white\",\n [BaseColor.default]: \"e-bg-slate-300 e-text-white\",\n [BaseColor.success]: \"e-bg-lime-500 e-text-white\",\n },\n sizes: {\n [Size.dot]: \"e-w-2 e-h-2\",\n [Size.xs]: \"e-w-3 e-h-3\",\n [Size.sm]: \"e-w-4 e-h-4\",\n [Size.md]: \"e-w-5 e-h-5\",\n [Size.lg]:\n \"e-min-w-[2rem] e-max-w-[4rem] e-px-1 e-h-6 e-text-sm e-font-medium\",\n [Size.xl]:\n \"e-min-w-[3rem] e-max-w-[5rem] e-px-1 e-h-8 e-text-base e-font-medium\",\n },\n }\n },\n computed: {\n badgeClasses(): string[] {\n const colorClasses =\n this.colors[this.color] || this.colors[BaseColor.default]\n const sizeClasses = this.sizes[this.size] || this.sizes[Size.md]\n\n return [\n \"e-flex e-items-center e-justify-center e-rounded-full\",\n colorClasses,\n sizeClasses,\n ]\n },\n showText(): boolean {\n return [Size.lg, Size.xl].includes(this.size)\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport Badge from \"@/components/EBadge.vue\"\nimport { BaseColor, Size, TAvatarSize, TBadgeColor, TBadgeSize } from \"@/types\"\n\nexport default Vue.extend({\n name: \"EAvatar\",\n components: {\n Badge,\n },\n props: {\n size: {\n type: String as PropType<TAvatarSize>,\n default: Size.md,\n },\n showBadge: {\n type: Boolean,\n default: false,\n },\n badgeColor: {\n type: String as PropType<TBadgeColor>,\n default: BaseColor.error,\n },\n badgeText: {\n type: String,\n default: \"\",\n },\n badgeSize: {\n type: String as PropType<TBadgeSize>,\n default: Size.md,\n },\n image: {\n type: String,\n default: \"\",\n },\n },\n data() {\n return {\n sizes: {\n [Size.xs]: \"e-w-8 e-h-8 e-text-xs\",\n [Size.sm]: \"e-w-10 e-h-10 e-text-sm\",\n [Size.md]: \"e-w-14 e-h-14 e-text-base\",\n [Size.lg]: \"e-w-20 e-h-20 e-text-2xl\",\n [Size.xl]: \"e-w-28 e-h-28 e-text-3xl\",\n [Size[\"2xl\"]]: \"e-w-36 e-h-36 e-text-5xl\",\n },\n }\n },\n computed: {\n avatarClasses(): string[] {\n const sizeClasses = this.sizes[this.size] || this.sizes[Size.xs]\n\n return [\n \"e-flex e-items-center e-justify-center e-rounded-full e-bg-purple-500 e-text-white e-font-medium\",\n sizeClasses,\n ]\n },\n },\n})\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return negateValue;\n }\n});\nfunction negateValue(value) {\n value = `${value}`;\n if (value === \"0\") {\n return \"0\";\n }\n // Flip sign of numbers\n if (/^[+-]?(\\d+|\\d*\\.\\d+)(e[+-]?\\d+)?(%|\\w+)?$/.test(value)) {\n return value.replace(/^[+-]?/, (sign)=>sign === \"-\" ? \"\" : \"-\");\n }\n // What functions we support negating numeric values for\n // var() isn't inherently a numeric function but we support it anyway\n // The trigonometric functions are omitted because you'll need to use calc(…) with them _anyway_\n // to produce generally useful results and that will be covered already\n let numericFunctions = [\n \"var\",\n \"calc\",\n \"min\",\n \"max\",\n \"clamp\"\n ];\n for (const fn of numericFunctions){\n if (value.includes(`${fn}(`)) {\n return `calc(${value} * -1)`;\n }\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _default = [\n \"preflight\",\n \"container\",\n \"accessibility\",\n \"pointerEvents\",\n \"visibility\",\n \"position\",\n \"inset\",\n \"isolation\",\n \"zIndex\",\n \"order\",\n \"gridColumn\",\n \"gridColumnStart\",\n \"gridColumnEnd\",\n \"gridRow\",\n \"gridRowStart\",\n \"gridRowEnd\",\n \"float\",\n \"clear\",\n \"margin\",\n \"boxSizing\",\n \"lineClamp\",\n \"display\",\n \"aspectRatio\",\n \"height\",\n \"maxHeight\",\n \"minHeight\",\n \"width\",\n \"minWidth\",\n \"maxWidth\",\n \"flex\",\n \"flexShrink\",\n \"flexGrow\",\n \"flexBasis\",\n \"tableLayout\",\n \"captionSide\",\n \"borderCollapse\",\n \"borderSpacing\",\n \"transformOrigin\",\n \"translate\",\n \"rotate\",\n \"skew\",\n \"scale\",\n \"transform\",\n \"animation\",\n \"cursor\",\n \"touchAction\",\n \"userSelect\",\n \"resize\",\n \"scrollSnapType\",\n \"scrollSnapAlign\",\n \"scrollSnapStop\",\n \"scrollMargin\",\n \"scrollPadding\",\n \"listStylePosition\",\n \"listStyleType\",\n \"listStyleImage\",\n \"appearance\",\n \"columns\",\n \"breakBefore\",\n \"breakInside\",\n \"breakAfter\",\n \"gridAutoColumns\",\n \"gridAutoFlow\",\n \"gridAutoRows\",\n \"gridTemplateColumns\",\n \"gridTemplateRows\",\n \"flexDirection\",\n \"flexWrap\",\n \"placeContent\",\n \"placeItems\",\n \"alignContent\",\n \"alignItems\",\n \"justifyContent\",\n \"justifyItems\",\n \"gap\",\n \"space\",\n \"divideWidth\",\n \"divideStyle\",\n \"divideColor\",\n \"divideOpacity\",\n \"placeSelf\",\n \"alignSelf\",\n \"justifySelf\",\n \"overflow\",\n \"overscrollBehavior\",\n \"scrollBehavior\",\n \"textOverflow\",\n \"hyphens\",\n \"whitespace\",\n \"wordBreak\",\n \"borderRadius\",\n \"borderWidth\",\n \"borderStyle\",\n \"borderColor\",\n \"borderOpacity\",\n \"backgroundColor\",\n \"backgroundOpacity\",\n \"backgroundImage\",\n \"gradientColorStops\",\n \"boxDecorationBreak\",\n \"backgroundSize\",\n \"backgroundAttachment\",\n \"backgroundClip\",\n \"backgroundPosition\",\n \"backgroundRepeat\",\n \"backgroundOrigin\",\n \"fill\",\n \"stroke\",\n \"strokeWidth\",\n \"objectFit\",\n \"objectPosition\",\n \"padding\",\n \"textAlign\",\n \"textIndent\",\n \"verticalAlign\",\n \"fontFamily\",\n \"fontSize\",\n \"fontWeight\",\n \"textTransform\",\n \"fontStyle\",\n \"fontVariantNumeric\",\n \"lineHeight\",\n \"letterSpacing\",\n \"textColor\",\n \"textOpacity\",\n \"textDecoration\",\n \"textDecorationColor\",\n \"textDecorationStyle\",\n \"textDecorationThickness\",\n \"textUnderlineOffset\",\n \"fontSmoothing\",\n \"placeholderColor\",\n \"placeholderOpacity\",\n \"caretColor\",\n \"accentColor\",\n \"opacity\",\n \"backgroundBlendMode\",\n \"mixBlendMode\",\n \"boxShadow\",\n \"boxShadowColor\",\n \"outlineStyle\",\n \"outlineWidth\",\n \"outlineOffset\",\n \"outlineColor\",\n \"ringWidth\",\n \"ringColor\",\n \"ringOpacity\",\n \"ringOffsetWidth\",\n \"ringOffsetColor\",\n \"blur\",\n \"brightness\",\n \"contrast\",\n \"dropShadow\",\n \"grayscale\",\n \"hueRotate\",\n \"invert\",\n \"saturate\",\n \"sepia\",\n \"filter\",\n \"backdropBlur\",\n \"backdropBrightness\",\n \"backdropContrast\",\n \"backdropGrayscale\",\n \"backdropHueRotate\",\n \"backdropInvert\",\n \"backdropOpacity\",\n \"backdropSaturate\",\n \"backdropSepia\",\n \"backdropFilter\",\n \"transitionProperty\",\n \"transitionDelay\",\n \"transitionDuration\",\n \"transitionTimingFunction\",\n \"willChange\",\n \"content\"\n];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nfunction _default(pluginConfig, plugins) {\n if (pluginConfig === undefined) {\n return plugins;\n }\n const pluginNames = Array.isArray(pluginConfig) ? pluginConfig : [\n ...new Set(plugins.filter((pluginName)=>{\n return pluginConfig !== false && pluginConfig[pluginName] !== false;\n }).concat(Object.keys(pluginConfig).filter((pluginName)=>{\n return pluginConfig[pluginName] !== false;\n })))\n ];\n return pluginNames;\n}\n","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n dim: function() {\n return dim;\n },\n default: function() {\n return _default;\n }\n});\nconst _picocolors = /*#__PURE__*/ _interop_require_default(require(\"picocolors\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet alreadyShown = new Set();\nfunction log(type, messages, key) {\n if (typeof process !== \"undefined\" && process.env.JEST_WORKER_ID) return;\n if (key && alreadyShown.has(key)) return;\n if (key) alreadyShown.add(key);\n console.warn(\"\");\n messages.forEach((message)=>console.warn(type, \"-\", message));\n}\nfunction dim(input) {\n return _picocolors.default.dim(input);\n}\nconst _default = {\n info (key, messages) {\n log(_picocolors.default.bold(_picocolors.default.cyan(\"info\")), ...Array.isArray(key) ? [\n key\n ] : [\n messages,\n key\n ]);\n },\n warn (key, messages) {\n log(_picocolors.default.bold(_picocolors.default.yellow(\"warn\")), ...Array.isArray(key) ? [\n key\n ] : [\n messages,\n key\n ]);\n },\n risk (key, messages) {\n log(_picocolors.default.bold(_picocolors.default.magenta(\"risk\")), ...Array.isArray(key) ? [\n key\n ] : [\n messages,\n key\n ]);\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _log = /*#__PURE__*/ _interop_require_default(require(\"../util/log\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction warn({ version , from , to }) {\n _log.default.warn(`${from}-color-renamed`, [\n `As of Tailwind CSS ${version}, \\`${from}\\` has been renamed to \\`${to}\\`.`,\n \"Update your configuration file to silence this warning.\"\n ]);\n}\nconst _default = {\n inherit: \"inherit\",\n current: \"currentColor\",\n transparent: \"transparent\",\n black: \"#000\",\n white: \"#fff\",\n slate: {\n 50: \"#f8fafc\",\n 100: \"#f1f5f9\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e1\",\n 400: \"#94a3b8\",\n 500: \"#64748b\",\n 600: \"#475569\",\n 700: \"#334155\",\n 800: \"#1e293b\",\n 900: \"#0f172a\",\n 950: \"#020617\"\n },\n gray: {\n 50: \"#f9fafb\",\n 100: \"#f3f4f6\",\n 200: \"#e5e7eb\",\n 300: \"#d1d5db\",\n 400: \"#9ca3af\",\n 500: \"#6b7280\",\n 600: \"#4b5563\",\n 700: \"#374151\",\n 800: \"#1f2937\",\n 900: \"#111827\",\n 950: \"#030712\"\n },\n zinc: {\n 50: \"#fafafa\",\n 100: \"#f4f4f5\",\n 200: \"#e4e4e7\",\n 300: \"#d4d4d8\",\n 400: \"#a1a1aa\",\n 500: \"#71717a\",\n 600: \"#52525b\",\n 700: \"#3f3f46\",\n 800: \"#27272a\",\n 900: \"#18181b\",\n 950: \"#09090b\"\n },\n neutral: {\n 50: \"#fafafa\",\n 100: \"#f5f5f5\",\n 200: \"#e5e5e5\",\n 300: \"#d4d4d4\",\n 400: \"#a3a3a3\",\n 500: \"#737373\",\n 600: \"#525252\",\n 700: \"#404040\",\n 800: \"#262626\",\n 900: \"#171717\",\n 950: \"#0a0a0a\"\n },\n stone: {\n 50: \"#fafaf9\",\n 100: \"#f5f5f4\",\n 200: \"#e7e5e4\",\n 300: \"#d6d3d1\",\n 400: \"#a8a29e\",\n 500: \"#78716c\",\n 600: \"#57534e\",\n 700: \"#44403c\",\n 800: \"#292524\",\n 900: \"#1c1917\",\n 950: \"#0c0a09\"\n },\n red: {\n 50: \"#fef2f2\",\n 100: \"#fee2e2\",\n 200: \"#fecaca\",\n 300: \"#fca5a5\",\n 400: \"#f87171\",\n 500: \"#ef4444\",\n 600: \"#dc2626\",\n 700: \"#b91c1c\",\n 800: \"#991b1b\",\n 900: \"#7f1d1d\",\n 950: \"#450a0a\"\n },\n orange: {\n 50: \"#fff7ed\",\n 100: \"#ffedd5\",\n 200: \"#fed7aa\",\n 300: \"#fdba74\",\n 400: \"#fb923c\",\n 500: \"#f97316\",\n 600: \"#ea580c\",\n 700: \"#c2410c\",\n 800: \"#9a3412\",\n 900: \"#7c2d12\",\n 950: \"#431407\"\n },\n amber: {\n 50: \"#fffbeb\",\n 100: \"#fef3c7\",\n 200: \"#fde68a\",\n 300: \"#fcd34d\",\n 400: \"#fbbf24\",\n 500: \"#f59e0b\",\n 600: \"#d97706\",\n 700: \"#b45309\",\n 800: \"#92400e\",\n 900: \"#78350f\",\n 950: \"#451a03\"\n },\n yellow: {\n 50: \"#fefce8\",\n 100: \"#fef9c3\",\n 200: \"#fef08a\",\n 300: \"#fde047\",\n 400: \"#facc15\",\n 500: \"#eab308\",\n 600: \"#ca8a04\",\n 700: \"#a16207\",\n 800: \"#854d0e\",\n 900: \"#713f12\",\n 950: \"#422006\"\n },\n lime: {\n 50: \"#f7fee7\",\n 100: \"#ecfccb\",\n 200: \"#d9f99d\",\n 300: \"#bef264\",\n 400: \"#a3e635\",\n 500: \"#84cc16\",\n 600: \"#65a30d\",\n 700: \"#4d7c0f\",\n 800: \"#3f6212\",\n 900: \"#365314\",\n 950: \"#1a2e05\"\n },\n green: {\n 50: \"#f0fdf4\",\n 100: \"#dcfce7\",\n 200: \"#bbf7d0\",\n 300: \"#86efac\",\n 400: \"#4ade80\",\n 500: \"#22c55e\",\n 600: \"#16a34a\",\n 700: \"#15803d\",\n 800: \"#166534\",\n 900: \"#14532d\",\n 950: \"#052e16\"\n },\n emerald: {\n 50: \"#ecfdf5\",\n 100: \"#d1fae5\",\n 200: \"#a7f3d0\",\n 300: \"#6ee7b7\",\n 400: \"#34d399\",\n 500: \"#10b981\",\n 600: \"#059669\",\n 700: \"#047857\",\n 800: \"#065f46\",\n 900: \"#064e3b\",\n 950: \"#022c22\"\n },\n teal: {\n 50: \"#f0fdfa\",\n 100: \"#ccfbf1\",\n 200: \"#99f6e4\",\n 300: \"#5eead4\",\n 400: \"#2dd4bf\",\n 500: \"#14b8a6\",\n 600: \"#0d9488\",\n 700: \"#0f766e\",\n 800: \"#115e59\",\n 900: \"#134e4a\",\n 950: \"#042f2e\"\n },\n cyan: {\n 50: \"#ecfeff\",\n 100: \"#cffafe\",\n 200: \"#a5f3fc\",\n 300: \"#67e8f9\",\n 400: \"#22d3ee\",\n 500: \"#06b6d4\",\n 600: \"#0891b2\",\n 700: \"#0e7490\",\n 800: \"#155e75\",\n 900: \"#164e63\",\n 950: \"#083344\"\n },\n sky: {\n 50: \"#f0f9ff\",\n 100: \"#e0f2fe\",\n 200: \"#bae6fd\",\n 300: \"#7dd3fc\",\n 400: \"#38bdf8\",\n 500: \"#0ea5e9\",\n 600: \"#0284c7\",\n 700: \"#0369a1\",\n 800: \"#075985\",\n 900: \"#0c4a6e\",\n 950: \"#082f49\"\n },\n blue: {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 900: \"#1e3a8a\",\n 950: \"#172554\"\n },\n indigo: {\n 50: \"#eef2ff\",\n 100: \"#e0e7ff\",\n 200: \"#c7d2fe\",\n 300: \"#a5b4fc\",\n 400: \"#818cf8\",\n 500: \"#6366f1\",\n 600: \"#4f46e5\",\n 700: \"#4338ca\",\n 800: \"#3730a3\",\n 900: \"#312e81\",\n 950: \"#1e1b4b\"\n },\n violet: {\n 50: \"#f5f3ff\",\n 100: \"#ede9fe\",\n 200: \"#ddd6fe\",\n 300: \"#c4b5fd\",\n 400: \"#a78bfa\",\n 500: \"#8b5cf6\",\n 600: \"#7c3aed\",\n 700: \"#6d28d9\",\n 800: \"#5b21b6\",\n 900: \"#4c1d95\",\n 950: \"#2e1065\"\n },\n purple: {\n 50: \"#faf5ff\",\n 100: \"#f3e8ff\",\n 200: \"#e9d5ff\",\n 300: \"#d8b4fe\",\n 400: \"#c084fc\",\n 500: \"#a855f7\",\n 600: \"#9333ea\",\n 700: \"#7e22ce\",\n 800: \"#6b21a8\",\n 900: \"#581c87\",\n 950: \"#3b0764\"\n },\n fuchsia: {\n 50: \"#fdf4ff\",\n 100: \"#fae8ff\",\n 200: \"#f5d0fe\",\n 300: \"#f0abfc\",\n 400: \"#e879f9\",\n 500: \"#d946ef\",\n 600: \"#c026d3\",\n 700: \"#a21caf\",\n 800: \"#86198f\",\n 900: \"#701a75\",\n 950: \"#4a044e\"\n },\n pink: {\n 50: \"#fdf2f8\",\n 100: \"#fce7f3\",\n 200: \"#fbcfe8\",\n 300: \"#f9a8d4\",\n 400: \"#f472b6\",\n 500: \"#ec4899\",\n 600: \"#db2777\",\n 700: \"#be185d\",\n 800: \"#9d174d\",\n 900: \"#831843\",\n 950: \"#500724\"\n },\n rose: {\n 50: \"#fff1f2\",\n 100: \"#ffe4e6\",\n 200: \"#fecdd3\",\n 300: \"#fda4af\",\n 400: \"#fb7185\",\n 500: \"#f43f5e\",\n 600: \"#e11d48\",\n 700: \"#be123c\",\n 800: \"#9f1239\",\n 900: \"#881337\",\n 950: \"#4c0519\"\n },\n get lightBlue () {\n warn({\n version: \"v2.2\",\n from: \"lightBlue\",\n to: \"sky\"\n });\n return this.sky;\n },\n get warmGray () {\n warn({\n version: \"v3.0\",\n from: \"warmGray\",\n to: \"stone\"\n });\n return this.stone;\n },\n get trueGray () {\n warn({\n version: \"v3.0\",\n from: \"trueGray\",\n to: \"neutral\"\n });\n return this.neutral;\n },\n get coolGray () {\n warn({\n version: \"v3.0\",\n from: \"coolGray\",\n to: \"gray\"\n });\n return this.gray;\n },\n get blueGray () {\n warn({\n version: \"v3.0\",\n from: \"blueGray\",\n to: \"slate\"\n });\n return this.slate;\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"defaults\", {\n enumerable: true,\n get: function() {\n return defaults;\n }\n});\nfunction defaults(target, ...sources) {\n for (let source of sources){\n for(let k in source){\n var _target_hasOwnProperty;\n if (!(target === null || target === void 0 ? void 0 : (_target_hasOwnProperty = target.hasOwnProperty) === null || _target_hasOwnProperty === void 0 ? void 0 : _target_hasOwnProperty.call(target, k))) {\n target[k] = source[k];\n }\n }\n for (let k of Object.getOwnPropertySymbols(source)){\n var _target_hasOwnProperty1;\n if (!(target === null || target === void 0 ? void 0 : (_target_hasOwnProperty1 = target.hasOwnProperty) === null || _target_hasOwnProperty1 === void 0 ? void 0 : _target_hasOwnProperty1.call(target, k))) {\n target[k] = source[k];\n }\n }\n }\n return target;\n}\n","/**\n * Parse a path string into an array of path segments.\n *\n * Square bracket notation `a[b]` may be used to \"escape\" dots that would otherwise be interpreted as path separators.\n *\n * Example:\n * a -> ['a']\n * a.b.c -> ['a', 'b', 'c']\n * a[b].c -> ['a', 'b', 'c']\n * a[b.c].e.f -> ['a', 'b.c', 'e', 'f']\n * a[b][c][d] -> ['a', 'b', 'c', 'd']\n *\n * @param {string|string[]} path\n **/ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"toPath\", {\n enumerable: true,\n get: function() {\n return toPath;\n }\n});\nfunction toPath(path) {\n if (Array.isArray(path)) return path;\n let openBrackets = path.split(\"[\").length - 1;\n let closedBrackets = path.split(\"]\").length - 1;\n if (openBrackets !== closedBrackets) {\n throw new Error(`Path is invalid. Has unbalanced brackets: ${path}`);\n }\n return path.split(/\\.(?![^\\[]*\\])|[\\[\\]]/g).filter(Boolean);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n flagEnabled: function() {\n return flagEnabled;\n },\n issueFlagNotices: function() {\n return issueFlagNotices;\n },\n default: function() {\n return _default;\n }\n});\nconst _picocolors = /*#__PURE__*/ _interop_require_default(require(\"picocolors\"));\nconst _log = /*#__PURE__*/ _interop_require_default(require(\"./util/log\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet defaults = {\n optimizeUniversalDefaults: false,\n generalizedModifiers: true,\n get disableColorOpacityUtilitiesByDefault () {\n return false;\n },\n get relativeContentPathsByDefault () {\n return false;\n }\n};\nlet featureFlags = {\n future: [\n \"hoverOnlyWhenSupported\",\n \"respectDefaultRingColorOpacity\",\n \"disableColorOpacityUtilitiesByDefault\",\n \"relativeContentPathsByDefault\"\n ],\n experimental: [\n \"optimizeUniversalDefaults\",\n \"generalizedModifiers\"\n ]\n};\nfunction flagEnabled(config, flag) {\n if (featureFlags.future.includes(flag)) {\n var _config_future;\n var _config_future_flag, _ref;\n return config.future === \"all\" || ((_ref = (_config_future_flag = config === null || config === void 0 ? void 0 : (_config_future = config.future) === null || _config_future === void 0 ? void 0 : _config_future[flag]) !== null && _config_future_flag !== void 0 ? _config_future_flag : defaults[flag]) !== null && _ref !== void 0 ? _ref : false);\n }\n if (featureFlags.experimental.includes(flag)) {\n var _config_experimental;\n var _config_experimental_flag, _ref1;\n return config.experimental === \"all\" || ((_ref1 = (_config_experimental_flag = config === null || config === void 0 ? void 0 : (_config_experimental = config.experimental) === null || _config_experimental === void 0 ? void 0 : _config_experimental[flag]) !== null && _config_experimental_flag !== void 0 ? _config_experimental_flag : defaults[flag]) !== null && _ref1 !== void 0 ? _ref1 : false);\n }\n return false;\n}\nfunction experimentalFlagsEnabled(config) {\n if (config.experimental === \"all\") {\n return featureFlags.experimental;\n }\n var _config_experimental;\n return Object.keys((_config_experimental = config === null || config === void 0 ? void 0 : config.experimental) !== null && _config_experimental !== void 0 ? _config_experimental : {}).filter((flag)=>featureFlags.experimental.includes(flag) && config.experimental[flag]);\n}\nfunction issueFlagNotices(config) {\n if (process.env.JEST_WORKER_ID !== undefined) {\n return;\n }\n if (experimentalFlagsEnabled(config).length > 0) {\n let changes = experimentalFlagsEnabled(config).map((s)=>_picocolors.default.yellow(s)).join(\", \");\n _log.default.warn(\"experimental-flags-enabled\", [\n `You have enabled experimental features: ${changes}`,\n \"Experimental features in Tailwind CSS are not covered by semver, may introduce breaking changes, and can change at any time.\"\n ]);\n }\n}\nconst _default = featureFlags;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"normalizeConfig\", {\n enumerable: true,\n get: function() {\n return normalizeConfig;\n }\n});\nconst _featureFlags = require(\"../featureFlags\");\nconst _log = /*#__PURE__*/ _interop_require_wildcard(require(\"./log\"));\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction normalizeConfig(config) {\n // Quick structure validation\n /**\n * type FilePath = string\n * type RawFile = { raw: string, extension?: string }\n * type ExtractorFn = (content: string) => Array<string>\n * type TransformerFn = (content: string) => string\n *\n * type Content =\n * | Array<FilePath | RawFile>\n * | {\n * files: Array<FilePath | RawFile>,\n * extract?: ExtractorFn | { [extension: string]: ExtractorFn }\n * transform?: TransformerFn | { [extension: string]: TransformerFn }\n * }\n */ let valid = (()=>{\n // `config.purge` should not exist anymore\n if (config.purge) {\n return false;\n }\n // `config.content` should exist\n if (!config.content) {\n return false;\n }\n // `config.content` should be an object or an array\n if (!Array.isArray(config.content) && !(typeof config.content === \"object\" && config.content !== null)) {\n return false;\n }\n // When `config.content` is an array, it should consist of FilePaths or RawFiles\n if (Array.isArray(config.content)) {\n return config.content.every((path)=>{\n // `path` can be a string\n if (typeof path === \"string\") return true;\n // `path` can be an object { raw: string, extension?: string }\n // `raw` must be a string\n if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== \"string\") return false;\n // `extension` (if provided) should also be a string\n if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== \"string\") {\n return false;\n }\n return true;\n });\n }\n // When `config.content` is an object\n if (typeof config.content === \"object\" && config.content !== null) {\n // Only `files`, `relative`, `extract`, and `transform` can exist in `config.content`\n if (Object.keys(config.content).some((key)=>![\n \"files\",\n \"relative\",\n \"extract\",\n \"transform\"\n ].includes(key))) {\n return false;\n }\n // `config.content.files` should exist of FilePaths or RawFiles\n if (Array.isArray(config.content.files)) {\n if (!config.content.files.every((path)=>{\n // `path` can be a string\n if (typeof path === \"string\") return true;\n // `path` can be an object { raw: string, extension?: string }\n // `raw` must be a string\n if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== \"string\") return false;\n // `extension` (if provided) should also be a string\n if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== \"string\") {\n return false;\n }\n return true;\n })) {\n return false;\n }\n // `config.content.extract` is optional, and can be a Function or a Record<String, Function>\n if (typeof config.content.extract === \"object\") {\n for (let value of Object.values(config.content.extract)){\n if (typeof value !== \"function\") {\n return false;\n }\n }\n } else if (!(config.content.extract === undefined || typeof config.content.extract === \"function\")) {\n return false;\n }\n // `config.content.transform` is optional, and can be a Function or a Record<String, Function>\n if (typeof config.content.transform === \"object\") {\n for (let value of Object.values(config.content.transform)){\n if (typeof value !== \"function\") {\n return false;\n }\n }\n } else if (!(config.content.transform === undefined || typeof config.content.transform === \"function\")) {\n return false;\n }\n // `config.content.relative` is optional and can be a boolean\n if (typeof config.content.relative !== \"boolean\" && typeof config.content.relative !== \"undefined\") {\n return false;\n }\n }\n return true;\n }\n return false;\n })();\n if (!valid) {\n _log.default.warn(\"purge-deprecation\", [\n \"The `purge`/`content` options have changed in Tailwind CSS v3.0.\",\n \"Update your configuration file to eliminate this warning.\",\n \"https://tailwindcss.com/docs/upgrade-guide#configure-content-sources\"\n ]);\n }\n // Normalize the `safelist`\n config.safelist = (()=>{\n var _purge_options;\n let { content , purge , safelist } = config;\n if (Array.isArray(safelist)) return safelist;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.safelist)) return content.safelist;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.safelist)) return purge.safelist;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : (_purge_options = purge.options) === null || _purge_options === void 0 ? void 0 : _purge_options.safelist)) return purge.options.safelist;\n return [];\n })();\n // Normalize the `blocklist`\n config.blocklist = (()=>{\n let { blocklist } = config;\n if (Array.isArray(blocklist)) {\n if (blocklist.every((item)=>typeof item === \"string\")) {\n return blocklist;\n }\n _log.default.warn(\"blocklist-invalid\", [\n \"The `blocklist` option must be an array of strings.\",\n \"https://tailwindcss.com/docs/content-configuration#discarding-classes\"\n ]);\n }\n return [];\n })();\n // Normalize prefix option\n if (typeof config.prefix === \"function\") {\n _log.default.warn(\"prefix-function\", [\n \"As of Tailwind CSS v3.0, `prefix` cannot be a function.\",\n \"Update `prefix` in your configuration to be a string to eliminate this warning.\",\n \"https://tailwindcss.com/docs/upgrade-guide#prefix-cannot-be-a-function\"\n ]);\n config.prefix = \"\";\n } else {\n var _config_prefix;\n config.prefix = (_config_prefix = config.prefix) !== null && _config_prefix !== void 0 ? _config_prefix : \"\";\n }\n // Normalize the `content`\n config.content = {\n relative: (()=>{\n let { content } = config;\n if (content === null || content === void 0 ? void 0 : content.relative) {\n return content.relative;\n }\n return (0, _featureFlags.flagEnabled)(config, \"relativeContentPathsByDefault\");\n })(),\n files: (()=>{\n let { content , purge } = config;\n if (Array.isArray(purge)) return purge;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.content)) return purge.content;\n if (Array.isArray(content)) return content;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.content)) return content.content;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.files)) return content.files;\n return [];\n })(),\n extract: (()=>{\n let extract = (()=>{\n var _config_purge, _config_content, _config_purge1, _config_purge_extract, _config_content1, _config_content_extract, _config_purge2, _config_purge_options, _config_content2, _config_content_options;\n if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : _config_purge.extract) return config.purge.extract;\n if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : _config_content.extract) return config.content.extract;\n if ((_config_purge1 = config.purge) === null || _config_purge1 === void 0 ? void 0 : (_config_purge_extract = _config_purge1.extract) === null || _config_purge_extract === void 0 ? void 0 : _config_purge_extract.DEFAULT) return config.purge.extract.DEFAULT;\n if ((_config_content1 = config.content) === null || _config_content1 === void 0 ? void 0 : (_config_content_extract = _config_content1.extract) === null || _config_content_extract === void 0 ? void 0 : _config_content_extract.DEFAULT) return config.content.extract.DEFAULT;\n if ((_config_purge2 = config.purge) === null || _config_purge2 === void 0 ? void 0 : (_config_purge_options = _config_purge2.options) === null || _config_purge_options === void 0 ? void 0 : _config_purge_options.extractors) return config.purge.options.extractors;\n if ((_config_content2 = config.content) === null || _config_content2 === void 0 ? void 0 : (_config_content_options = _config_content2.options) === null || _config_content_options === void 0 ? void 0 : _config_content_options.extractors) return config.content.options.extractors;\n return {};\n })();\n let extractors = {};\n let defaultExtractor = (()=>{\n var _config_purge, _config_purge_options, _config_content, _config_content_options;\n if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : (_config_purge_options = _config_purge.options) === null || _config_purge_options === void 0 ? void 0 : _config_purge_options.defaultExtractor) {\n return config.purge.options.defaultExtractor;\n }\n if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : (_config_content_options = _config_content.options) === null || _config_content_options === void 0 ? void 0 : _config_content_options.defaultExtractor) {\n return config.content.options.defaultExtractor;\n }\n return undefined;\n })();\n if (defaultExtractor !== undefined) {\n extractors.DEFAULT = defaultExtractor;\n }\n // Functions\n if (typeof extract === \"function\") {\n extractors.DEFAULT = extract;\n } else if (Array.isArray(extract)) {\n for (let { extensions , extractor } of extract !== null && extract !== void 0 ? extract : []){\n for (let extension of extensions){\n extractors[extension] = extractor;\n }\n }\n } else if (typeof extract === \"object\" && extract !== null) {\n Object.assign(extractors, extract);\n }\n return extractors;\n })(),\n transform: (()=>{\n let transform = (()=>{\n var _config_purge, _config_content, _config_purge1, _config_purge_transform, _config_content1, _config_content_transform;\n if ((_config_purge = config.purge) === null || _config_purge === void 0 ? void 0 : _config_purge.transform) return config.purge.transform;\n if ((_config_content = config.content) === null || _config_content === void 0 ? void 0 : _config_content.transform) return config.content.transform;\n if ((_config_purge1 = config.purge) === null || _config_purge1 === void 0 ? void 0 : (_config_purge_transform = _config_purge1.transform) === null || _config_purge_transform === void 0 ? void 0 : _config_purge_transform.DEFAULT) return config.purge.transform.DEFAULT;\n if ((_config_content1 = config.content) === null || _config_content1 === void 0 ? void 0 : (_config_content_transform = _config_content1.transform) === null || _config_content_transform === void 0 ? void 0 : _config_content_transform.DEFAULT) return config.content.transform.DEFAULT;\n return {};\n })();\n let transformers = {};\n if (typeof transform === \"function\") {\n transformers.DEFAULT = transform;\n }\n if (typeof transform === \"object\" && transform !== null) {\n Object.assign(transformers, transform);\n }\n return transformers;\n })()\n };\n // Validate globs to prevent bogus globs.\n // E.g.: `./src/*.{html}` is invalid, the `{html}` should just be `html`\n for (let file of config.content.files){\n if (typeof file === \"string\" && /{([^,]*?)}/g.test(file)) {\n _log.default.warn(\"invalid-glob-braces\", [\n `The glob pattern ${(0, _log.dim)(file)} in your Tailwind CSS configuration is invalid.`,\n `Update it to ${(0, _log.dim)(file.replace(/{([^,]*?)}/g, \"$1\"))} to silence this warning.`\n ]);\n break;\n }\n }\n return config;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return isPlainObject;\n }\n});\nfunction isPlainObject(value) {\n if (Object.prototype.toString.call(value) !== \"[object Object]\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === null || prototype === Object.prototype;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"cloneDeep\", {\n enumerable: true,\n get: function() {\n return cloneDeep;\n }\n});\nfunction cloneDeep(value) {\n if (Array.isArray(value)) {\n return value.map((child)=>cloneDeep(child));\n }\n if (typeof value === \"object\" && value !== null) {\n return Object.fromEntries(Object.entries(value).map(([k, v])=>[\n k,\n cloneDeep(v)\n ]));\n }\n return value;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return escapeCommas;\n }\n});\nfunction escapeCommas(className) {\n return className.replace(/\\\\,/g, \"\\\\2c \");\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _default;\n }\n});\nconst _default = {\n aliceblue: [\n 240,\n 248,\n 255\n ],\n antiquewhite: [\n 250,\n 235,\n 215\n ],\n aqua: [\n 0,\n 255,\n 255\n ],\n aquamarine: [\n 127,\n 255,\n 212\n ],\n azure: [\n 240,\n 255,\n 255\n ],\n beige: [\n 245,\n 245,\n 220\n ],\n bisque: [\n 255,\n 228,\n 196\n ],\n black: [\n 0,\n 0,\n 0\n ],\n blanchedalmond: [\n 255,\n 235,\n 205\n ],\n blue: [\n 0,\n 0,\n 255\n ],\n blueviolet: [\n 138,\n 43,\n 226\n ],\n brown: [\n 165,\n 42,\n 42\n ],\n burlywood: [\n 222,\n 184,\n 135\n ],\n cadetblue: [\n 95,\n 158,\n 160\n ],\n chartreuse: [\n 127,\n 255,\n 0\n ],\n chocolate: [\n 210,\n 105,\n 30\n ],\n coral: [\n 255,\n 127,\n 80\n ],\n cornflowerblue: [\n 100,\n 149,\n 237\n ],\n cornsilk: [\n 255,\n 248,\n 220\n ],\n crimson: [\n 220,\n 20,\n 60\n ],\n cyan: [\n 0,\n 255,\n 255\n ],\n darkblue: [\n 0,\n 0,\n 139\n ],\n darkcyan: [\n 0,\n 139,\n 139\n ],\n darkgoldenrod: [\n 184,\n 134,\n 11\n ],\n darkgray: [\n 169,\n 169,\n 169\n ],\n darkgreen: [\n 0,\n 100,\n 0\n ],\n darkgrey: [\n 169,\n 169,\n 169\n ],\n darkkhaki: [\n 189,\n 183,\n 107\n ],\n darkmagenta: [\n 139,\n 0,\n 139\n ],\n darkolivegreen: [\n 85,\n 107,\n 47\n ],\n darkorange: [\n 255,\n 140,\n 0\n ],\n darkorchid: [\n 153,\n 50,\n 204\n ],\n darkred: [\n 139,\n 0,\n 0\n ],\n darksalmon: [\n 233,\n 150,\n 122\n ],\n darkseagreen: [\n 143,\n 188,\n 143\n ],\n darkslateblue: [\n 72,\n 61,\n 139\n ],\n darkslategray: [\n 47,\n 79,\n 79\n ],\n darkslategrey: [\n 47,\n 79,\n 79\n ],\n darkturquoise: [\n 0,\n 206,\n 209\n ],\n darkviolet: [\n 148,\n 0,\n 211\n ],\n deeppink: [\n 255,\n 20,\n 147\n ],\n deepskyblue: [\n 0,\n 191,\n 255\n ],\n dimgray: [\n 105,\n 105,\n 105\n ],\n dimgrey: [\n 105,\n 105,\n 105\n ],\n dodgerblue: [\n 30,\n 144,\n 255\n ],\n firebrick: [\n 178,\n 34,\n 34\n ],\n floralwhite: [\n 255,\n 250,\n 240\n ],\n forestgreen: [\n 34,\n 139,\n 34\n ],\n fuchsia: [\n 255,\n 0,\n 255\n ],\n gainsboro: [\n 220,\n 220,\n 220\n ],\n ghostwhite: [\n 248,\n 248,\n 255\n ],\n gold: [\n 255,\n 215,\n 0\n ],\n goldenrod: [\n 218,\n 165,\n 32\n ],\n gray: [\n 128,\n 128,\n 128\n ],\n green: [\n 0,\n 128,\n 0\n ],\n greenyellow: [\n 173,\n 255,\n 47\n ],\n grey: [\n 128,\n 128,\n 128\n ],\n honeydew: [\n 240,\n 255,\n 240\n ],\n hotpink: [\n 255,\n 105,\n 180\n ],\n indianred: [\n 205,\n 92,\n 92\n ],\n indigo: [\n 75,\n 0,\n 130\n ],\n ivory: [\n 255,\n 255,\n 240\n ],\n khaki: [\n 240,\n 230,\n 140\n ],\n lavender: [\n 230,\n 230,\n 250\n ],\n lavenderblush: [\n 255,\n 240,\n 245\n ],\n lawngreen: [\n 124,\n 252,\n 0\n ],\n lemonchiffon: [\n 255,\n 250,\n 205\n ],\n lightblue: [\n 173,\n 216,\n 230\n ],\n lightcoral: [\n 240,\n 128,\n 128\n ],\n lightcyan: [\n 224,\n 255,\n 255\n ],\n lightgoldenrodyellow: [\n 250,\n 250,\n 210\n ],\n lightgray: [\n 211,\n 211,\n 211\n ],\n lightgreen: [\n 144,\n 238,\n 144\n ],\n lightgrey: [\n 211,\n 211,\n 211\n ],\n lightpink: [\n 255,\n 182,\n 193\n ],\n lightsalmon: [\n 255,\n 160,\n 122\n ],\n lightseagreen: [\n 32,\n 178,\n 170\n ],\n lightskyblue: [\n 135,\n 206,\n 250\n ],\n lightslategray: [\n 119,\n 136,\n 153\n ],\n lightslategrey: [\n 119,\n 136,\n 153\n ],\n lightsteelblue: [\n 176,\n 196,\n 222\n ],\n lightyellow: [\n 255,\n 255,\n 224\n ],\n lime: [\n 0,\n 255,\n 0\n ],\n limegreen: [\n 50,\n 205,\n 50\n ],\n linen: [\n 250,\n 240,\n 230\n ],\n magenta: [\n 255,\n 0,\n 255\n ],\n maroon: [\n 128,\n 0,\n 0\n ],\n mediumaquamarine: [\n 102,\n 205,\n 170\n ],\n mediumblue: [\n 0,\n 0,\n 205\n ],\n mediumorchid: [\n 186,\n 85,\n 211\n ],\n mediumpurple: [\n 147,\n 112,\n 219\n ],\n mediumseagreen: [\n 60,\n 179,\n 113\n ],\n mediumslateblue: [\n 123,\n 104,\n 238\n ],\n mediumspringgreen: [\n 0,\n 250,\n 154\n ],\n mediumturquoise: [\n 72,\n 209,\n 204\n ],\n mediumvioletred: [\n 199,\n 21,\n 133\n ],\n midnightblue: [\n 25,\n 25,\n 112\n ],\n mintcream: [\n 245,\n 255,\n 250\n ],\n mistyrose: [\n 255,\n 228,\n 225\n ],\n moccasin: [\n 255,\n 228,\n 181\n ],\n navajowhite: [\n 255,\n 222,\n 173\n ],\n navy: [\n 0,\n 0,\n 128\n ],\n oldlace: [\n 253,\n 245,\n 230\n ],\n olive: [\n 128,\n 128,\n 0\n ],\n olivedrab: [\n 107,\n 142,\n 35\n ],\n orange: [\n 255,\n 165,\n 0\n ],\n orangered: [\n 255,\n 69,\n 0\n ],\n orchid: [\n 218,\n 112,\n 214\n ],\n palegoldenrod: [\n 238,\n 232,\n 170\n ],\n palegreen: [\n 152,\n 251,\n 152\n ],\n paleturquoise: [\n 175,\n 238,\n 238\n ],\n palevioletred: [\n 219,\n 112,\n 147\n ],\n papayawhip: [\n 255,\n 239,\n 213\n ],\n peachpuff: [\n 255,\n 218,\n 185\n ],\n peru: [\n 205,\n 133,\n 63\n ],\n pink: [\n 255,\n 192,\n 203\n ],\n plum: [\n 221,\n 160,\n 221\n ],\n powderblue: [\n 176,\n 224,\n 230\n ],\n purple: [\n 128,\n 0,\n 128\n ],\n rebeccapurple: [\n 102,\n 51,\n 153\n ],\n red: [\n 255,\n 0,\n 0\n ],\n rosybrown: [\n 188,\n 143,\n 143\n ],\n royalblue: [\n 65,\n 105,\n 225\n ],\n saddlebrown: [\n 139,\n 69,\n 19\n ],\n salmon: [\n 250,\n 128,\n 114\n ],\n sandybrown: [\n 244,\n 164,\n 96\n ],\n seagreen: [\n 46,\n 139,\n 87\n ],\n seashell: [\n 255,\n 245,\n 238\n ],\n sienna: [\n 160,\n 82,\n 45\n ],\n silver: [\n 192,\n 192,\n 192\n ],\n skyblue: [\n 135,\n 206,\n 235\n ],\n slateblue: [\n 106,\n 90,\n 205\n ],\n slategray: [\n 112,\n 128,\n 144\n ],\n slategrey: [\n 112,\n 128,\n 144\n ],\n snow: [\n 255,\n 250,\n 250\n ],\n springgreen: [\n 0,\n 255,\n 127\n ],\n steelblue: [\n 70,\n 130,\n 180\n ],\n tan: [\n 210,\n 180,\n 140\n ],\n teal: [\n 0,\n 128,\n 128\n ],\n thistle: [\n 216,\n 191,\n 216\n ],\n tomato: [\n 255,\n 99,\n 71\n ],\n turquoise: [\n 64,\n 224,\n 208\n ],\n violet: [\n 238,\n 130,\n 238\n ],\n wheat: [\n 245,\n 222,\n 179\n ],\n white: [\n 255,\n 255,\n 255\n ],\n whitesmoke: [\n 245,\n 245,\n 245\n ],\n yellow: [\n 255,\n 255,\n 0\n ],\n yellowgreen: [\n 154,\n 205,\n 50\n ]\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n parseColor: function() {\n return parseColor;\n },\n formatColor: function() {\n return formatColor;\n }\n});\nconst _colorNames = /*#__PURE__*/ _interop_require_default(require(\"./colorNames\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet HEX = /^#([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?$/i;\nlet SHORT_HEX = /^#([a-f\\d])([a-f\\d])([a-f\\d])([a-f\\d])?$/i;\nlet VALUE = /(?:\\d+|\\d*\\.\\d+)%?/;\nlet SEP = /(?:\\s*,\\s*|\\s+)/;\nlet ALPHA_SEP = /\\s*[,/]\\s*/;\nlet CUSTOM_PROPERTY = /var\\(--(?:[^ )]*?)\\)/;\nlet RGB = new RegExp(`^(rgba?)\\\\(\\\\s*(${VALUE.source}|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\\\s*\\\\)$`);\nlet HSL = new RegExp(`^(hsla?)\\\\(\\\\s*((?:${VALUE.source})(?:deg|rad|grad|turn)?|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\\\s*\\\\)$`);\nfunction parseColor(value, { loose =false } = {}) {\n var _match_, _match__toString;\n if (typeof value !== \"string\") {\n return null;\n }\n value = value.trim();\n if (value === \"transparent\") {\n return {\n mode: \"rgb\",\n color: [\n \"0\",\n \"0\",\n \"0\"\n ],\n alpha: \"0\"\n };\n }\n if (value in _colorNames.default) {\n return {\n mode: \"rgb\",\n color: _colorNames.default[value].map((v)=>v.toString())\n };\n }\n let hex = value.replace(SHORT_HEX, (_, r, g, b, a)=>[\n \"#\",\n r,\n r,\n g,\n g,\n b,\n b,\n a ? a + a : \"\"\n ].join(\"\")).match(HEX);\n if (hex !== null) {\n return {\n mode: \"rgb\",\n color: [\n parseInt(hex[1], 16),\n parseInt(hex[2], 16),\n parseInt(hex[3], 16)\n ].map((v)=>v.toString()),\n alpha: hex[4] ? (parseInt(hex[4], 16) / 255).toString() : undefined\n };\n }\n var _value_match;\n let match = (_value_match = value.match(RGB)) !== null && _value_match !== void 0 ? _value_match : value.match(HSL);\n if (match === null) {\n return null;\n }\n let color = [\n match[2],\n match[3],\n match[4]\n ].filter(Boolean).map((v)=>v.toString());\n // rgba(var(--my-color), 0.1)\n // hsla(var(--my-color), 0.1)\n if (color.length === 2 && color[0].startsWith(\"var(\")) {\n return {\n mode: match[1],\n color: [\n color[0]\n ],\n alpha: color[1]\n };\n }\n if (!loose && color.length !== 3) {\n return null;\n }\n if (color.length < 3 && !color.some((part)=>/^var\\(.*?\\)$/.test(part))) {\n return null;\n }\n return {\n mode: match[1],\n color,\n alpha: (_match_ = match[5]) === null || _match_ === void 0 ? void 0 : (_match__toString = _match_.toString) === null || _match__toString === void 0 ? void 0 : _match__toString.call(_match_)\n };\n}\nfunction formatColor({ mode , color , alpha }) {\n let hasAlpha = alpha !== undefined;\n if (mode === \"rgba\" || mode === \"hsla\") {\n return `${mode}(${color.join(\", \")}${hasAlpha ? `, ${alpha}` : \"\"})`;\n }\n return `${mode}(${color.join(\" \")}${hasAlpha ? ` / ${alpha}` : \"\"})`;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n withAlphaValue: function() {\n return withAlphaValue;\n },\n default: function() {\n return withAlphaVariable;\n }\n});\nconst _color = require(\"./color\");\nfunction withAlphaValue(color, alphaValue, defaultValue) {\n if (typeof color === \"function\") {\n return color({\n opacityValue: alphaValue\n });\n }\n let parsed = (0, _color.parseColor)(color, {\n loose: true\n });\n if (parsed === null) {\n return defaultValue;\n }\n return (0, _color.formatColor)({\n ...parsed,\n alpha: alphaValue\n });\n}\nfunction withAlphaVariable({ color , property , variable }) {\n let properties = [].concat(property);\n if (typeof color === \"function\") {\n return {\n [variable]: \"1\",\n ...Object.fromEntries(properties.map((p)=>{\n return [\n p,\n color({\n opacityVariable: variable,\n opacityValue: `var(${variable})`\n })\n ];\n }))\n };\n }\n const parsed = (0, _color.parseColor)(color);\n if (parsed === null) {\n return Object.fromEntries(properties.map((p)=>[\n p,\n color\n ]));\n }\n if (parsed.alpha !== undefined) {\n // Has an alpha value, return color as-is\n return Object.fromEntries(properties.map((p)=>[\n p,\n color\n ]));\n }\n return {\n [variable]: \"1\",\n ...Object.fromEntries(properties.map((p)=>{\n return [\n p,\n (0, _color.formatColor)({\n ...parsed,\n alpha: `var(${variable})`\n })\n ];\n }))\n };\n}\n","/**\n * This splits a string on a top-level character.\n *\n * Regex doesn't support recursion (at least not the JS-flavored version).\n * So we have to use a tiny state machine to keep track of paren placement.\n *\n * Expected behavior using commas:\n * var(--a, 0 0 1px rgb(0, 0, 0)), 0 0 1px rgb(0, 0, 0)\n * ─┬─ ┬ ┬ ┬\n * x x x ╰──────── Split because top-level\n * ╰──────────────┴──┴───────────── Ignored b/c inside >= 1 levels of parens\n *\n * @param {string} input\n * @param {string} separator\n */ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"splitAtTopLevelOnly\", {\n enumerable: true,\n get: function() {\n return splitAtTopLevelOnly;\n }\n});\nfunction splitAtTopLevelOnly(input, separator) {\n let stack = [];\n let parts = [];\n let lastPos = 0;\n let isEscaped = false;\n for(let idx = 0; idx < input.length; idx++){\n let char = input[idx];\n if (stack.length === 0 && char === separator[0] && !isEscaped) {\n if (separator.length === 1 || input.slice(idx, idx + separator.length) === separator) {\n parts.push(input.slice(lastPos, idx));\n lastPos = idx + separator.length;\n }\n }\n if (isEscaped) {\n isEscaped = false;\n } else if (char === \"\\\\\") {\n isEscaped = true;\n }\n if (char === \"(\" || char === \"[\" || char === \"{\") {\n stack.push(char);\n } else if (char === \")\" && stack[stack.length - 1] === \"(\" || char === \"]\" && stack[stack.length - 1] === \"[\" || char === \"}\" && stack[stack.length - 1] === \"{\") {\n stack.pop();\n }\n }\n parts.push(input.slice(lastPos));\n return parts;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n parseBoxShadowValue: function() {\n return parseBoxShadowValue;\n },\n formatBoxShadowValue: function() {\n return formatBoxShadowValue;\n }\n});\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nlet KEYWORDS = new Set([\n \"inset\",\n \"inherit\",\n \"initial\",\n \"revert\",\n \"unset\"\n]);\nlet SPACE = /\\ +(?![^(]*\\))/g // Similar to the one above, but with spaces instead.\n;\nlet LENGTH = /^-?(\\d+|\\.\\d+)(.*?)$/g;\nfunction parseBoxShadowValue(input) {\n let shadows = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(input, \",\");\n return shadows.map((shadow)=>{\n let value = shadow.trim();\n let result = {\n raw: value\n };\n let parts = value.split(SPACE);\n let seen = new Set();\n for (let part of parts){\n // Reset index, since the regex is stateful.\n LENGTH.lastIndex = 0;\n // Keyword\n if (!seen.has(\"KEYWORD\") && KEYWORDS.has(part)) {\n result.keyword = part;\n seen.add(\"KEYWORD\");\n } else if (LENGTH.test(part)) {\n if (!seen.has(\"X\")) {\n result.x = part;\n seen.add(\"X\");\n } else if (!seen.has(\"Y\")) {\n result.y = part;\n seen.add(\"Y\");\n } else if (!seen.has(\"BLUR\")) {\n result.blur = part;\n seen.add(\"BLUR\");\n } else if (!seen.has(\"SPREAD\")) {\n result.spread = part;\n seen.add(\"SPREAD\");\n }\n } else {\n if (!result.color) {\n result.color = part;\n } else {\n if (!result.unknown) result.unknown = [];\n result.unknown.push(part);\n }\n }\n }\n // Check if valid\n result.valid = result.x !== undefined && result.y !== undefined;\n return result;\n });\n}\nfunction formatBoxShadowValue(shadows) {\n return shadows.map((shadow)=>{\n if (!shadow.valid) {\n return shadow.raw;\n }\n return [\n shadow.keyword,\n shadow.x,\n shadow.y,\n shadow.blur,\n shadow.spread,\n shadow.color\n ].filter(Boolean).join(\" \");\n }).join(\", \");\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n normalize: function() {\n return normalize;\n },\n url: function() {\n return url;\n },\n number: function() {\n return number;\n },\n percentage: function() {\n return percentage;\n },\n length: function() {\n return length;\n },\n lineWidth: function() {\n return lineWidth;\n },\n shadow: function() {\n return shadow;\n },\n color: function() {\n return color;\n },\n image: function() {\n return image;\n },\n gradient: function() {\n return gradient;\n },\n position: function() {\n return position;\n },\n familyName: function() {\n return familyName;\n },\n genericName: function() {\n return genericName;\n },\n absoluteSize: function() {\n return absoluteSize;\n },\n relativeSize: function() {\n return relativeSize;\n }\n});\nconst _color = require(\"./color\");\nconst _parseBoxShadowValue = require(\"./parseBoxShadowValue\");\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nlet cssFunctions = [\n \"min\",\n \"max\",\n \"clamp\",\n \"calc\"\n];\n// Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Types\nfunction isCSSFunction(value) {\n return cssFunctions.some((fn)=>new RegExp(`^${fn}\\\\(.*\\\\)`).test(value));\n}\nconst placeholder = \"--tw-placeholder\";\nconst placeholderRe = new RegExp(placeholder, \"g\");\nfunction normalize(value, isRoot = true) {\n if (value.startsWith(\"--\")) {\n return `var(${value})`;\n }\n // Keep raw strings if it starts with `url(`\n if (value.includes(\"url(\")) {\n return value.split(/(url\\(.*?\\))/g).filter(Boolean).map((part)=>{\n if (/^url\\(.*?\\)$/.test(part)) {\n return part;\n }\n return normalize(part, false);\n }).join(\"\");\n }\n // Convert `_` to ` `, except for escaped underscores `\\_`\n value = value.replace(/([^\\\\])_+/g, (fullMatch, characterBefore)=>characterBefore + \" \".repeat(fullMatch.length - 1)).replace(/^_/g, \" \").replace(/\\\\_/g, \"_\");\n // Remove leftover whitespace\n if (isRoot) {\n value = value.trim();\n }\n value = normalizeMathOperatorSpacing(value);\n return value;\n}\n/**\n * Add spaces around operators inside math functions\n * like calc() that do not follow an operator or '('.\n *\n * @param {string} value\n * @returns {string}\n */ function normalizeMathOperatorSpacing(value) {\n return value.replace(/(calc|min|max|clamp)\\(.+\\)/g, (match)=>{\n let vars = [];\n return match.replace(/var\\((--.+?)[,)]/g, (match, g1)=>{\n vars.push(g1);\n return match.replace(g1, placeholder);\n }).replace(/(-?\\d*\\.?\\d(?!\\b-\\d.+[,)](?![^+\\-/*])\\D)(?:%|[a-z]+)?|\\))([+\\-/*])/g, \"$1 $2 \").replace(placeholderRe, ()=>vars.shift());\n });\n}\nfunction url(value) {\n return value.startsWith(\"url(\");\n}\nfunction number(value) {\n return !isNaN(Number(value)) || isCSSFunction(value);\n}\nfunction percentage(value) {\n return value.endsWith(\"%\") && number(value.slice(0, -1)) || isCSSFunction(value);\n}\n// Please refer to MDN when updating this list:\n// https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units\n// https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Container_Queries#container_query_length_units\nlet lengthUnits = [\n \"cm\",\n \"mm\",\n \"Q\",\n \"in\",\n \"pc\",\n \"pt\",\n \"px\",\n \"em\",\n \"ex\",\n \"ch\",\n \"rem\",\n \"lh\",\n \"rlh\",\n \"vw\",\n \"vh\",\n \"vmin\",\n \"vmax\",\n \"vb\",\n \"vi\",\n \"svw\",\n \"svh\",\n \"lvw\",\n \"lvh\",\n \"dvw\",\n \"dvh\",\n \"cqw\",\n \"cqh\",\n \"cqi\",\n \"cqb\",\n \"cqmin\",\n \"cqmax\"\n];\nlet lengthUnitsPattern = `(?:${lengthUnits.join(\"|\")})`;\nfunction length(value) {\n return value === \"0\" || new RegExp(`^[+-]?[0-9]*\\.?[0-9]+(?:[eE][+-]?[0-9]+)?${lengthUnitsPattern}$`).test(value) || isCSSFunction(value);\n}\nlet lineWidths = new Set([\n \"thin\",\n \"medium\",\n \"thick\"\n]);\nfunction lineWidth(value) {\n return lineWidths.has(value);\n}\nfunction shadow(value) {\n let parsedShadows = (0, _parseBoxShadowValue.parseBoxShadowValue)(normalize(value));\n for (let parsedShadow of parsedShadows){\n if (!parsedShadow.valid) {\n return false;\n }\n }\n return true;\n}\nfunction color(value) {\n let colors = 0;\n let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \"_\").every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if ((0, _color.parseColor)(part, {\n loose: true\n }) !== null) return colors++, true;\n return false;\n });\n if (!result) return false;\n return colors > 0;\n}\nfunction image(value) {\n let images = 0;\n let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \",\").every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if (url(part) || gradient(part) || [\n \"element(\",\n \"image(\",\n \"cross-fade(\",\n \"image-set(\"\n ].some((fn)=>part.startsWith(fn))) {\n images++;\n return true;\n }\n return false;\n });\n if (!result) return false;\n return images > 0;\n}\nlet gradientTypes = new Set([\n \"conic-gradient\",\n \"linear-gradient\",\n \"radial-gradient\",\n \"repeating-conic-gradient\",\n \"repeating-linear-gradient\",\n \"repeating-radial-gradient\"\n]);\nfunction gradient(value) {\n value = normalize(value);\n for (let type of gradientTypes){\n if (value.startsWith(`${type}(`)) {\n return true;\n }\n }\n return false;\n}\nlet validPositions = new Set([\n \"center\",\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n]);\nfunction position(value) {\n let positions = 0;\n let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \"_\").every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if (validPositions.has(part) || length(part) || percentage(part)) {\n positions++;\n return true;\n }\n return false;\n });\n if (!result) return false;\n return positions > 0;\n}\nfunction familyName(value) {\n let fonts = 0;\n let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \",\").every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n // If it contains spaces, then it should be quoted\n if (part.includes(\" \")) {\n if (!/(['\"])([^\"']+)\\1/g.test(part)) {\n return false;\n }\n }\n // If it starts with a number, it's invalid\n if (/^\\d/g.test(part)) {\n return false;\n }\n fonts++;\n return true;\n });\n if (!result) return false;\n return fonts > 0;\n}\nlet genericNames = new Set([\n \"serif\",\n \"sans-serif\",\n \"monospace\",\n \"cursive\",\n \"fantasy\",\n \"system-ui\",\n \"ui-serif\",\n \"ui-sans-serif\",\n \"ui-monospace\",\n \"ui-rounded\",\n \"math\",\n \"emoji\",\n \"fangsong\"\n]);\nfunction genericName(value) {\n return genericNames.has(value);\n}\nlet absoluteSizes = new Set([\n \"xx-small\",\n \"x-small\",\n \"small\",\n \"medium\",\n \"large\",\n \"x-large\",\n \"x-large\",\n \"xxx-large\"\n]);\nfunction absoluteSize(value) {\n return absoluteSizes.has(value);\n}\nlet relativeSizes = new Set([\n \"larger\",\n \"smaller\"\n]);\nfunction relativeSize(value) {\n return relativeSizes.has(value);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"backgroundSize\", {\n enumerable: true,\n get: function() {\n return backgroundSize;\n }\n});\nconst _dataTypes = require(\"./dataTypes\");\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nfunction backgroundSize(value) {\n let keywordValues = [\n \"cover\",\n \"contain\"\n ];\n // the <length-percentage> type will probably be a css function\n // so we have to use `splitAtTopLevelOnly`\n return (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \",\").every((part)=>{\n let sizes = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(part, \"_\").filter(Boolean);\n if (sizes.length === 1 && keywordValues.includes(sizes[0])) return true;\n if (sizes.length !== 1 && sizes.length !== 2) return false;\n return sizes.every((size)=>(0, _dataTypes.length)(size) || (0, _dataTypes.percentage)(size) || size === \"auto\");\n });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n updateAllClasses: function() {\n return updateAllClasses;\n },\n asValue: function() {\n return asValue;\n },\n parseColorFormat: function() {\n return parseColorFormat;\n },\n asColor: function() {\n return asColor;\n },\n asLookupValue: function() {\n return asLookupValue;\n },\n typeMap: function() {\n return typeMap;\n },\n coerceValue: function() {\n return coerceValue;\n },\n getMatchingTypes: function() {\n return getMatchingTypes;\n }\n});\nconst _escapeCommas = /*#__PURE__*/ _interop_require_default(require(\"./escapeCommas\"));\nconst _withAlphaVariable = require(\"./withAlphaVariable\");\nconst _dataTypes = require(\"./dataTypes\");\nconst _negateValue = /*#__PURE__*/ _interop_require_default(require(\"./negateValue\"));\nconst _validateFormalSyntax = require(\"./validateFormalSyntax\");\nconst _featureFlags = require(\"../featureFlags.js\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction updateAllClasses(selectors, updateClass) {\n selectors.walkClasses((sel)=>{\n sel.value = updateClass(sel.value);\n if (sel.raws && sel.raws.value) {\n sel.raws.value = (0, _escapeCommas.default)(sel.raws.value);\n }\n });\n}\nfunction resolveArbitraryValue(modifier, validate) {\n if (!isArbitraryValue(modifier)) {\n return undefined;\n }\n let value = modifier.slice(1, -1);\n if (!validate(value)) {\n return undefined;\n }\n return (0, _dataTypes.normalize)(value);\n}\nfunction asNegativeValue(modifier, lookup = {}, validate) {\n let positiveValue = lookup[modifier];\n if (positiveValue !== undefined) {\n return (0, _negateValue.default)(positiveValue);\n }\n if (isArbitraryValue(modifier)) {\n let resolved = resolveArbitraryValue(modifier, validate);\n if (resolved === undefined) {\n return undefined;\n }\n return (0, _negateValue.default)(resolved);\n }\n}\nfunction asValue(modifier, options = {}, { validate =()=>true } = {}) {\n var _options_values;\n let value = (_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier];\n if (value !== undefined) {\n return value;\n }\n if (options.supportsNegativeValues && modifier.startsWith(\"-\")) {\n return asNegativeValue(modifier.slice(1), options.values, validate);\n }\n return resolveArbitraryValue(modifier, validate);\n}\nfunction isArbitraryValue(input) {\n return input.startsWith(\"[\") && input.endsWith(\"]\");\n}\nfunction splitUtilityModifier(modifier) {\n let slashIdx = modifier.lastIndexOf(\"/\");\n if (slashIdx === -1 || slashIdx === modifier.length - 1) {\n return [\n modifier,\n undefined\n ];\n }\n let arbitrary = isArbitraryValue(modifier);\n // The modifier could be of the form `[foo]/[bar]`\n // We want to handle this case properly\n // without affecting `[foo/bar]`\n if (arbitrary && !modifier.includes(\"]/[\")) {\n return [\n modifier,\n undefined\n ];\n }\n return [\n modifier.slice(0, slashIdx),\n modifier.slice(slashIdx + 1)\n ];\n}\nfunction parseColorFormat(value) {\n if (typeof value === \"string\" && value.includes(\"<alpha-value>\")) {\n let oldValue = value;\n return ({ opacityValue =1 })=>oldValue.replace(\"<alpha-value>\", opacityValue);\n }\n return value;\n}\nfunction unwrapArbitraryModifier(modifier) {\n return (0, _dataTypes.normalize)(modifier.slice(1, -1));\n}\nfunction asColor(modifier, options = {}, { tailwindConfig ={} } = {}) {\n var _options_values;\n if (((_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier]) !== undefined) {\n var _options_values1;\n return parseColorFormat((_options_values1 = options.values) === null || _options_values1 === void 0 ? void 0 : _options_values1[modifier]);\n }\n // TODO: Hoist this up to getMatchingTypes or something\n // We do this here because we need the alpha value (if any)\n let [color, alpha] = splitUtilityModifier(modifier);\n if (alpha !== undefined) {\n var _options_values2, _tailwindConfig_theme, _tailwindConfig_theme_opacity;\n var _options_values_color;\n let normalizedColor = (_options_values_color = (_options_values2 = options.values) === null || _options_values2 === void 0 ? void 0 : _options_values2[color]) !== null && _options_values_color !== void 0 ? _options_values_color : isArbitraryValue(color) ? color.slice(1, -1) : undefined;\n if (normalizedColor === undefined) {\n return undefined;\n }\n normalizedColor = parseColorFormat(normalizedColor);\n if (isArbitraryValue(alpha)) {\n return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, unwrapArbitraryModifier(alpha));\n }\n if (((_tailwindConfig_theme = tailwindConfig.theme) === null || _tailwindConfig_theme === void 0 ? void 0 : (_tailwindConfig_theme_opacity = _tailwindConfig_theme.opacity) === null || _tailwindConfig_theme_opacity === void 0 ? void 0 : _tailwindConfig_theme_opacity[alpha]) === undefined) {\n return undefined;\n }\n return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, tailwindConfig.theme.opacity[alpha]);\n }\n return asValue(modifier, options, {\n validate: _dataTypes.color\n });\n}\nfunction asLookupValue(modifier, options = {}) {\n var _options_values;\n return (_options_values = options.values) === null || _options_values === void 0 ? void 0 : _options_values[modifier];\n}\nfunction guess(validate) {\n return (modifier, options)=>{\n return asValue(modifier, options, {\n validate\n });\n };\n}\nlet typeMap = {\n any: asValue,\n color: asColor,\n url: guess(_dataTypes.url),\n image: guess(_dataTypes.image),\n length: guess(_dataTypes.length),\n percentage: guess(_dataTypes.percentage),\n position: guess(_dataTypes.position),\n lookup: asLookupValue,\n \"generic-name\": guess(_dataTypes.genericName),\n \"family-name\": guess(_dataTypes.familyName),\n number: guess(_dataTypes.number),\n \"line-width\": guess(_dataTypes.lineWidth),\n \"absolute-size\": guess(_dataTypes.absoluteSize),\n \"relative-size\": guess(_dataTypes.relativeSize),\n shadow: guess(_dataTypes.shadow),\n size: guess(_validateFormalSyntax.backgroundSize)\n};\nlet supportedTypes = Object.keys(typeMap);\nfunction splitAtFirst(input, delim) {\n let idx = input.indexOf(delim);\n if (idx === -1) return [\n undefined,\n input\n ];\n return [\n input.slice(0, idx),\n input.slice(idx + 1)\n ];\n}\nfunction coerceValue(types, modifier, options, tailwindConfig) {\n if (options.values && modifier in options.values) {\n for (let { type } of types !== null && types !== void 0 ? types : []){\n let result = typeMap[type](modifier, options, {\n tailwindConfig\n });\n if (result === undefined) {\n continue;\n }\n return [\n result,\n type,\n null\n ];\n }\n }\n if (isArbitraryValue(modifier)) {\n let arbitraryValue = modifier.slice(1, -1);\n let [explicitType, value] = splitAtFirst(arbitraryValue, \":\");\n // It could be that this resolves to `url(https` which is not a valid\n // identifier. We currently only support \"simple\" words with dashes or\n // underscores. E.g.: family-name\n if (!/^[\\w-_]+$/g.test(explicitType)) {\n value = arbitraryValue;\n } else if (explicitType !== undefined && !supportedTypes.includes(explicitType)) {\n return [];\n }\n if (value.length > 0 && supportedTypes.includes(explicitType)) {\n return [\n asValue(`[${value}]`, options),\n explicitType,\n null\n ];\n }\n }\n let matches = getMatchingTypes(types, modifier, options, tailwindConfig);\n // Find first matching type\n for (let match of matches){\n return match;\n }\n return [];\n}\nfunction* getMatchingTypes(types, rawModifier, options, tailwindConfig) {\n let modifiersEnabled = (0, _featureFlags.flagEnabled)(tailwindConfig, \"generalizedModifiers\");\n let [modifier, utilityModifier] = splitUtilityModifier(rawModifier);\n let canUseUtilityModifier = modifiersEnabled && options.modifiers != null && (options.modifiers === \"any\" || typeof options.modifiers === \"object\" && (utilityModifier && isArbitraryValue(utilityModifier) || utilityModifier in options.modifiers));\n if (!canUseUtilityModifier) {\n modifier = rawModifier;\n utilityModifier = undefined;\n }\n if (utilityModifier !== undefined && modifier === \"\") {\n modifier = \"DEFAULT\";\n }\n // Check the full value first\n // TODO: Move to asValue… somehow\n if (utilityModifier !== undefined) {\n if (typeof options.modifiers === \"object\") {\n var _options_modifiers;\n var _options_modifiers_utilityModifier;\n let configValue = (_options_modifiers_utilityModifier = (_options_modifiers = options.modifiers) === null || _options_modifiers === void 0 ? void 0 : _options_modifiers[utilityModifier]) !== null && _options_modifiers_utilityModifier !== void 0 ? _options_modifiers_utilityModifier : null;\n if (configValue !== null) {\n utilityModifier = configValue;\n } else if (isArbitraryValue(utilityModifier)) {\n utilityModifier = unwrapArbitraryModifier(utilityModifier);\n }\n }\n }\n for (let { type } of types !== null && types !== void 0 ? types : []){\n let result = typeMap[type](modifier, options, {\n tailwindConfig\n });\n if (result === undefined) {\n continue;\n }\n yield [\n result,\n type,\n utilityModifier !== null && utilityModifier !== void 0 ? utilityModifier : null\n ];\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return toColorValue;\n }\n});\nfunction toColorValue(maybeFunction) {\n return typeof maybeFunction === \"function\" ? maybeFunction({}) : maybeFunction;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return resolveConfig;\n }\n});\nconst _negateValue = /*#__PURE__*/ _interop_require_default(require(\"./negateValue\"));\nconst _corePluginList = /*#__PURE__*/ _interop_require_default(require(\"../corePluginList\"));\nconst _configurePlugins = /*#__PURE__*/ _interop_require_default(require(\"./configurePlugins\"));\nconst _colors = /*#__PURE__*/ _interop_require_default(require(\"../public/colors\"));\nconst _defaults = require(\"./defaults\");\nconst _toPath = require(\"./toPath\");\nconst _normalizeConfig = require(\"./normalizeConfig\");\nconst _isPlainObject = /*#__PURE__*/ _interop_require_default(require(\"./isPlainObject\"));\nconst _cloneDeep = require(\"./cloneDeep\");\nconst _pluginUtils = require(\"./pluginUtils\");\nconst _withAlphaVariable = require(\"./withAlphaVariable\");\nconst _toColorValue = /*#__PURE__*/ _interop_require_default(require(\"./toColorValue\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction isFunction(input) {\n return typeof input === \"function\";\n}\nfunction mergeWith(target, ...sources) {\n let customizer = sources.pop();\n for (let source of sources){\n for(let k in source){\n let merged = customizer(target[k], source[k]);\n if (merged === undefined) {\n if ((0, _isPlainObject.default)(target[k]) && (0, _isPlainObject.default)(source[k])) {\n target[k] = mergeWith({}, target[k], source[k], customizer);\n } else {\n target[k] = source[k];\n }\n } else {\n target[k] = merged;\n }\n }\n }\n return target;\n}\nconst configUtils = {\n colors: _colors.default,\n negative (scale) {\n // TODO: Log that this function isn't really needed anymore?\n return Object.keys(scale).filter((key)=>scale[key] !== \"0\").reduce((negativeScale, key)=>{\n let negativeValue = (0, _negateValue.default)(scale[key]);\n if (negativeValue !== undefined) {\n negativeScale[`-${key}`] = negativeValue;\n }\n return negativeScale;\n }, {});\n },\n breakpoints (screens) {\n return Object.keys(screens).filter((key)=>typeof screens[key] === \"string\").reduce((breakpoints, key)=>({\n ...breakpoints,\n [`screen-${key}`]: screens[key]\n }), {});\n }\n};\nfunction value(valueToResolve, ...args) {\n return isFunction(valueToResolve) ? valueToResolve(...args) : valueToResolve;\n}\nfunction collectExtends(items) {\n return items.reduce((merged, { extend })=>{\n return mergeWith(merged, extend, (mergedValue, extendValue)=>{\n if (mergedValue === undefined) {\n return [\n extendValue\n ];\n }\n if (Array.isArray(mergedValue)) {\n return [\n extendValue,\n ...mergedValue\n ];\n }\n return [\n extendValue,\n mergedValue\n ];\n });\n }, {});\n}\nfunction mergeThemes(themes) {\n return {\n ...themes.reduce((merged, theme)=>(0, _defaults.defaults)(merged, theme), {}),\n // In order to resolve n config objects, we combine all of their `extend` properties\n // into arrays instead of objects so they aren't overridden.\n extend: collectExtends(themes)\n };\n}\nfunction mergeExtensionCustomizer(merged, value) {\n // When we have an array of objects, we do want to merge it\n if (Array.isArray(merged) && (0, _isPlainObject.default)(merged[0])) {\n return merged.concat(value);\n }\n // When the incoming value is an array, and the existing config is an object, prepend the existing object\n if (Array.isArray(value) && (0, _isPlainObject.default)(value[0]) && (0, _isPlainObject.default)(merged)) {\n return [\n merged,\n ...value\n ];\n }\n // Override arrays (for example for font-families, box-shadows, ...)\n if (Array.isArray(value)) {\n return value;\n }\n // Execute default behaviour\n return undefined;\n}\nfunction mergeExtensions({ extend , ...theme }) {\n return mergeWith(theme, extend, (themeValue, extensions)=>{\n // The `extend` property is an array, so we need to check if it contains any functions\n if (!isFunction(themeValue) && !extensions.some(isFunction)) {\n return mergeWith({}, themeValue, ...extensions, mergeExtensionCustomizer);\n }\n return (resolveThemePath, utils)=>mergeWith({}, ...[\n themeValue,\n ...extensions\n ].map((e)=>value(e, resolveThemePath, utils)), mergeExtensionCustomizer);\n });\n}\n/**\n *\n * @param {string} key\n * @return {Iterable<string[] & {alpha: string | undefined}>}\n */ function* toPaths(key) {\n let path = (0, _toPath.toPath)(key);\n if (path.length === 0) {\n return;\n }\n yield path;\n if (Array.isArray(key)) {\n return;\n }\n let pattern = /^(.*?)\\s*\\/\\s*([^/]+)$/;\n let matches = key.match(pattern);\n if (matches !== null) {\n let [, prefix, alpha] = matches;\n let newPath = (0, _toPath.toPath)(prefix);\n newPath.alpha = alpha;\n yield newPath;\n }\n}\nfunction resolveFunctionKeys(object) {\n // theme('colors.red.500 / 0.5') -> ['colors', 'red', '500 / 0', '5]\n const resolvePath = (key, defaultValue)=>{\n for (const path of toPaths(key)){\n let index = 0;\n let val = object;\n while(val !== undefined && val !== null && index < path.length){\n val = val[path[index++]];\n let shouldResolveAsFn = isFunction(val) && (path.alpha === undefined || index <= path.length - 1);\n val = shouldResolveAsFn ? val(resolvePath, configUtils) : val;\n }\n if (val !== undefined) {\n if (path.alpha !== undefined) {\n let normalized = (0, _pluginUtils.parseColorFormat)(val);\n return (0, _withAlphaVariable.withAlphaValue)(normalized, path.alpha, (0, _toColorValue.default)(normalized));\n }\n if ((0, _isPlainObject.default)(val)) {\n return (0, _cloneDeep.cloneDeep)(val);\n }\n return val;\n }\n }\n return defaultValue;\n };\n Object.assign(resolvePath, {\n theme: resolvePath,\n ...configUtils\n });\n return Object.keys(object).reduce((resolved, key)=>{\n resolved[key] = isFunction(object[key]) ? object[key](resolvePath, configUtils) : object[key];\n return resolved;\n }, {});\n}\nfunction extractPluginConfigs(configs) {\n let allConfigs = [];\n configs.forEach((config)=>{\n allConfigs = [\n ...allConfigs,\n config\n ];\n var _config_plugins;\n const plugins = (_config_plugins = config === null || config === void 0 ? void 0 : config.plugins) !== null && _config_plugins !== void 0 ? _config_plugins : [];\n if (plugins.length === 0) {\n return;\n }\n plugins.forEach((plugin)=>{\n if (plugin.__isOptionsFunction) {\n plugin = plugin();\n }\n var _plugin_config;\n allConfigs = [\n ...allConfigs,\n ...extractPluginConfigs([\n (_plugin_config = plugin === null || plugin === void 0 ? void 0 : plugin.config) !== null && _plugin_config !== void 0 ? _plugin_config : {}\n ])\n ];\n });\n });\n return allConfigs;\n}\nfunction resolveCorePlugins(corePluginConfigs) {\n const result = [\n ...corePluginConfigs\n ].reduceRight((resolved, corePluginConfig)=>{\n if (isFunction(corePluginConfig)) {\n return corePluginConfig({\n corePlugins: resolved\n });\n }\n return (0, _configurePlugins.default)(corePluginConfig, resolved);\n }, _corePluginList.default);\n return result;\n}\nfunction resolvePluginLists(pluginLists) {\n const result = [\n ...pluginLists\n ].reduceRight((resolved, pluginList)=>{\n return [\n ...resolved,\n ...pluginList\n ];\n }, []);\n return result;\n}\nfunction resolveConfig(configs) {\n let allConfigs = [\n ...extractPluginConfigs(configs),\n {\n prefix: \"\",\n important: false,\n separator: \":\"\n }\n ];\n var _t_theme, _c_plugins;\n return (0, _normalizeConfig.normalizeConfig)((0, _defaults.defaults)({\n theme: resolveFunctionKeys(mergeExtensions(mergeThemes(allConfigs.map((t)=>{\n return (_t_theme = t === null || t === void 0 ? void 0 : t.theme) !== null && _t_theme !== void 0 ? _t_theme : {};\n })))),\n corePlugins: resolveCorePlugins(allConfigs.map((c)=>c.corePlugins)),\n plugins: resolvePluginLists(configs.map((c)=>{\n return (_c_plugins = c === null || c === void 0 ? void 0 : c.plugins) !== null && _c_plugins !== void 0 ? _c_plugins : [];\n }))\n }, ...allConfigs));\n}\n","module.exports = {\n content: [],\n presets: [],\n darkMode: 'media', // or 'class'\n theme: {\n accentColor: ({ theme }) => ({\n ...theme('colors'),\n auto: 'auto',\n }),\n animation: {\n none: 'none',\n spin: 'spin 1s linear infinite',\n ping: 'ping 1s cubic-bezier(0, 0, 0.2, 1) infinite',\n pulse: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',\n bounce: 'bounce 1s infinite',\n },\n aria: {\n busy: 'busy=\"true\"',\n checked: 'checked=\"true\"',\n disabled: 'disabled=\"true\"',\n expanded: 'expanded=\"true\"',\n hidden: 'hidden=\"true\"',\n pressed: 'pressed=\"true\"',\n readonly: 'readonly=\"true\"',\n required: 'required=\"true\"',\n selected: 'selected=\"true\"',\n },\n aspectRatio: {\n auto: 'auto',\n square: '1 / 1',\n video: '16 / 9',\n },\n backdropBlur: ({ theme }) => theme('blur'),\n backdropBrightness: ({ theme }) => theme('brightness'),\n backdropContrast: ({ theme }) => theme('contrast'),\n backdropGrayscale: ({ theme }) => theme('grayscale'),\n backdropHueRotate: ({ theme }) => theme('hueRotate'),\n backdropInvert: ({ theme }) => theme('invert'),\n backdropOpacity: ({ theme }) => theme('opacity'),\n backdropSaturate: ({ theme }) => theme('saturate'),\n backdropSepia: ({ theme }) => theme('sepia'),\n backgroundColor: ({ theme }) => theme('colors'),\n backgroundImage: {\n none: 'none',\n 'gradient-to-t': 'linear-gradient(to top, var(--tw-gradient-stops))',\n 'gradient-to-tr': 'linear-gradient(to top right, var(--tw-gradient-stops))',\n 'gradient-to-r': 'linear-gradient(to right, var(--tw-gradient-stops))',\n 'gradient-to-br': 'linear-gradient(to bottom right, var(--tw-gradient-stops))',\n 'gradient-to-b': 'linear-gradient(to bottom, var(--tw-gradient-stops))',\n 'gradient-to-bl': 'linear-gradient(to bottom left, var(--tw-gradient-stops))',\n 'gradient-to-l': 'linear-gradient(to left, var(--tw-gradient-stops))',\n 'gradient-to-tl': 'linear-gradient(to top left, var(--tw-gradient-stops))',\n },\n backgroundOpacity: ({ theme }) => theme('opacity'),\n backgroundPosition: {\n bottom: 'bottom',\n center: 'center',\n left: 'left',\n 'left-bottom': 'left bottom',\n 'left-top': 'left top',\n right: 'right',\n 'right-bottom': 'right bottom',\n 'right-top': 'right top',\n top: 'top',\n },\n backgroundSize: {\n auto: 'auto',\n cover: 'cover',\n contain: 'contain',\n },\n blur: {\n 0: '0',\n none: '0',\n sm: '4px',\n DEFAULT: '8px',\n md: '12px',\n lg: '16px',\n xl: '24px',\n '2xl': '40px',\n '3xl': '64px',\n },\n borderColor: ({ theme }) => ({\n ...theme('colors'),\n DEFAULT: theme('colors.gray.200', 'currentColor'),\n }),\n borderOpacity: ({ theme }) => theme('opacity'),\n borderRadius: {\n none: '0px',\n sm: '0.125rem',\n DEFAULT: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n '3xl': '1.5rem',\n full: '9999px',\n },\n borderSpacing: ({ theme }) => ({\n ...theme('spacing'),\n }),\n borderWidth: {\n DEFAULT: '1px',\n 0: '0px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n boxShadow: {\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n DEFAULT: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\n none: 'none',\n },\n boxShadowColor: ({ theme }) => theme('colors'),\n brightness: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 90: '.9',\n 95: '.95',\n 100: '1',\n 105: '1.05',\n 110: '1.1',\n 125: '1.25',\n 150: '1.5',\n 200: '2',\n },\n caretColor: ({ theme }) => theme('colors'),\n colors: ({ colors }) => ({\n inherit: colors.inherit,\n current: colors.current,\n transparent: colors.transparent,\n black: colors.black,\n white: colors.white,\n slate: colors.slate,\n gray: colors.gray,\n zinc: colors.zinc,\n neutral: colors.neutral,\n stone: colors.stone,\n red: colors.red,\n orange: colors.orange,\n amber: colors.amber,\n yellow: colors.yellow,\n lime: colors.lime,\n green: colors.green,\n emerald: colors.emerald,\n teal: colors.teal,\n cyan: colors.cyan,\n sky: colors.sky,\n blue: colors.blue,\n indigo: colors.indigo,\n violet: colors.violet,\n purple: colors.purple,\n fuchsia: colors.fuchsia,\n pink: colors.pink,\n rose: colors.rose,\n }),\n columns: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n '3xs': '16rem',\n '2xs': '18rem',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n },\n container: {},\n content: {\n none: 'none',\n },\n contrast: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 100: '1',\n 125: '1.25',\n 150: '1.5',\n 200: '2',\n },\n cursor: {\n auto: 'auto',\n default: 'default',\n pointer: 'pointer',\n wait: 'wait',\n text: 'text',\n move: 'move',\n help: 'help',\n 'not-allowed': 'not-allowed',\n none: 'none',\n 'context-menu': 'context-menu',\n progress: 'progress',\n cell: 'cell',\n crosshair: 'crosshair',\n 'vertical-text': 'vertical-text',\n alias: 'alias',\n copy: 'copy',\n 'no-drop': 'no-drop',\n grab: 'grab',\n grabbing: 'grabbing',\n 'all-scroll': 'all-scroll',\n 'col-resize': 'col-resize',\n 'row-resize': 'row-resize',\n 'n-resize': 'n-resize',\n 'e-resize': 'e-resize',\n 's-resize': 's-resize',\n 'w-resize': 'w-resize',\n 'ne-resize': 'ne-resize',\n 'nw-resize': 'nw-resize',\n 'se-resize': 'se-resize',\n 'sw-resize': 'sw-resize',\n 'ew-resize': 'ew-resize',\n 'ns-resize': 'ns-resize',\n 'nesw-resize': 'nesw-resize',\n 'nwse-resize': 'nwse-resize',\n 'zoom-in': 'zoom-in',\n 'zoom-out': 'zoom-out',\n },\n divideColor: ({ theme }) => theme('borderColor'),\n divideOpacity: ({ theme }) => theme('borderOpacity'),\n divideWidth: ({ theme }) => theme('borderWidth'),\n dropShadow: {\n sm: '0 1px 1px rgb(0 0 0 / 0.05)',\n DEFAULT: ['0 1px 2px rgb(0 0 0 / 0.1)', '0 1px 1px rgb(0 0 0 / 0.06)'],\n md: ['0 4px 3px rgb(0 0 0 / 0.07)', '0 2px 2px rgb(0 0 0 / 0.06)'],\n lg: ['0 10px 8px rgb(0 0 0 / 0.04)', '0 4px 3px rgb(0 0 0 / 0.1)'],\n xl: ['0 20px 13px rgb(0 0 0 / 0.03)', '0 8px 5px rgb(0 0 0 / 0.08)'],\n '2xl': '0 25px 25px rgb(0 0 0 / 0.15)',\n none: '0 0 #0000',\n },\n fill: ({ theme }) => ({\n none: 'none',\n ...theme('colors'),\n }),\n flex: {\n 1: '1 1 0%',\n auto: '1 1 auto',\n initial: '0 1 auto',\n none: 'none',\n },\n flexBasis: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n }),\n flexGrow: {\n 0: '0',\n DEFAULT: '1',\n },\n flexShrink: {\n 0: '0',\n DEFAULT: '1',\n },\n fontFamily: {\n sans: [\n 'ui-sans-serif',\n 'system-ui',\n '-apple-system',\n 'BlinkMacSystemFont',\n '\"Segoe UI\"',\n 'Roboto',\n '\"Helvetica Neue\"',\n 'Arial',\n '\"Noto Sans\"',\n 'sans-serif',\n '\"Apple Color Emoji\"',\n '\"Segoe UI Emoji\"',\n '\"Segoe UI Symbol\"',\n '\"Noto Color Emoji\"',\n ],\n serif: ['ui-serif', 'Georgia', 'Cambria', '\"Times New Roman\"', 'Times', 'serif'],\n mono: [\n 'ui-monospace',\n 'SFMono-Regular',\n 'Menlo',\n 'Monaco',\n 'Consolas',\n '\"Liberation Mono\"',\n '\"Courier New\"',\n 'monospace',\n ],\n },\n fontSize: {\n xs: ['0.75rem', { lineHeight: '1rem' }],\n sm: ['0.875rem', { lineHeight: '1.25rem' }],\n base: ['1rem', { lineHeight: '1.5rem' }],\n lg: ['1.125rem', { lineHeight: '1.75rem' }],\n xl: ['1.25rem', { lineHeight: '1.75rem' }],\n '2xl': ['1.5rem', { lineHeight: '2rem' }],\n '3xl': ['1.875rem', { lineHeight: '2.25rem' }],\n '4xl': ['2.25rem', { lineHeight: '2.5rem' }],\n '5xl': ['3rem', { lineHeight: '1' }],\n '6xl': ['3.75rem', { lineHeight: '1' }],\n '7xl': ['4.5rem', { lineHeight: '1' }],\n '8xl': ['6rem', { lineHeight: '1' }],\n '9xl': ['8rem', { lineHeight: '1' }],\n },\n fontWeight: {\n thin: '100',\n extralight: '200',\n light: '300',\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n },\n gap: ({ theme }) => theme('spacing'),\n gradientColorStops: ({ theme }) => theme('colors'),\n gradientColorStopPositions: {\n '0%': '0%',\n '5%': '5%',\n '10%': '10%',\n '15%': '15%',\n '20%': '20%',\n '25%': '25%',\n '30%': '30%',\n '35%': '35%',\n '40%': '40%',\n '45%': '45%',\n '50%': '50%',\n '55%': '55%',\n '60%': '60%',\n '65%': '65%',\n '70%': '70%',\n '75%': '75%',\n '80%': '80%',\n '85%': '85%',\n '90%': '90%',\n '95%': '95%',\n '100%': '100%',\n },\n grayscale: {\n 0: '0',\n DEFAULT: '100%',\n },\n gridAutoColumns: {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n },\n gridAutoRows: {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n },\n gridColumn: {\n auto: 'auto',\n 'span-1': 'span 1 / span 1',\n 'span-2': 'span 2 / span 2',\n 'span-3': 'span 3 / span 3',\n 'span-4': 'span 4 / span 4',\n 'span-5': 'span 5 / span 5',\n 'span-6': 'span 6 / span 6',\n 'span-7': 'span 7 / span 7',\n 'span-8': 'span 8 / span 8',\n 'span-9': 'span 9 / span 9',\n 'span-10': 'span 10 / span 10',\n 'span-11': 'span 11 / span 11',\n 'span-12': 'span 12 / span 12',\n 'span-full': '1 / -1',\n },\n gridColumnEnd: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridColumnStart: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridRow: {\n auto: 'auto',\n 'span-1': 'span 1 / span 1',\n 'span-2': 'span 2 / span 2',\n 'span-3': 'span 3 / span 3',\n 'span-4': 'span 4 / span 4',\n 'span-5': 'span 5 / span 5',\n 'span-6': 'span 6 / span 6',\n 'span-full': '1 / -1',\n },\n gridRowEnd: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n },\n gridRowStart: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n },\n gridTemplateColumns: {\n none: 'none',\n 1: 'repeat(1, minmax(0, 1fr))',\n 2: 'repeat(2, minmax(0, 1fr))',\n 3: 'repeat(3, minmax(0, 1fr))',\n 4: 'repeat(4, minmax(0, 1fr))',\n 5: 'repeat(5, minmax(0, 1fr))',\n 6: 'repeat(6, minmax(0, 1fr))',\n 7: 'repeat(7, minmax(0, 1fr))',\n 8: 'repeat(8, minmax(0, 1fr))',\n 9: 'repeat(9, minmax(0, 1fr))',\n 10: 'repeat(10, minmax(0, 1fr))',\n 11: 'repeat(11, minmax(0, 1fr))',\n 12: 'repeat(12, minmax(0, 1fr))',\n },\n gridTemplateRows: {\n none: 'none',\n 1: 'repeat(1, minmax(0, 1fr))',\n 2: 'repeat(2, minmax(0, 1fr))',\n 3: 'repeat(3, minmax(0, 1fr))',\n 4: 'repeat(4, minmax(0, 1fr))',\n 5: 'repeat(5, minmax(0, 1fr))',\n 6: 'repeat(6, minmax(0, 1fr))',\n },\n height: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n full: '100%',\n screen: '100vh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n hueRotate: {\n 0: '0deg',\n 15: '15deg',\n 30: '30deg',\n 60: '60deg',\n 90: '90deg',\n 180: '180deg',\n },\n inset: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n full: '100%',\n }),\n invert: {\n 0: '0',\n DEFAULT: '100%',\n },\n keyframes: {\n spin: {\n to: {\n transform: 'rotate(360deg)',\n },\n },\n ping: {\n '75%, 100%': {\n transform: 'scale(2)',\n opacity: '0',\n },\n },\n pulse: {\n '50%': {\n opacity: '.5',\n },\n },\n bounce: {\n '0%, 100%': {\n transform: 'translateY(-25%)',\n animationTimingFunction: 'cubic-bezier(0.8,0,1,1)',\n },\n '50%': {\n transform: 'none',\n animationTimingFunction: 'cubic-bezier(0,0,0.2,1)',\n },\n },\n },\n letterSpacing: {\n tighter: '-0.05em',\n tight: '-0.025em',\n normal: '0em',\n wide: '0.025em',\n wider: '0.05em',\n widest: '0.1em',\n },\n lineHeight: {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '2',\n 3: '.75rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n },\n listStyleType: {\n none: 'none',\n disc: 'disc',\n decimal: 'decimal',\n },\n listStyleImage: {\n none: 'none',\n },\n margin: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n }),\n lineClamp: {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n },\n maxHeight: ({ theme }) => ({\n ...theme('spacing'),\n none: 'none',\n full: '100%',\n screen: '100vh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n maxWidth: ({ theme, breakpoints }) => ({\n none: 'none',\n 0: '0rem',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n prose: '65ch',\n ...breakpoints(theme('screens')),\n }),\n minHeight: {\n 0: '0px',\n full: '100%',\n screen: '100vh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n },\n minWidth: {\n 0: '0px',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n },\n objectPosition: {\n bottom: 'bottom',\n center: 'center',\n left: 'left',\n 'left-bottom': 'left bottom',\n 'left-top': 'left top',\n right: 'right',\n 'right-bottom': 'right bottom',\n 'right-top': 'right top',\n top: 'top',\n },\n opacity: {\n 0: '0',\n 5: '0.05',\n 10: '0.1',\n 20: '0.2',\n 25: '0.25',\n 30: '0.3',\n 40: '0.4',\n 50: '0.5',\n 60: '0.6',\n 70: '0.7',\n 75: '0.75',\n 80: '0.8',\n 90: '0.9',\n 95: '0.95',\n 100: '1',\n },\n order: {\n first: '-9999',\n last: '9999',\n none: '0',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n outlineColor: ({ theme }) => theme('colors'),\n outlineOffset: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n outlineWidth: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n padding: ({ theme }) => theme('spacing'),\n placeholderColor: ({ theme }) => theme('colors'),\n placeholderOpacity: ({ theme }) => theme('opacity'),\n ringColor: ({ theme }) => ({\n DEFAULT: theme('colors.blue.500', '#3b82f6'),\n ...theme('colors'),\n }),\n ringOffsetColor: ({ theme }) => theme('colors'),\n ringOffsetWidth: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n ringOpacity: ({ theme }) => ({\n DEFAULT: '0.5',\n ...theme('opacity'),\n }),\n ringWidth: {\n DEFAULT: '3px',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n rotate: {\n 0: '0deg',\n 1: '1deg',\n 2: '2deg',\n 3: '3deg',\n 6: '6deg',\n 12: '12deg',\n 45: '45deg',\n 90: '90deg',\n 180: '180deg',\n },\n saturate: {\n 0: '0',\n 50: '.5',\n 100: '1',\n 150: '1.5',\n 200: '2',\n },\n scale: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 90: '.9',\n 95: '.95',\n 100: '1',\n 105: '1.05',\n 110: '1.1',\n 125: '1.25',\n 150: '1.5',\n },\n screens: {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n '2xl': '1536px',\n },\n scrollMargin: ({ theme }) => ({\n ...theme('spacing'),\n }),\n scrollPadding: ({ theme }) => theme('spacing'),\n sepia: {\n 0: '0',\n DEFAULT: '100%',\n },\n skew: {\n 0: '0deg',\n 1: '1deg',\n 2: '2deg',\n 3: '3deg',\n 6: '6deg',\n 12: '12deg',\n },\n space: ({ theme }) => ({\n ...theme('spacing'),\n }),\n spacing: {\n px: '1px',\n 0: '0px',\n 0.5: '0.125rem',\n 1: '0.25rem',\n 1.5: '0.375rem',\n 2: '0.5rem',\n 2.5: '0.625rem',\n 3: '0.75rem',\n 3.5: '0.875rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n 11: '2.75rem',\n 12: '3rem',\n 14: '3.5rem',\n 16: '4rem',\n 20: '5rem',\n 24: '6rem',\n 28: '7rem',\n 32: '8rem',\n 36: '9rem',\n 40: '10rem',\n 44: '11rem',\n 48: '12rem',\n 52: '13rem',\n 56: '14rem',\n 60: '15rem',\n 64: '16rem',\n 72: '18rem',\n 80: '20rem',\n 96: '24rem',\n },\n stroke: ({ theme }) => ({\n none: 'none',\n ...theme('colors'),\n }),\n strokeWidth: {\n 0: '0',\n 1: '1',\n 2: '2',\n },\n supports: {},\n data: {},\n textColor: ({ theme }) => theme('colors'),\n textDecorationColor: ({ theme }) => theme('colors'),\n textDecorationThickness: {\n auto: 'auto',\n 'from-font': 'from-font',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n textIndent: ({ theme }) => ({\n ...theme('spacing'),\n }),\n textOpacity: ({ theme }) => theme('opacity'),\n textUnderlineOffset: {\n auto: 'auto',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n transformOrigin: {\n center: 'center',\n top: 'top',\n 'top-right': 'top right',\n right: 'right',\n 'bottom-right': 'bottom right',\n bottom: 'bottom',\n 'bottom-left': 'bottom left',\n left: 'left',\n 'top-left': 'top left',\n },\n transitionDelay: {\n 0: '0s',\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n },\n transitionDuration: {\n DEFAULT: '150ms',\n 0: '0s',\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n },\n transitionProperty: {\n none: 'none',\n all: 'all',\n DEFAULT:\n 'color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter',\n colors: 'color, background-color, border-color, text-decoration-color, fill, stroke',\n opacity: 'opacity',\n shadow: 'box-shadow',\n transform: 'transform',\n },\n transitionTimingFunction: {\n DEFAULT: 'cubic-bezier(0.4, 0, 0.2, 1)',\n linear: 'linear',\n in: 'cubic-bezier(0.4, 0, 1, 1)',\n out: 'cubic-bezier(0, 0, 0.2, 1)',\n 'in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',\n },\n translate: ({ theme }) => ({\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n full: '100%',\n }),\n width: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n screen: '100vw',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n willChange: {\n auto: 'auto',\n scroll: 'scroll-position',\n contents: 'contents',\n transform: 'transform',\n },\n zIndex: {\n auto: 'auto',\n 0: '0',\n 10: '10',\n 20: '20',\n 30: '30',\n 40: '40',\n 50: '50',\n },\n },\n plugins: [],\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return getAllConfigs;\n }\n});\nconst _configfull = /*#__PURE__*/ _interop_require_default(require(\"../../stubs/config.full.js\"));\nconst _featureFlags = require(\"../featureFlags\");\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction getAllConfigs(config) {\n var _config_presets;\n const configs = ((_config_presets = config === null || config === void 0 ? void 0 : config.presets) !== null && _config_presets !== void 0 ? _config_presets : [\n _configfull.default\n ]).slice().reverse().flatMap((preset)=>getAllConfigs(preset instanceof Function ? preset() : preset));\n const features = {\n // Add experimental configs here...\n respectDefaultRingColorOpacity: {\n theme: {\n ringColor: ({ theme })=>({\n DEFAULT: \"#3b82f67f\",\n ...theme(\"colors\")\n })\n }\n },\n disableColorOpacityUtilitiesByDefault: {\n corePlugins: {\n backgroundOpacity: false,\n borderOpacity: false,\n divideOpacity: false,\n placeholderOpacity: false,\n ringOpacity: false,\n textOpacity: false\n }\n }\n };\n const experimentals = Object.keys(features).filter((feature)=>(0, _featureFlags.flagEnabled)(config, feature)).map((feature)=>features[feature]);\n return [\n config,\n ...experimentals,\n ...configs\n ];\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return resolveConfig;\n }\n});\nconst _resolveConfig = /*#__PURE__*/ _interop_require_default(require(\"../util/resolveConfig\"));\nconst _getAllConfigs = /*#__PURE__*/ _interop_require_default(require(\"../util/getAllConfigs\"));\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction resolveConfig(...configs) {\n let [, ...defaultConfigs] = (0, _getAllConfigs.default)(configs[0]);\n return (0, _resolveConfig.default)([\n ...configs,\n ...defaultConfigs\n ]);\n}\n","let resolveConfig = require('./lib/public/resolve-config')\nmodule.exports = (resolveConfig.__esModule ? resolveConfig : { default: resolveConfig }).default\n","let colors = require('./lib/public/colors')\nmodule.exports = (colors.__esModule ? colors : { default: colors }).default\n","import * as TailwindColors from \"tailwindcss/colors\"\n\nexport const BrandColors = {\n 50: \"#FCE3E4\",\n 100: \"#F9CDCE\",\n 200: \"#F39699\",\n 300: \"#ED6368\",\n 400: \"#E72C32\",\n 500: \"#C4161C\",\n 600: \"#9C1216\",\n 700: \"#770D11\",\n 800: \"#4E090B\",\n 900: \"#290506\",\n}\n\nconst customColors = {\n onprimary: TailwindColors.white,\n warning: TailwindColors.amber,\n error: TailwindColors.rose,\n info: TailwindColors.cyan,\n success: TailwindColors.lime,\n primary: TailwindColors.sky,\n brand: BrandColors,\n}\n\nexport const CustomColors = {\n ...customColors,\n // Warning\n warning: customColors.warning[\"500\"],\n \"warning-darken\": customColors.warning[\"600\"],\n \"warning-lighten\": customColors.warning[\"400\"],\n // Success\n success: customColors.success[\"500\"],\n \"success-darken\": customColors.success[\"600\"],\n \"success-lighten\": customColors.success[\"400\"],\n // Error\n error: customColors.error[\"500\"],\n \"error-darken\": customColors.error[\"600\"],\n \"error-lighten\": customColors.error[\"400\"],\n // Info\n info: customColors.info[\"500\"],\n \"info-darken\": customColors.info[\"600\"],\n \"info-lighten\": customColors.info[\"400\"],\n // Primary\n primary: customColors.primary[\"500\"],\n \"primary-darken\": customColors.primary[\"600\"],\n \"primary-lighten\": customColors.primary[\"400\"],\n // Surfaces\n onsurface: TailwindColors.slate[\"500\"],\n onbackground: TailwindColors.slate[\"700\"],\n surface: TailwindColors.slate[\"50\"],\n background: TailwindColors.white,\n}\n\nexport default {\n prefix: \"e-\",\n corePlugins: {\n preflight: false,\n },\n content: [\"./src/**/*.{html,js,vue,ts}\"],\n theme: {\n extend: {\n colors: CustomColors,\n maxWidth: {\n \"1/12\": \"8.333333333%\",\n \"2/12\": \"16.666666666%\",\n \"3/12\": \"25%\",\n \"4/12\": \"33.333333333%\",\n \"5/12\": \"41.666666667%\",\n \"6/12\": \"50%\",\n \"7/12\": \"58.333333334%\",\n \"8/12\": \"66.666666666%\",\n \"9/12\": \"75%\",\n \"10/12\": \"83.333333334%\",\n \"11/12\": \"91.666666666%\",\n \"12/12\": \"100%\",\n },\n },\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n base: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"1.875rem\",\n \"4xl\": \"2.25rem\",\n \"5xl\": \"3rem\",\n \"6xl\": \"3.75rem\",\n \"7xl\": \"4.5rem\",\n \"8xl\": \"6rem\",\n \"9xl\": \"8rem\",\n },\n },\n plugins: [],\n safelist: [\n {\n pattern: /e-w-(full|auto)/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-grow/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-basis-(\\d{1,2}\\/\\d{1,2}|full|auto|0)/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /^!?e-max-w-(\\d{1,2}\\/\\d{1,2})/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-offset-(1[0-2]|[1-9])/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern: /e-items-(start|center|end|baseline|stretch)/,\n },\n {\n pattern: /e-self-(start|center|end|baseline|stretch)/,\n },\n {\n pattern:\n /e-justify-(around|between|center|end|evenly|normal|start|stretch)/,\n variants: [\"lg\", \"md\", \"sm\", \"xs\", \"xl\"],\n },\n {\n pattern:\n /e-content-(around|baseline|between|center|end|evenly|normal|start|stretch)/,\n },\n ],\n}\n","import resolveConfig from \"tailwindcss/resolveConfig\"\nimport tailwindConfig from \"../config\"\nimport { Size, BaseColor } from \"@/types\"\n\nexport const fullConfig = resolveConfig(tailwindConfig) as any\n\nexport const TextSizes = fullConfig.theme.fontSize\n\nexport const Colors = fullConfig.theme.colors\n\nexport const BadgeSizes = [\n Size.dot,\n Size.xs,\n Size.sm,\n Size.md,\n Size.lg,\n Size.xl,\n] as const\n\nexport const AvatarSizes = [\n Size.xs,\n Size.sm,\n Size.md,\n Size.lg,\n Size.xl,\n Size[\"2xl\"],\n] as const\n\nexport const IconSizes = [\n Size.xs,\n Size.sm,\n Size.md,\n Size.base,\n Size.lg,\n Size.xl,\n Size[\"2xl\"],\n Size[\"3xl\"],\n Size[\"4xl\"],\n Size[\"5xl\"],\n Size[\"6xl\"],\n Size[\"7xl\"],\n Size[\"8xl\"],\n Size[\"9xl\"],\n] as const\n\nexport const BadgeColors = [\n BaseColor.warning,\n BaseColor.error,\n BaseColor.info,\n BaseColor.success,\n BaseColor.primary,\n BaseColor.default,\n] as const\n\nexport const EVENTS = [\n \"play\",\n \"pause\",\n \"ended\",\n \"loadeddata\",\n \"waiting\",\n \"playing\",\n \"timeupdate\",\n \"canplay\",\n \"canplaythrough\",\n \"statechanged\",\n]\n\nexport default {}\n","\nimport Vue, { PropType } from \"vue\"\nimport { IconSizes } from \"@/constants\"\nimport { BaseColor, Size, TailwindColorClass, TIconSize } from \"@/types\"\n\nexport default Vue.extend({\n name: \"EIcon\",\n props: {\n icon: {\n type: String,\n default: \"\",\n },\n color: {\n type: String as PropType<TailwindColorClass>,\n default: BaseColor.default,\n },\n size: {\n type: String as PropType<TIconSize>,\n default: Size.sm,\n },\n },\n computed: {\n sizes(): Record<Size, string> {\n return IconSizes.reduce((acc, s) => {\n return {\n ...acc,\n [s]: `e-text-${s}`,\n }\n }, {}) as Record<Size, string>\n },\n iconClasses(): string[] {\n const sizeClasses = this.sizes[this.size] || this.sizes[Size.sm]\n const iconClasses = `${\n this.icon?.split(\" \")?.length > 1 ? this.icon : `fa fa-${this.icon}`\n }`\n const color = this.color\n\n return [\n \"e-inline-flex e-items-center e-justify-center e-rounded-full\",\n color,\n iconClasses,\n sizeClasses,\n ]\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { Size } from \"@/types\"\nimport { TextSizes, Colors } from \"@/constants\"\n\nexport default Vue.extend({\n name: \"ESpinner\",\n props: {\n dark: {\n type: Boolean,\n default: false,\n },\n color: {\n type: Boolean,\n default: true,\n },\n animationDuration: {\n type: [Number, String],\n default: 1000,\n },\n size: {\n type: String as PropType<Size>,\n default: Size.base,\n },\n opacity: {\n type: [String, Number],\n default: 1,\n },\n },\n data() {\n return {\n sizes: TextSizes,\n colors: Colors,\n }\n },\n computed: {\n computedSize(): number {\n return this.sizes[Size[this.size]] || this.size || this.sizes[Size.base]\n },\n fill(): { primary: string; secondary: string } {\n let fill = {\n primary: this.colors.brand[500],\n secondary: this.colors.neutral[300],\n }\n\n if (this.dark && !this.color) {\n fill = {\n primary: this.colors.neutral[100],\n secondary: this.colors.neutral[100],\n }\n }\n\n if (!this.dark && this.color) {\n fill = {\n primary: this.colors.brand[500],\n secondary: this.colors.neutral[950],\n }\n }\n\n if (!this.dark && !this.color) {\n fill = {\n primary: this.colors.neutral[200],\n secondary: this.colors.neutral[200],\n }\n }\n\n return fill\n },\n },\n methods: {\n getNthPathStyle(index: number) {\n const animationDuration =\n typeof this.animationDuration === \"string\"\n ? Number.parseInt(this.animationDuration)\n : this.animationDuration\n\n return {\n animationDuration: `${this.animationDuration}ms`,\n animationDelay: `${(index / 10) * animationDuration}ms`,\n fill: `${this.fill[index % 2 === 0 ? \"primary\" : \"secondary\"]}`,\n }\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { FlexAlignContent, FlexAlignItems, FlexJustifyContent } from \"@/types\"\n\nexport default Vue.extend({\n props: {\n align: {\n type: String as PropType<FlexAlignItems>,\n default: undefined,\n },\n alignContent: {\n type: String as PropType<FlexAlignContent>,\n default: undefined,\n },\n justify: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifyXs: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifySm: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifyMd: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifyLg: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n justifyXl: {\n type: String as PropType<FlexJustifyContent>,\n default: undefined,\n },\n noGutters: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n },\n computed: {\n justifyClasses(): Record<string, boolean> {\n return {\n [`e-justify-${this.justify}`]: !!this.justify,\n [`xs:e-justify-${this.justifySm}`]: !!this.justifySm,\n [`sm:e-justify-${this.justifySm}`]: !!this.justifySm,\n [`md:e-justify-${this.justifyMd}`]: !!this.justifyMd,\n [`lg:e-justify-${this.justifyLg}`]: !!this.justifyLg,\n [`xl:e-justify-${this.justifyXl}`]: !!this.justifyXl,\n }\n },\n rowClasses(): Record<string, boolean> {\n return {\n ...(this.align ? { [`e-items-${this.align}`]: true } : {}),\n ...(this.alignContent\n ? { [`e-content-${this.alignContent}`]: true }\n : {}),\n ...(this.noGutters ? { [\"e-row--no-gutters\"]: true } : {}),\n ...this.justifyClasses,\n }\n },\n },\n})\n","\nimport Vue, { PropType } from \"vue\"\nimport { FlexAlignSelf } from \"@/types\"\n\nexport default Vue.extend({\n props: {\n alignSelf: {\n type: String as PropType<FlexAlignSelf>,\n default: \"auto\",\n },\n cols: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n lg: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n md: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n offset: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetLg: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetMd: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetSm: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetXs: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n offsetXl: {\n type: [String, Number] as PropType<string | number>,\n default: undefined,\n },\n sm: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n xs: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n xl: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: undefined,\n },\n },\n computed: {\n colClasses(): Record<string, boolean> {\n return {\n // Align self\n ...(this.alignSelf ? { [`e-self-${this.alignSelf}`]: true } : {}),\n\n // cols=\"auto\"\n [this.autoClasses(\"xs:\", this.xs)]: this.isSizePropAuto(this.xs),\n [this.autoClasses(\"sm:\", this.sm)]: this.isSizePropAuto(this.sm),\n [this.autoClasses(\"md:\", this.md)]: this.isSizePropAuto(this.md),\n [this.autoClasses(\"lg:\", this.lg)]: this.isSizePropAuto(this.lg),\n [this.autoClasses(\"xl:e\", this.xl)]: this.isSizePropAuto(this.xl),\n [this.autoClasses(\"\", this.cols)]: this.isSizePropAuto(this.cols, true),\n\n // cols=\"12\"\n \"xs:e-basis-full xs:!e-max-w-12/12\": this.xs === 12 || this.xs === \"12\",\n \"sm:e-basis-full sm:!e-max-w-12/12\": this.sm === 12 || this.sm === \"12\",\n \"md:e-basis-full md:!e-max-w-12/12\": this.md === 12 || this.md === \"12\",\n \"lg:e-basis-full lg:!e-max-w-12/12\": this.lg === 12 || this.lg === \"12\",\n \"xl:e-basis-full xl:!e-max-w-12/12\": this.xl === 12 || this.xl === \"12\",\n \"e-basis-full e-max-w-12/12\": this.cols === 12 || this.cols === \"12\",\n\n // cols=\"n\"\n [`xs:e-basis-${this.xs}/12 xs:!e-max-w-${this.xs}/12`]:\n this.isSizePropertyNumeric(this.xs),\n [`sm:e-basis-${this.sm}/12 sm:!e-max-w-${this.sm}/12`]:\n this.isSizePropertyNumeric(this.sm),\n [`md:e-basis-${this.md}/12 md:!e-max-w-${this.md}/12`]:\n this.isSizePropertyNumeric(this.md),\n [`lg:e-basis-${this.lg}/12 lg:!e-max-w-${this.lg}/12`]:\n this.isSizePropertyNumeric(this.lg),\n [`xl:e-basis-${this.xl}/12 xl:!e-max-w-${this.xl}/12`]:\n this.isSizePropertyNumeric(this.xl),\n [`e-basis-${this.cols}/12 !e-max-w-${this.cols}/12`]:\n this.isSizePropertyNumeric(this.cols),\n\n // offset=\"n\"\n [`xs:e-offset-${this.offsetXs}`]: this.offsetXs !== undefined,\n [`sm:e-offset-${this.offsetSm}`]: this.offsetSm !== undefined,\n [`md:e-offset-${this.offsetMd}`]: this.offsetMd !== undefined,\n [`lg:e-offset-${this.offsetLg}`]: this.offsetLg !== undefined,\n [`xl:e-offset-${this.offsetXl}`]: this.offsetXl !== undefined,\n [`e-offset-${this.offset}`]: this.offset !== undefined,\n }\n },\n },\n methods: {\n autoClasses(prefix: string, value: boolean | string | number) {\n const basis = value === \"auto\" ? \"auto\" : \"0\"\n const grow = value === \"auto\" ? \"-0\" : \"\"\n const width = value === \"auto\" ? \"auto\" : \"full\"\n\n return `${prefix}e-basis-${basis} ${prefix}e-grow${grow} ${prefix}e-w-${width}`\n },\n isSizePropAuto(\n prop: boolean | string | number | undefined,\n acceptUndefined = false\n ) {\n return (\n prop === \"auto\" ||\n prop === 0 ||\n prop === \"0\" ||\n (acceptUndefined && !prop)\n )\n },\n isSizePropertyNumeric(prop: boolean | string | number | undefined) {\n const n = Number.parseInt(prop as string)\n\n return prop !== \"auto\" && !isNaN(n) && n >= 1 && n < 12\n },\n },\n})\n","export function isFullScreen() {\n return !!(\n document.fullscreenElement ||\n document.mozFullScreenElement ||\n document.webkitFullscreenElement ||\n document.msFullscreenElement\n )\n}\n\nexport function makeFullScreen(element: HTMLElement) {\n if (isFullScreen()) {\n return new Promise((resolve) => resolve())\n }\n\n if (element.requestFullscreen) {\n return element?.requestFullscreen()\n } else if (element.mozRequestFullScreen) {\n return element?.mozRequestFullScreen()\n } else if (element.webkitRequestFullScreen) {\n return element?.webkitRequestFullScreen()\n } else if (element.msRequestFullscreen) {\n return element?.msRequestFullscreen()\n }\n}\n\nexport function exitFullScreen() {\n if (!isFullScreen()) {\n return new Promise((resolve) => resolve())\n }\n\n if (document.exitFullscreen) {\n return document.exitFullscreen()\n } else if (document.mozCancelFullScreen) {\n return document.mozCancelFullScreen()\n } else if (document.webkitCancelFullScreen) {\n return document.webkitCancelFullScreen()\n } else if (document.msExitFullscreen) {\n return document.msExitFullscreen()\n }\n}\n","\nimport Vue, { PropType } from \"vue\"\nimport { makeFullScreen, exitFullScreen } from \"@/utils\"\nimport ESpinner from \"@/components/ESpinner.vue\"\n// types:\nexport type VideoSource = {\n type: string\n src: string\n}\n\n// Helper functions\nconst leadingZeroFormatter = new Intl.NumberFormat(undefined, {\n minimumIntegerDigits: 2,\n})\n\n// List of events so we can bind them on mount\nexport const VIDEO_PLAYER_EVENTS = [\n \"play\",\n \"pause\",\n \"ended\",\n \"loadeddata\",\n \"waiting\",\n \"playing\",\n \"timeupdate\",\n \"canplay\",\n \"canplaythrough\",\n \"statechanged\",\n \"error\",\n]\n\nconst formatDuration = (time: number) => {\n const seconds = Math.floor(time % 60)\n const minutes = Math.floor(time / 60) % 60\n const hours = Math.floor(time / 3600)\n if (hours === 0) {\n return `${minutes}:${leadingZeroFormatter.format(seconds)}`\n } else {\n return `${hours}:${leadingZeroFormatter.format(\n minutes\n )}:${leadingZeroFormatter.format(seconds)}`\n }\n}\n\nexport default Vue.extend({\n name: \"VideoPlayer\",\n components: {\n ESpinner,\n },\n props: {\n sources: {\n type: [Array, String] as PropType<VideoSource[] | string>,\n required: true,\n },\n videoListeners: {\n type: Object as PropType<Partial<HTMLVideoElement>>,\n default: () => ({}),\n },\n videoOptions: {\n type: Object as PropType<Partial<HTMLVideoElement>>,\n default: () => ({}),\n },\n },\n data() {\n return {\n playing: false,\n percentagePlayed: 0,\n videoLength: \"0:00\",\n duration: 0,\n videoDuration: 0,\n currentTime: \"0:00\",\n realtime: 0,\n isScrubbing: false,\n wasPaused: false,\n isFullscreen: false,\n isFinished: false,\n isLoading: true,\n isError: false,\n }\n },\n computed: {\n sourceItems() {\n return (\n Array.isArray(this.sources) ? this.sources : [{ src: this.sources }]\n ) as VideoSource[]\n },\n hasStartedOrFinished(): boolean {\n return (\n (this.isFinished || this.realtime <= 0.1) &&\n !this.isLoading &&\n !this.isLooped()\n )\n },\n withControls() {\n const videoOptions = this.videoOptions as Partial<HTMLVideoElement>\n\n return videoOptions?.controls === false ? \"hide\" : \"\"\n },\n },\n mounted() {\n this.bindEvents()\n this.initializePlayer()\n this.initializeFullscreenListeners()\n },\n destroyed() {\n this.unbindEvents()\n this.destroyPlayer()\n this.removeFullscreenListeners()\n },\n\n methods: {\n handle404Error() {\n this.isError = true\n this.isLoading = false\n this.playing = false\n },\n bindEvents() {\n VIDEO_PLAYER_EVENTS.forEach((event) => {\n this.bindVideoEvent(event)\n })\n },\n unbindEvents() {\n VIDEO_PLAYER_EVENTS.forEach((event) => {\n this.unbindVideoEvent(event)\n })\n },\n bindVideoEvent(which: string) {\n const player = this.$refs.player as HTMLVideoElement\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n player.addEventListener(\n which,\n (event) => {\n if (which === \"loadeddata\") {\n this.videoLength = formatDuration(player.duration)\n }\n\n if (which === \"timeupdate\") {\n this.percentagePlayed = (player.currentTime / player.duration) * 100\n timelineContainer.style.setProperty(\n \"--progress-position\",\n this.percentagePlayed.toString()\n )\n }\n\n this.$emit(which, { event, player: this })\n },\n true\n )\n },\n unbindVideoEvent(which: string) {\n const player = this.$refs.player as HTMLVideoElement\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n player.addEventListener(\n which,\n (event) => {\n if (which === \"loadeddata\") {\n this.videoLength = formatDuration(player.duration)\n }\n\n if (which === \"timeupdate\") {\n this.percentagePlayed = (player.currentTime / player.duration) * 100\n timelineContainer.style.setProperty(\n \"--progress-position\",\n this.percentagePlayed.toString()\n )\n }\n\n this.$emit(which, { event, player: this })\n },\n true\n )\n },\n initializePlayer() {\n const playerRef = this.$refs.player as HTMLVideoElement\n if (!playerRef) {\n return\n }\n if (playerRef.autoplay) {\n this.setPlaying(true)\n }\n document.addEventListener(\"mouseup\", this.handleScrubbingOnMouseEnd)\n document.addEventListener(\"keydown\", this.handleKeyDown)\n },\n destroyPlayer() {\n window.removeEventListener(\"keydown\", this.handleKeyDown)\n document.removeEventListener(\"mouseup\", this.handleScrubbingOnMouseEnd)\n },\n removeFullscreenListeners() {\n if (\n document.fullscreenEnabled ||\n document.webkitFullscreenEnabled ||\n document.mozFullScreenEnabled ||\n document.msFullscreenEnabled\n ) {\n document.removeEventListener(\n \"fullscreenchange\",\n this.handleFullscreenChange\n )\n document.removeEventListener(\n \"webkitfullscreenchange\",\n this.handleFullscreenChange\n )\n document.removeEventListener(\n \"mozfullscreenchange\",\n this.handleFullscreenChange\n )\n document.removeEventListener(\n \"MSFullscreenChange\",\n this.handleFullscreenChange\n )\n } else {\n console.log(\"Fullscreen API is not supported in this browser.\")\n }\n },\n initializeFullscreenListeners() {\n if (\n document.fullscreenEnabled ||\n document.webkitFullscreenEnabled ||\n document.mozFullScreenEnabled ||\n document.msFullscreenEnabled\n ) {\n document.addEventListener(\n \"fullscreenchange\",\n this.handleFullscreenChange\n )\n document.addEventListener(\n \"webkitfullscreenchange\",\n this.handleFullscreenChange\n )\n document.addEventListener(\n \"mozfullscreenchange\",\n this.handleFullscreenChange\n )\n document.addEventListener(\n \"MSFullscreenChange\",\n this.handleFullscreenChange\n )\n } else {\n console.log(\"Fullscreen API is not supported in this browser.\")\n }\n },\n handleFullscreenChange() {\n this.isFullscreen =\n document.fullscreenElement ||\n document.mozFullScreenElement ||\n document.webkitFullscreenElement ||\n document.msFullscreenElement ||\n (window.innerWidth == screen.width &&\n window.innerHeight == screen.height)\n },\n\n isLooped() {\n const player = this.$refs.player as HTMLVideoElement\n\n return player.loop\n },\n handleScrubbingOnMouseEnd(e: MouseEvent) {\n if (this.isScrubbing) {\n this.toggleScrubbing(e)\n }\n },\n handleEnded() {\n this.isFinished = true\n this.playing = false\n },\n handleLoading() {\n this.isLoading = false\n },\n play() {\n const playerRef = this.$refs.player as HTMLVideoElement\n if (!playerRef) {\n return\n }\n const playPromise = playerRef.play()\n if (playPromise !== undefined) {\n playerRef\n .play()\n .then(() => this.setPlaying(true))\n .catch(console.error)\n }\n },\n pause() {\n const playerRef = this.$refs.player as HTMLVideoElement\n if (!playerRef) {\n return\n }\n playerRef.pause()\n this.setPlaying(false)\n },\n togglePlay() {\n if (this.playing) {\n this.pause()\n } else {\n this.play()\n }\n },\n setPlaying(state: boolean) {\n this.playing = state\n },\n seekToPercentage(percentage: number) {\n const playerRef = this.$refs.player as HTMLVideoElement\n if (!playerRef) {\n return\n }\n const currentTime = (percentage / 100) * playerRef.duration\n playerRef.currentTime = currentTime\n },\n convertTimeToDuration(seconds: number) {\n // @ts-ignore\n return [parseInt((seconds / 60) % 60, 10), parseInt(seconds % 60, 10)]\n .join(\":\")\n .replace(/\\b(\\d)\\b/g, \"0$1\")\n },\n\n closeFullscreenMode() {\n if (document.fullscreenElement) {\n exitFullScreen().then(() => {\n this.isFullscreen = false\n console.log(\"Exited fullscreen\")\n })\n\n this.isFullscreen = false\n }\n },\n openFullscreenMode() {\n const element = this.$refs.videoContainer as HTMLDivElement\n if (element) {\n makeFullScreen(element).then(() => {\n this.isFullscreen = true\n })\n this.isFullscreen = true\n }\n },\n toggleFullscreenMode() {\n if (this.isFullscreen) {\n this.closeFullscreenMode()\n } else {\n this.openFullscreenMode()\n }\n },\n\n getDuration() {\n const player = this.$refs.player as HTMLVideoElement\n this.videoLength = formatDuration(player.duration)\n this.videoDuration = player.duration\n },\n handleTimeUpdate() {\n const player = this.$refs.player as HTMLVideoElement\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n if (!player || !timelineContainer) {\n return\n }\n this.currentTime = formatDuration(player.currentTime)\n this.realtime = player.currentTime\n const percent = Number(this.realtime) / Number(this.videoDuration)\n timelineContainer.style.setProperty(\n \"--progress-position\",\n percent.toString()\n )\n },\n handleTimelineUpdate(e: MouseEvent) {\n const player = this.$refs.player as HTMLVideoElement\n if (!document.body.contains(player)) {\n return\n }\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n const rect = timelineContainer.getBoundingClientRect()\n const percent =\n Math.min(Math.max(0, e.x - rect.x), rect.width) / rect.width\n timelineContainer.style.setProperty(\n \"--preview-position\",\n percent.toString()\n )\n if (this.isScrubbing) {\n e.preventDefault()\n timelineContainer.style.setProperty(\n \"--progress-position\",\n percent.toString()\n )\n }\n },\n skip(duration = 5) {\n const player = this.$refs.player as HTMLVideoElement\n\n player.currentTime += duration\n },\n async toggleScrubbing(e: MouseEvent) {\n const timelineContainer = this.$refs.timelineContainer as HTMLDivElement\n const videoContainer = this.$refs.videoContainer as HTMLDivElement\n const player = this.$refs.player as HTMLVideoElement\n if (!player) {\n return\n }\n const rect = timelineContainer.getBoundingClientRect()\n const percent =\n Math.min(Math.max(0, e.x - rect.x), rect.width) / rect.width\n this.isScrubbing = (e.buttons & 1) === 1\n videoContainer.classList.toggle(\"scrubbing\", this.isScrubbing)\n if (this.isScrubbing) {\n this.wasPaused = player.paused\n await player.pause()\n this.handleTimelineUpdate(e)\n\n return\n }\n this.realtime = percent * this.videoDuration\n player.currentTime = percent * this.videoDuration\n if (this.wasPaused) {\n return\n }\n const playPromise = player.play()\n // @see issue: https://developer.chrome.com/blog/play-request-was-interrupted/\n if (playPromise !== undefined) {\n playPromise\n .then(() => this.handleTimelineUpdate(e))\n .catch(console.error)\n }\n },\n\n handleKeyDown(e: KeyboardEvent) {\n const tagName = document.activeElement?.tagName.toLowerCase()\n if (tagName === \"input\") {\n return\n }\n switch (e.key.toLowerCase()) {\n case \" \":\n if (tagName === \"button\") {\n return\n }\n this.togglePlay()\n break\n case \"k\":\n this.togglePlay()\n break\n case \"escape\":\n e.preventDefault()\n this.closeFullscreenMode()\n this.isFullscreen = false\n\n break\n case \"f\":\n this.openFullscreenMode()\n this.isFullscreen = true\n\n break\n }\n },\n },\n})\n","import * as d3 from \"d3\"\nimport { TimelineAxis, TimelineAxesConfig } from \"@/types\"\n\nconst getFormattedDay = (d: Date) => {\n const day = d3.utcFormat(\"%_d\")(d)\n const daySuffixes: { [key: string]: string } = {\n [\"1\"]: \"st\",\n [\"2\"]: \"nd\",\n [\"3\"]: \"rd\",\n }\n\n const daySuffix = daySuffixes[day.charAt(1)] || \"th\"\n\n return `${day}${daySuffix}`\n}\n\nconst getFormattedDayNoEndOfMonth = (d: Date) => {\n const nextDay = new Date(\n Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate() + 1)\n )\n const isEndOfTheMonth = nextDay.getUTCDate() === 1\n\n if (isEndOfTheMonth) {\n return \"\"\n }\n\n return d3.utcFormat(\"%-d\")(d)\n}\n\nconst getFormattedHour = (d: Date) => {\n return [\"0\", \" 0\", \"00\"].includes(d3.utcFormat(\"%H\")(d))\n ? \"\"\n : `${d3.utcFormat(\"%H\")(d)}h`\n}\n\nconst getFormattedHourMinute = (d: Date) => {\n const HH_MM = d3.utcFormat(\"%H:%M\")(d)\n\n return HH_MM === \"00:00\" ? \"\" : HH_MM\n}\n\nconst getFormattedMinuteSecond = (d: Date) => {\n return d3.utcFormat(\"%M:%S\")(d)\n}\n\nconst getFormattedOverviewMinuteSecond = (d: Date) => {\n const HH_MM_SS = d3.utcFormat(\"%Hh%Mm\")(d)\n\n return `${HH_MM_SS}`\n}\n\nconst getFormattedOverviewHour = (d: Date) => {\n const hour = getFormattedHourMinute(d)\n const day = getFormattedDay(d)\n const month = d3.utcFormat(\"%B\")(d)\n\n return hour || `${month} ${day}`\n}\n\nconst getFormattedDayHourMinute = (d: Date) => {\n const HH_MM = getFormattedHourMinute(d)\n const hour = Number.parseInt(d3.utcFormat(\"%H\")(d))\n const day = getFormattedDay(d)\n const month = d3.utcFormat(\"%B\")(d)\n\n if (HH_MM && hour % 6 === 0) {\n return `${month} ${day} ${HH_MM}`\n }\n\n return getFormattedOverviewHour(d)\n}\n\nconst filterHourDivisibleBy = (n: number) => {\n return (d: Date) => {\n const hour = d3.utcFormat(\"%H\")(d)\n const minute = d3.utcFormat(\"%M\")(d)\n\n return !(minute === \"00\" && Number.parseInt(hour) % n === 0)\n }\n}\n\nconst filterMinutesDivisibleBy = (n: number) => {\n return (d: Date) => {\n const minute = d3.utcFormat(\"%M\")(d)\n\n return Number.parseInt(minute) % n !== 0\n }\n}\n\nconst filterMinutesSecondsDivisibleBy = (n: number) => {\n return (d: Date) => {\n const minute = d3.utcFormat(\"%M\")(d)\n const second = d3.utcFormat(\"%S\")(d)\n\n return Number.parseInt(minute) % n !== 0 && Number.parseInt(second) === 0\n }\n}\n\n/**\n * Precision of the timeline ticks\n * (measured in Hours per Pixel)\n */\nconst Precision = {\n _10_seconds: 0.000025,\n _20_seconds: 0.0001,\n _30_seconds: 0.00015,\n _1_minute: 0.0003,\n _2_minutes: 0.00075,\n _5_minutes: 0.002,\n _15_minutes: 0.005,\n _30_minutes: 0.01,\n _1_hour: 0.025,\n _2_hours: 0.05,\n _3_hours: 0.1,\n _4_hours: 0.15,\n _6_hours: 0.25,\n _1_day: 1,\n _2_days: 2,\n _1_month: 8,\n _1_month_abbr: 13,\n _1_month_letter: 22,\n _3_months: 33,\n infinity: Infinity,\n}\n\n/**\n * Map of formats and ticks intervals for the Timeline axis(s) by type.\n */\nexport const defaultAxesConfig: TimelineAxesConfig = {\n [TimelineAxis.overview]: [\n {\n precision: Precision._30_seconds,\n interval: d3.utcMinute.every(2),\n format: getFormattedOverviewMinuteSecond,\n },\n {\n precision: Precision._1_minute,\n interval: d3.utcMinute.every(5),\n format: getFormattedOverviewMinuteSecond,\n },\n {\n precision: Precision._2_minutes,\n interval: d3.utcMinute.every(10),\n format: getFormattedOverviewHour,\n },\n {\n precision: Precision._5_minutes,\n interval: d3.utcMinute.every(20),\n format: getFormattedDayHourMinute,\n },\n {\n precision: Precision._15_minutes,\n interval: d3.utcHour,\n format: getFormattedDayHourMinute,\n },\n {\n precision: Precision._30_minutes,\n interval: d3.utcHour.every(2),\n format: getFormattedDayHourMinute,\n },\n {\n precision: Precision._2_hours,\n interval: d3.utcHour.every(6),\n format: (d: Date) => {\n const hour = getFormattedHourMinute(d)\n const day = getFormattedDay(d)\n const month = d3.utcFormat(\"%B\")(d)\n\n return hour || `${month} ${day}`\n },\n },\n {\n precision: Precision._3_hours,\n interval: d3.utcHour.every(12),\n format: getFormattedOverviewHour,\n },\n {\n precision: Precision._6_hours,\n interval: d3.utcHour.every(24),\n format: (d: Date) => {\n const day = getFormattedDay(d)\n const abbreviatedMonth = d3.utcFormat(\"%b\")(d)\n\n return `${abbreviatedMonth} ${day}`\n },\n },\n {\n precision: Precision._2_days,\n interval: d3.utcMonth,\n format: (d: Date) => {\n const startOfTheYear = d.getUTCMonth() === 0 && d.getUTCDate() === 1\n const format = startOfTheYear ? \"%Y – %B\" : \"%B\"\n\n return d3.utcFormat(format)(d)\n },\n },\n {\n precision: Precision.infinity,\n interval: d3.utcYear,\n format: \"%Y\",\n },\n ],\n [TimelineAxis.detailed]: [\n {\n precision: Precision._10_seconds,\n interval: d3.utcSecond.every(10),\n format: getFormattedMinuteSecond,\n },\n {\n precision: Precision._20_seconds,\n interval: d3.utcSecond\n .every(20)\n ?.filter(filterMinutesSecondsDivisibleBy(2)),\n format: getFormattedMinuteSecond,\n },\n {\n precision: Precision._30_seconds,\n interval: d3.utcSecond\n .every(30)\n ?.filter(filterMinutesSecondsDivisibleBy(2)),\n format: getFormattedMinuteSecond,\n },\n {\n precision: Precision._1_minute,\n interval: d3.utcMinute.filter(filterMinutesDivisibleBy(5)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._2_minutes,\n interval: d3.utcMinute.every(2)?.filter(filterMinutesDivisibleBy(10)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._5_minutes,\n interval: d3.utcMinute.every(5)?.filter(filterMinutesDivisibleBy(20)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._15_minutes,\n interval: d3.utcMinute.every(15)?.filter(filterHourDivisibleBy(1)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._30_minutes,\n interval: d3.utcMinute.every(30)?.filter(filterHourDivisibleBy(2)),\n format: getFormattedHourMinute,\n },\n {\n precision: Precision._1_hour,\n interval: d3.utcHour.filter(filterHourDivisibleBy(6)),\n format: getFormattedHour,\n },\n {\n precision: Precision._2_hours,\n interval: d3.utcHour.every(2)?.filter(filterHourDivisibleBy(6)),\n format: getFormattedHour,\n },\n {\n precision: Precision._3_hours,\n interval: d3.utcHour.every(3)?.filter(filterHourDivisibleBy(12)),\n format: getFormattedHour,\n },\n {\n precision: Precision._4_hours,\n interval: d3.utcHour.every(4),\n format: getFormattedHour,\n },\n {\n precision: Precision._6_hours,\n interval: d3.utcHour.every(6),\n format: getFormattedHour,\n },\n {\n precision: Precision._1_day,\n interval: d3.utcDay,\n format: getFormattedDayNoEndOfMonth,\n },\n {\n precision: Precision._2_days,\n interval: d3.utcDay.every(2),\n format: getFormattedDayNoEndOfMonth,\n },\n {\n precision: Precision._1_month,\n interval: d3.utcMonth,\n format: \"%B\",\n },\n {\n precision: Precision._1_month_abbr,\n interval: d3.utcMonth,\n format: \"%b\",\n },\n {\n precision: Precision._1_month_letter,\n interval: d3.utcMonth,\n format: (d: Date) => d3.utcFormat(\"%B\")(d).charAt(0),\n },\n {\n precision: Precision._3_months,\n interval: d3.utcMonth.every(3),\n format: \"Q%q\",\n },\n {\n precision: Precision.infinity,\n interval: d3.utcMonth.every(3),\n format: \"\",\n },\n ],\n [TimelineAxis.detailedBackground]: [\n {\n precision: Precision._10_seconds,\n interval: d3.utcSecond,\n format: \"\",\n },\n {\n precision: Precision._20_seconds,\n interval: d3.utcSecond.every(5),\n format: \"\",\n },\n {\n precision: Precision._30_seconds,\n interval: d3.utcSecond.every(10),\n format: \"\",\n },\n {\n precision: Precision._1_minute,\n interval: d3.utcSecond.every(20),\n format: \"\",\n },\n {\n precision: Precision._2_minutes,\n interval: d3.utcSecond.every(30),\n format: \"\",\n },\n {\n precision: Precision._5_minutes,\n interval: d3.utcMinute,\n format: \"\",\n },\n {\n precision: Precision._15_minutes,\n interval: d3.utcMinute.every(3),\n format: \"\",\n },\n {\n precision: Precision._30_minutes,\n interval: d3.utcMinute.every(6),\n format: \"\",\n },\n {\n precision: Precision._1_hour,\n interval: d3.utcMinute.every(15),\n format: \"\",\n },\n {\n precision: Precision._2_hours,\n interval: d3.utcMinute.every(30),\n format: \"\",\n },\n {\n precision: Precision._3_hours,\n interval: d3.utcHour,\n format: \"\",\n },\n {\n precision: Precision._4_hours,\n interval: d3.utcHour,\n format: \"\",\n },\n {\n precision: Precision._6_hours,\n interval: d3.utcMinute.every(120),\n format: \"\",\n },\n {\n precision: Precision._1_day,\n interval: d3.utcHour.every(8),\n format: \"\",\n },\n {\n precision: Precision._2_days,\n interval: d3.utcHour.every(12),\n format: \"\",\n },\n {\n precision: Precision._1_month,\n interval: d3.utcDay.filter((d: Date) => {\n const dayOfMonth = d.getUTCDate()\n const daysInMonth = new Date(\n d.getUTCFullYear(),\n d.getUTCMonth() + 1,\n 0\n ).getUTCDate()\n const fifthOfMonth = Math.ceil(daysInMonth / 5) // 1/4 of the month\n\n return (\n dayOfMonth === fifthOfMonth ||\n dayOfMonth === 2 * fifthOfMonth ||\n dayOfMonth === 3 * fifthOfMonth ||\n dayOfMonth === 4 * fifthOfMonth\n )\n }),\n format: \"\",\n },\n {\n precision: Precision._1_month_abbr,\n interval: d3.utcDay.filter((d: Date) => {\n const dayOfMonth = d.getUTCDate()\n const daysInMonth = new Date(\n d.getUTCFullYear(),\n d.getUTCMonth() + 1,\n 0\n ).getUTCDate()\n const quarterOfTheMonth = Math.ceil(daysInMonth / 4) // 1/4 of the month\n\n return (\n dayOfMonth === quarterOfTheMonth ||\n dayOfMonth === 2 * quarterOfTheMonth ||\n dayOfMonth === 3 * quarterOfTheMonth\n )\n }),\n format: \"\",\n },\n {\n precision: Precision._1_month_letter,\n interval: d3.utcDay.filter((d: Date) => {\n const dayOfMonth = d.getUTCDate()\n const daysInMonth = new Date(\n d.getUTCFullYear(),\n d.getUTCMonth() + 1,\n 0\n ).getUTCDate()\n const halfOfTheMonth = Math.ceil(daysInMonth / 2) // 1/4 of the month\n\n return dayOfMonth === halfOfTheMonth\n }),\n format: \"\",\n },\n {\n precision: Precision._3_months,\n interval: d3.utcMonth,\n format: \"\",\n },\n {\n precision: Precision.infinity,\n interval: d3.utcMonth,\n format: \"\",\n },\n ],\n}\n","import { DirectiveOptions } from \"vue\"\n\nexport interface ObservedElement extends HTMLElement {\n __resizeObserver__?: ResizeObserver\n}\n\nconst ResizeObserverDirective: DirectiveOptions = {\n bind(el, binding) {\n const { value: callback } = binding\n\n if (typeof callback !== \"function\") {\n console.error(\"Invalid callback function provided to v-resize-observer\")\n\n return\n }\n\n const observer: ResizeObserver = new ResizeObserver(\n (entries: ResizeObserverEntry[]) => {\n if (!entries[0]) {\n return\n }\n\n callback(entries[0])\n }\n )\n\n observer.observe(el)\n ;(el as ObservedElement).__resizeObserver__ = observer\n },\n unbind(el) {\n if ((el as ObservedElement).__resizeObserver__) {\n ;(el as ObservedElement).__resizeObserver__!.disconnect()\n delete (el as ObservedElement).__resizeObserver__\n }\n },\n}\n\nexport default ResizeObserverDirective\n","import ResizeObserverDirective from \"@/directives/resize-observer\"\n\nexport const DirectivesMap = [\n {\n name: \"resize-observer\",\n definition: ResizeObserverDirective,\n },\n]\n\nexport { ResizeObserverDirective }\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\nvar hookCallback;\n\nfunction hooks() {\n return hookCallback.apply(null, arguments);\n}\n\n// This is done to register the method called with moment()\n// without creating circular dependencies.\nfunction setHookCallback(callback) {\n hookCallback = callback;\n}\n\nfunction isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n}\n\nfunction isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n}\n\nfunction hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n}\n\nfunction isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n}\n\nfunction isUndefined(input) {\n return input === void 0;\n}\n\nfunction isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n}\n\nfunction isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n}\n\nfunction map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n}\n\nfunction extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n}\n\nfunction createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n}\n\nfunction defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n}\n\nfunction getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n}\n\nvar some;\nif (Array.prototype.some) {\n some = Array.prototype.some;\n} else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n}\n\nfunction isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n}\n\nfunction createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n}\n\n// Plugins that add properties should also add the key here (null value),\n// so we can properly clone ourselves.\nvar momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\nfunction copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n}\n\n// Moment prototype object\nfunction Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n}\n\nfunction isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n}\n\nfunction warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n}\n\nfunction deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n}\n\nvar deprecations = {};\n\nfunction deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n}\n\nhooks.suppressDeprecationWarnings = false;\nhooks.deprecationHandler = null;\n\nfunction isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n}\n\nfunction set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n}\n\nfunction mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n}\n\nfunction Locale(config) {\n if (config != null) {\n this.set(config);\n }\n}\n\nvar keys;\n\nif (Object.keys) {\n keys = Object.keys;\n} else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n}\n\nvar defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n};\n\nfunction calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n}\n\nfunction zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n}\n\nvar formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n// token: 'M'\n// padded: ['MM', 2]\n// ordinal: 'Mo'\n// callback: function () { this.month() + 1 }\nfunction addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n}\n\nfunction removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n}\n\nfunction makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n}\n\n// format date using native date object\nfunction formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n}\n\nfunction expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n}\n\nvar defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n};\n\nfunction longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n}\n\nvar defaultInvalidDate = 'Invalid date';\n\nfunction invalidDate() {\n return this._invalidDate;\n}\n\nvar defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\nfunction ordinal(number) {\n return this._ordinal.replace('%d', number);\n}\n\nvar defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n};\n\nfunction relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n}\n\nfunction pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n}\n\nvar aliases = {};\n\nfunction addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n}\n\nfunction normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n}\n\nfunction normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n}\n\nvar priorities = {};\n\nfunction addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n}\n\nfunction getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n}\n\nfunction isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n\nfunction absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n}\n\nfunction toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n}\n\nfunction makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n}\n\nfunction get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n}\n\nfunction set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n}\n\n// MOMENTS\n\nfunction stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n}\n\nfunction stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n}\n\nvar match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\nregexes = {};\n\nfunction addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n}\n\nfunction getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n}\n\n// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\nfunction unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n}\n\nfunction regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nvar tokens = {};\n\nfunction addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n}\n\nfunction addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n}\n\nfunction addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n}\n\nvar YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\nfunction mod(n, x) {\n return ((n % x) + x) % x;\n}\n\nvar indexOf;\n\nif (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n} else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n}\n\nfunction daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n}\n\n// FORMATTING\n\naddFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n});\n\naddFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n});\n\naddFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n});\n\n// ALIASES\n\naddUnitAlias('month', 'M');\n\n// PRIORITY\n\naddUnitPriority('month', 8);\n\n// PARSING\n\naddRegexToken('M', match1to2);\naddRegexToken('MM', match1to2, match2);\naddRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n});\naddRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n});\n\naddParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n});\n\naddParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n});\n\n// LOCALES\n\nvar defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\nfunction localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n}\n\nfunction localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n}\n\nfunction handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n}\n\nfunction getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n}\n\nfunction getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n}\n\nfunction monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n}\n\nfunction monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n}\n\nfunction computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n}\n\n// FORMATTING\n\naddFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n});\n\naddFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n});\n\naddFormatToken(0, ['YYYY', 4], 0, 'year');\naddFormatToken(0, ['YYYYY', 5], 0, 'year');\naddFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n// ALIASES\n\naddUnitAlias('year', 'y');\n\n// PRIORITIES\n\naddUnitPriority('year', 1);\n\n// PARSING\n\naddRegexToken('Y', matchSigned);\naddRegexToken('YY', match1to2, match2);\naddRegexToken('YYYY', match1to4, match4);\naddRegexToken('YYYYY', match1to6, match6);\naddRegexToken('YYYYYY', match1to6, match6);\n\naddParseToken(['YYYYY', 'YYYYYY'], YEAR);\naddParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n});\naddParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n});\naddParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n});\n\n// HELPERS\n\nfunction daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\n// HOOKS\n\nhooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n};\n\n// MOMENTS\n\nvar getSetYear = makeGetSet('FullYear', true);\n\nfunction getIsLeapYear() {\n return isLeapYear(this.year());\n}\n\nfunction createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n}\n\nfunction createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n}\n\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n}\n\n// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\nfunction dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n}\n\nfunction weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n}\n\nfunction weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n}\n\n// FORMATTING\n\naddFormatToken('w', ['ww', 2], 'wo', 'week');\naddFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n// ALIASES\n\naddUnitAlias('week', 'w');\naddUnitAlias('isoWeek', 'W');\n\n// PRIORITIES\n\naddUnitPriority('week', 5);\naddUnitPriority('isoWeek', 5);\n\n// PARSING\n\naddRegexToken('w', match1to2);\naddRegexToken('ww', match1to2, match2);\naddRegexToken('W', match1to2);\naddRegexToken('WW', match1to2, match2);\n\naddWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n);\n\n// HELPERS\n\n// LOCALES\n\nfunction localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n}\n\nvar defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n};\n\nfunction localeFirstDayOfWeek() {\n return this._week.dow;\n}\n\nfunction localeFirstDayOfYear() {\n return this._week.doy;\n}\n\n// MOMENTS\n\nfunction getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\nfunction getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\n// FORMATTING\n\naddFormatToken('d', 0, 'do', 'day');\n\naddFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n});\n\naddFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n});\n\naddFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n});\n\naddFormatToken('e', 0, 0, 'weekday');\naddFormatToken('E', 0, 0, 'isoWeekday');\n\n// ALIASES\n\naddUnitAlias('day', 'd');\naddUnitAlias('weekday', 'e');\naddUnitAlias('isoWeekday', 'E');\n\n// PRIORITY\naddUnitPriority('day', 11);\naddUnitPriority('weekday', 11);\naddUnitPriority('isoWeekday', 11);\n\n// PARSING\n\naddRegexToken('d', match1to2);\naddRegexToken('e', match1to2);\naddRegexToken('E', match1to2);\naddRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n});\naddRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n});\naddRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n});\n\naddWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n});\n\naddWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n});\n\n// HELPERS\n\nfunction parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n}\n\nfunction parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n}\n\n// LOCALES\nfunction shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n}\n\nvar defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\nfunction localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n}\n\nfunction localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n}\n\nfunction localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n}\n\nfunction handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n}\n\nfunction getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n}\n\nfunction getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n}\n\nfunction weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n}\n\nfunction weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n}\n\nfunction weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n}\n\nfunction computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n}\n\n// FORMATTING\n\nfunction hFormat() {\n return this.hours() % 12 || 12;\n}\n\nfunction kFormat() {\n return this.hours() || 24;\n}\n\naddFormatToken('H', ['HH', 2], 0, 'hour');\naddFormatToken('h', ['hh', 2], 0, hFormat);\naddFormatToken('k', ['kk', 2], 0, kFormat);\n\naddFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n});\n\naddFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n});\n\nfunction meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n}\n\nmeridiem('a', true);\nmeridiem('A', false);\n\n// ALIASES\n\naddUnitAlias('hour', 'h');\n\n// PRIORITY\naddUnitPriority('hour', 13);\n\n// PARSING\n\nfunction matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n}\n\naddRegexToken('a', matchMeridiem);\naddRegexToken('A', matchMeridiem);\naddRegexToken('H', match1to2);\naddRegexToken('h', match1to2);\naddRegexToken('k', match1to2);\naddRegexToken('HH', match1to2, match2);\naddRegexToken('hh', match1to2, match2);\naddRegexToken('kk', match1to2, match2);\n\naddRegexToken('hmm', match3to4);\naddRegexToken('hmmss', match5to6);\naddRegexToken('Hmm', match3to4);\naddRegexToken('Hmmss', match5to6);\n\naddParseToken(['H', 'HH'], HOUR);\naddParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n});\naddParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n});\naddParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n});\naddParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n});\n\n// LOCALES\n\nfunction localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n}\n\nvar defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\nfunction localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n}\n\nvar baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n};\n\n// internal storage for locale config files\nvar locales = {},\n localeFamilies = {},\n globalLocale;\n\nfunction commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n}\n\nfunction normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n}\n\n// pick the locale from the array\n// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\nfunction chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n}\n\nfunction isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n}\n\nfunction loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n}\n\n// This function will load locale and then set the global locale. If\n// no arguments are passed in, it will simply return the current global\n// locale key.\nfunction getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n}\n\nfunction defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n}\n\nfunction updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n}\n\n// returns locale data\nfunction getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n}\n\nfunction listLocales() {\n return keys(locales);\n}\n\nfunction checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n}\n\n// iso 8601 regex\n// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\nvar extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n// date from iso format\nfunction configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n}\n\nfunction extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n}\n\nfunction untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n}\n\nfunction preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n}\n\nfunction checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n}\n\nfunction calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n}\n\n// date and time from ref 2822 format\nfunction configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n}\n\n// date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\nfunction configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n}\n\nhooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n);\n\n// Pick the first defined of two or three arguments.\nfunction defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n}\n\nfunction currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n}\n\n// convert an array to a date.\n// the array should mirror the parameters below\n// note: all values past the year are optional and will default to the lowest possible value.\n// [year, month, day , hour, minute, second, millisecond]\nfunction configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n}\n\nfunction dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n}\n\n// constant that refers to the ISO standard\nhooks.ISO_8601 = function () {};\n\n// constant that refers to the RFC 2822 form\nhooks.RFC_2822 = function () {};\n\n// date from string and format string\nfunction configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n}\n\nfunction meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n}\n\n// date from string and array of format strings\nfunction configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n}\n\nfunction configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n}\n\nfunction createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n}\n\nfunction prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n}\n\nfunction configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n}\n\nfunction createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n}\n\nfunction createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n}\n\nvar prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n// Pick a moment m from moments so that m[fn](other) is true for all\n// other. This relies on the function fn to be transitive.\n//\n// moments should either be an array of moment objects or an array, whose\n// first element is an array of moment objects.\nfunction pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n}\n\n// TODO: Use [].sort instead?\nfunction min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n}\n\nfunction max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n}\n\nvar now = function () {\n return Date.now ? Date.now() : +new Date();\n};\n\nvar ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n];\n\nfunction isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n}\n\nfunction isValid$1() {\n return this._isValid;\n}\n\nfunction createInvalid$1() {\n return createDuration(NaN);\n}\n\nfunction Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n}\n\nfunction isDuration(obj) {\n return obj instanceof Duration;\n}\n\nfunction absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n}\n\n// compare two arrays, return the number of differences\nfunction compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n}\n\n// FORMATTING\n\nfunction offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n}\n\noffset('Z', ':');\noffset('ZZ', '');\n\n// PARSING\n\naddRegexToken('Z', matchShortOffset);\naddRegexToken('ZZ', matchShortOffset);\naddParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n});\n\n// HELPERS\n\n// timezone chunker\n// '+10:00' > ['10', '00']\n// '-1530' > ['-15', '30']\nvar chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\nfunction offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n}\n\n// Return a moment from input, that is local/utc/zone equivalent to model.\nfunction cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n}\n\nfunction getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n}\n\n// HOOKS\n\n// This function will be called whenever a moment is mutated.\n// It is intended to keep the offset in sync with the timezone.\nhooks.updateOffset = function () {};\n\n// MOMENTS\n\n// keepLocalTime = true means only change the timezone, without\n// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n// +0200, so we adjust the time as needed, to be valid.\n//\n// Keeping the time actually adds/subtracts (one hour)\n// from the actual represented time. That is why we call updateOffset\n// a second time. In case it wants us to change the offset again\n// _changeInProgress == true case, then we have to adjust, because\n// there is no such time in the given timezone.\nfunction getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n}\n\nfunction getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n}\n\nfunction setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n}\n\nfunction setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n}\n\nfunction setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n}\n\nfunction hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n}\n\nfunction isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n}\n\nfunction isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n}\n\nfunction isLocal() {\n return this.isValid() ? !this._isUTC : false;\n}\n\nfunction isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n}\n\nfunction isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n}\n\n// ASP.NET json date format regex\nvar aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\nfunction createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n}\n\ncreateDuration.fn = Duration.prototype;\ncreateDuration.invalid = createInvalid$1;\n\nfunction parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n}\n\nfunction positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n}\n\nfunction momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n}\n\n// TODO: remove 'name' arg after deprecation is removed\nfunction createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n}\n\nfunction addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n}\n\nvar add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\nfunction isString(input) {\n return typeof input === 'string' || input instanceof String;\n}\n\n// type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\nfunction isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n}\n\nfunction isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n}\n\nfunction isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n}\n\nfunction isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n}\n\nfunction getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n}\n\nfunction calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n}\n\nfunction clone() {\n return new Moment(this);\n}\n\nfunction isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n}\n\nfunction isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n}\n\nfunction isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n}\n\nfunction isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n}\n\nfunction isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n}\n\nfunction isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n}\n\nfunction diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n}\n\nfunction monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n}\n\nhooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\nhooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\nfunction toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n}\n\nfunction toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n}\n\n/**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\nfunction inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n}\n\nfunction format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n}\n\nfunction from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n}\n\nfunction to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n}\n\n// If passed a locale key, it will set the locale for this\n// instance. Otherwise, it will return the locale configuration\n// variables for this instance.\nfunction locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n}\n\nvar lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n);\n\nfunction localeData() {\n return this._locale;\n}\n\nvar MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n// actual modulo - handles negative numbers (for dates before 1970):\nfunction mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n}\n\nfunction localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n}\n\nfunction utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n}\n\nfunction startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n}\n\nfunction endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n}\n\nfunction valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n}\n\nfunction unix() {\n return Math.floor(this.valueOf() / 1000);\n}\n\nfunction toDate() {\n return new Date(this.valueOf());\n}\n\nfunction toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n}\n\nfunction toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n}\n\nfunction toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n}\n\nfunction isValid$2() {\n return isValid(this);\n}\n\nfunction parsingFlags() {\n return extend({}, getParsingFlags(this));\n}\n\nfunction invalidAt() {\n return getParsingFlags(this).overflow;\n}\n\nfunction creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n}\n\naddFormatToken('N', 0, 0, 'eraAbbr');\naddFormatToken('NN', 0, 0, 'eraAbbr');\naddFormatToken('NNN', 0, 0, 'eraAbbr');\naddFormatToken('NNNN', 0, 0, 'eraName');\naddFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\naddFormatToken('y', ['y', 1], 'yo', 'eraYear');\naddFormatToken('y', ['yy', 2], 0, 'eraYear');\naddFormatToken('y', ['yyy', 3], 0, 'eraYear');\naddFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\naddRegexToken('N', matchEraAbbr);\naddRegexToken('NN', matchEraAbbr);\naddRegexToken('NNN', matchEraAbbr);\naddRegexToken('NNNN', matchEraName);\naddRegexToken('NNNNN', matchEraNarrow);\n\naddParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n);\n\naddRegexToken('y', matchUnsigned);\naddRegexToken('yy', matchUnsigned);\naddRegexToken('yyy', matchUnsigned);\naddRegexToken('yyyy', matchUnsigned);\naddRegexToken('yo', matchEraYearOrdinal);\n\naddParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\naddParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n});\n\nfunction localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n}\n\nfunction localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n}\n\nfunction localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n}\n\nfunction getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n}\n\nfunction getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n}\n\nfunction getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n}\n\nfunction getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n}\n\nfunction erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n}\n\nfunction erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n}\n\nfunction erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n}\n\nfunction matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n}\n\nfunction matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n}\n\nfunction matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n}\n\nfunction matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n}\n\nfunction computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n}\n\n// FORMATTING\n\naddFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n});\n\naddFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n});\n\nfunction addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n}\n\naddWeekYearFormatToken('gggg', 'weekYear');\naddWeekYearFormatToken('ggggg', 'weekYear');\naddWeekYearFormatToken('GGGG', 'isoWeekYear');\naddWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n// ALIASES\n\naddUnitAlias('weekYear', 'gg');\naddUnitAlias('isoWeekYear', 'GG');\n\n// PRIORITY\n\naddUnitPriority('weekYear', 1);\naddUnitPriority('isoWeekYear', 1);\n\n// PARSING\n\naddRegexToken('G', matchSigned);\naddRegexToken('g', matchSigned);\naddRegexToken('GG', match1to2, match2);\naddRegexToken('gg', match1to2, match2);\naddRegexToken('GGGG', match1to4, match4);\naddRegexToken('gggg', match1to4, match4);\naddRegexToken('GGGGG', match1to6, match6);\naddRegexToken('ggggg', match1to6, match6);\n\naddWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n);\n\naddWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n});\n\n// MOMENTS\n\nfunction getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n}\n\nfunction getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n}\n\nfunction getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n}\n\nfunction getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n}\n\nfunction getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n}\n\nfunction getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n}\n\nfunction getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n}\n\nfunction setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n}\n\n// FORMATTING\n\naddFormatToken('Q', 0, 'Qo', 'quarter');\n\n// ALIASES\n\naddUnitAlias('quarter', 'Q');\n\n// PRIORITY\n\naddUnitPriority('quarter', 7);\n\n// PARSING\n\naddRegexToken('Q', match1);\naddParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n});\n\n// MOMENTS\n\nfunction getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n}\n\n// FORMATTING\n\naddFormatToken('D', ['DD', 2], 'Do', 'date');\n\n// ALIASES\n\naddUnitAlias('date', 'D');\n\n// PRIORITY\naddUnitPriority('date', 9);\n\n// PARSING\n\naddRegexToken('D', match1to2);\naddRegexToken('DD', match1to2, match2);\naddRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n});\n\naddParseToken(['D', 'DD'], DATE);\naddParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n});\n\n// MOMENTS\n\nvar getSetDayOfMonth = makeGetSet('Date', true);\n\n// FORMATTING\n\naddFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n// ALIASES\n\naddUnitAlias('dayOfYear', 'DDD');\n\n// PRIORITY\naddUnitPriority('dayOfYear', 4);\n\n// PARSING\n\naddRegexToken('DDD', match1to3);\naddRegexToken('DDDD', match3);\naddParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n});\n\n// HELPERS\n\n// MOMENTS\n\nfunction getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n}\n\n// FORMATTING\n\naddFormatToken('m', ['mm', 2], 0, 'minute');\n\n// ALIASES\n\naddUnitAlias('minute', 'm');\n\n// PRIORITY\n\naddUnitPriority('minute', 14);\n\n// PARSING\n\naddRegexToken('m', match1to2);\naddRegexToken('mm', match1to2, match2);\naddParseToken(['m', 'mm'], MINUTE);\n\n// MOMENTS\n\nvar getSetMinute = makeGetSet('Minutes', false);\n\n// FORMATTING\n\naddFormatToken('s', ['ss', 2], 0, 'second');\n\n// ALIASES\n\naddUnitAlias('second', 's');\n\n// PRIORITY\n\naddUnitPriority('second', 15);\n\n// PARSING\n\naddRegexToken('s', match1to2);\naddRegexToken('ss', match1to2, match2);\naddParseToken(['s', 'ss'], SECOND);\n\n// MOMENTS\n\nvar getSetSecond = makeGetSet('Seconds', false);\n\n// FORMATTING\n\naddFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n});\n\naddFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n});\n\naddFormatToken(0, ['SSS', 3], 0, 'millisecond');\naddFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n});\naddFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n});\naddFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n});\naddFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n});\naddFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n});\naddFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n});\n\n// ALIASES\n\naddUnitAlias('millisecond', 'ms');\n\n// PRIORITY\n\naddUnitPriority('millisecond', 16);\n\n// PARSING\n\naddRegexToken('S', match1to3, match1);\naddRegexToken('SS', match1to3, match2);\naddRegexToken('SSS', match1to3, match3);\n\nvar token, getSetMillisecond;\nfor (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n}\n\nfunction parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n}\n\nfor (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n}\n\ngetSetMillisecond = makeGetSet('Milliseconds', false);\n\n// FORMATTING\n\naddFormatToken('z', 0, 0, 'zoneAbbr');\naddFormatToken('zz', 0, 0, 'zoneName');\n\n// MOMENTS\n\nfunction getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n}\n\nfunction getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n}\n\nvar proto = Moment.prototype;\n\nproto.add = add;\nproto.calendar = calendar$1;\nproto.clone = clone;\nproto.diff = diff;\nproto.endOf = endOf;\nproto.format = format;\nproto.from = from;\nproto.fromNow = fromNow;\nproto.to = to;\nproto.toNow = toNow;\nproto.get = stringGet;\nproto.invalidAt = invalidAt;\nproto.isAfter = isAfter;\nproto.isBefore = isBefore;\nproto.isBetween = isBetween;\nproto.isSame = isSame;\nproto.isSameOrAfter = isSameOrAfter;\nproto.isSameOrBefore = isSameOrBefore;\nproto.isValid = isValid$2;\nproto.lang = lang;\nproto.locale = locale;\nproto.localeData = localeData;\nproto.max = prototypeMax;\nproto.min = prototypeMin;\nproto.parsingFlags = parsingFlags;\nproto.set = stringSet;\nproto.startOf = startOf;\nproto.subtract = subtract;\nproto.toArray = toArray;\nproto.toObject = toObject;\nproto.toDate = toDate;\nproto.toISOString = toISOString;\nproto.inspect = inspect;\nif (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n}\nproto.toJSON = toJSON;\nproto.toString = toString;\nproto.unix = unix;\nproto.valueOf = valueOf;\nproto.creationData = creationData;\nproto.eraName = getEraName;\nproto.eraNarrow = getEraNarrow;\nproto.eraAbbr = getEraAbbr;\nproto.eraYear = getEraYear;\nproto.year = getSetYear;\nproto.isLeapYear = getIsLeapYear;\nproto.weekYear = getSetWeekYear;\nproto.isoWeekYear = getSetISOWeekYear;\nproto.quarter = proto.quarters = getSetQuarter;\nproto.month = getSetMonth;\nproto.daysInMonth = getDaysInMonth;\nproto.week = proto.weeks = getSetWeek;\nproto.isoWeek = proto.isoWeeks = getSetISOWeek;\nproto.weeksInYear = getWeeksInYear;\nproto.weeksInWeekYear = getWeeksInWeekYear;\nproto.isoWeeksInYear = getISOWeeksInYear;\nproto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\nproto.date = getSetDayOfMonth;\nproto.day = proto.days = getSetDayOfWeek;\nproto.weekday = getSetLocaleDayOfWeek;\nproto.isoWeekday = getSetISODayOfWeek;\nproto.dayOfYear = getSetDayOfYear;\nproto.hour = proto.hours = getSetHour;\nproto.minute = proto.minutes = getSetMinute;\nproto.second = proto.seconds = getSetSecond;\nproto.millisecond = proto.milliseconds = getSetMillisecond;\nproto.utcOffset = getSetOffset;\nproto.utc = setOffsetToUTC;\nproto.local = setOffsetToLocal;\nproto.parseZone = setOffsetToParsedOffset;\nproto.hasAlignedHourOffset = hasAlignedHourOffset;\nproto.isDST = isDaylightSavingTime;\nproto.isLocal = isLocal;\nproto.isUtcOffset = isUtcOffset;\nproto.isUtc = isUtc;\nproto.isUTC = isUtc;\nproto.zoneAbbr = getZoneAbbr;\nproto.zoneName = getZoneName;\nproto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n);\nproto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n);\nproto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n);\nproto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n);\nproto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n);\n\nfunction createUnix(input) {\n return createLocal(input * 1000);\n}\n\nfunction createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n}\n\nfunction preParsePostFormat(string) {\n return string;\n}\n\nvar proto$1 = Locale.prototype;\n\nproto$1.calendar = calendar;\nproto$1.longDateFormat = longDateFormat;\nproto$1.invalidDate = invalidDate;\nproto$1.ordinal = ordinal;\nproto$1.preparse = preParsePostFormat;\nproto$1.postformat = preParsePostFormat;\nproto$1.relativeTime = relativeTime;\nproto$1.pastFuture = pastFuture;\nproto$1.set = set;\nproto$1.eras = localeEras;\nproto$1.erasParse = localeErasParse;\nproto$1.erasConvertYear = localeErasConvertYear;\nproto$1.erasAbbrRegex = erasAbbrRegex;\nproto$1.erasNameRegex = erasNameRegex;\nproto$1.erasNarrowRegex = erasNarrowRegex;\n\nproto$1.months = localeMonths;\nproto$1.monthsShort = localeMonthsShort;\nproto$1.monthsParse = localeMonthsParse;\nproto$1.monthsRegex = monthsRegex;\nproto$1.monthsShortRegex = monthsShortRegex;\nproto$1.week = localeWeek;\nproto$1.firstDayOfYear = localeFirstDayOfYear;\nproto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\nproto$1.weekdays = localeWeekdays;\nproto$1.weekdaysMin = localeWeekdaysMin;\nproto$1.weekdaysShort = localeWeekdaysShort;\nproto$1.weekdaysParse = localeWeekdaysParse;\n\nproto$1.weekdaysRegex = weekdaysRegex;\nproto$1.weekdaysShortRegex = weekdaysShortRegex;\nproto$1.weekdaysMinRegex = weekdaysMinRegex;\n\nproto$1.isPM = localeIsPM;\nproto$1.meridiem = localeMeridiem;\n\nfunction get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n}\n\nfunction listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n}\n\n// ()\n// (5)\n// (fmt, 5)\n// (fmt)\n// (true)\n// (true, 5)\n// (true, fmt, 5)\n// (true, fmt)\nfunction listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n}\n\nfunction listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n}\n\nfunction listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n}\n\nfunction listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n}\n\nfunction listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n}\n\nfunction listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n}\n\ngetSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n});\n\n// Side effect imports\n\nhooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n);\nhooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n);\n\nvar mathAbs = Math.abs;\n\nfunction abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n}\n\nfunction addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n}\n\n// supports only 2.0-style add(1, 's') or add(duration)\nfunction add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n}\n\n// supports only 2.0-style subtract(1, 's') or subtract(duration)\nfunction subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n}\n\nfunction absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n}\n\nfunction bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n}\n\nfunction daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n}\n\nfunction monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n}\n\nfunction as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n}\n\n// TODO: Use this.as('ms')?\nfunction valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n}\n\nfunction makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n}\n\nvar asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\nfunction clone$1() {\n return createDuration(this);\n}\n\nfunction get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n}\n\nfunction makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n}\n\nvar milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\nfunction weeks() {\n return absFloor(this.days() / 7);\n}\n\nvar round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\nfunction substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n}\n\nfunction relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n}\n\n// This function allows you to set the rounding function for relative time strings\nfunction getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n}\n\n// This function allows you to set a threshold for relative time strings\nfunction getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n}\n\nfunction humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n}\n\nvar abs$1 = Math.abs;\n\nfunction sign(x) {\n return (x > 0) - (x < 0) || +x;\n}\n\nfunction toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n}\n\nvar proto$2 = Duration.prototype;\n\nproto$2.isValid = isValid$1;\nproto$2.abs = abs;\nproto$2.add = add$1;\nproto$2.subtract = subtract$1;\nproto$2.as = as;\nproto$2.asMilliseconds = asMilliseconds;\nproto$2.asSeconds = asSeconds;\nproto$2.asMinutes = asMinutes;\nproto$2.asHours = asHours;\nproto$2.asDays = asDays;\nproto$2.asWeeks = asWeeks;\nproto$2.asMonths = asMonths;\nproto$2.asQuarters = asQuarters;\nproto$2.asYears = asYears;\nproto$2.valueOf = valueOf$1;\nproto$2._bubble = bubble;\nproto$2.clone = clone$1;\nproto$2.get = get$2;\nproto$2.milliseconds = milliseconds;\nproto$2.seconds = seconds;\nproto$2.minutes = minutes;\nproto$2.hours = hours;\nproto$2.days = days;\nproto$2.weeks = weeks;\nproto$2.months = months;\nproto$2.years = years;\nproto$2.humanize = humanize;\nproto$2.toISOString = toISOString$1;\nproto$2.toString = toISOString$1;\nproto$2.toJSON = toISOString$1;\nproto$2.locale = locale;\nproto$2.localeData = localeData;\n\nproto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n);\nproto$2.lang = lang;\n\n// FORMATTING\n\naddFormatToken('X', 0, 0, 'unix');\naddFormatToken('x', 0, 0, 'valueOf');\n\n// PARSING\n\naddRegexToken('x', matchSigned);\naddRegexToken('X', matchTimestamp);\naddParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n});\naddParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n});\n\n//! moment.js\n\nhooks.version = '2.29.4';\n\nsetHookCallback(createLocal);\n\nhooks.fn = proto;\nhooks.min = min;\nhooks.max = max;\nhooks.now = now;\nhooks.utc = createUTC;\nhooks.unix = createUnix;\nhooks.months = listMonths;\nhooks.isDate = isDate;\nhooks.locale = getSetGlobalLocale;\nhooks.invalid = createInvalid;\nhooks.duration = createDuration;\nhooks.isMoment = isMoment;\nhooks.weekdays = listWeekdays;\nhooks.parseZone = createInZone;\nhooks.localeData = getLocale;\nhooks.isDuration = isDuration;\nhooks.monthsShort = listMonthsShort;\nhooks.weekdaysMin = listWeekdaysMin;\nhooks.defineLocale = defineLocale;\nhooks.updateLocale = updateLocale;\nhooks.locales = listLocales;\nhooks.weekdaysShort = listWeekdaysShort;\nhooks.normalizeUnits = normalizeUnits;\nhooks.relativeTimeRounding = getSetRelativeTimeRounding;\nhooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\nhooks.calendarFormat = getCalendarFormat;\nhooks.prototype = proto;\n\n// currently HTML5 input type only supports 24-hour formats\nhooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n};\n\nexport default hooks;\n","//! moment-timezone.js\n//! version : 0.5.43\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n\n(function (root, factory) {\n\t\"use strict\";\n\n\t/*global define*/\n\tif (typeof module === 'object' && module.exports) {\n\t\tmodule.exports = factory(require('moment')); // Node\n\t} else if (typeof define === 'function' && define.amd) {\n\t\tdefine(['moment'], factory); // AMD\n\t} else {\n\t\tfactory(root.moment); // Browser\n\t}\n}(this, function (moment) {\n\t\"use strict\";\n\n\t// Resolves es6 module loading issue\n\tif (moment.version === undefined && moment.default) {\n\t\tmoment = moment.default;\n\t}\n\n\t// Do not load moment-timezone a second time.\n\t// if (moment.tz !== undefined) {\n\t// \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n\t// \treturn moment;\n\t// }\n\n\tvar VERSION = \"0.5.43\",\n\t\tzones = {},\n\t\tlinks = {},\n\t\tcountries = {},\n\t\tnames = {},\n\t\tguesses = {},\n\t\tcachedGuess;\n\n\tif (!moment || typeof moment.version !== 'string') {\n\t\tlogError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\n\t}\n\n\tvar momentVersion = moment.version.split('.'),\n\t\tmajor = +momentVersion[0],\n\t\tminor = +momentVersion[1];\n\n\t// Moment.js version check\n\tif (major < 2 || (major === 2 && minor < 6)) {\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n\t}\n\n\t/************************************\n\t\tUnpacking\n\t************************************/\n\n\tfunction charCodeToInt(charCode) {\n\t\tif (charCode > 96) {\n\t\t\treturn charCode - 87;\n\t\t} else if (charCode > 64) {\n\t\t\treturn charCode - 29;\n\t\t}\n\t\treturn charCode - 48;\n\t}\n\n\tfunction unpackBase60(string) {\n\t\tvar i = 0,\n\t\t\tparts = string.split('.'),\n\t\t\twhole = parts[0],\n\t\t\tfractional = parts[1] || '',\n\t\t\tmultiplier = 1,\n\t\t\tnum,\n\t\t\tout = 0,\n\t\t\tsign = 1;\n\n\t\t// handle negative numbers\n\t\tif (string.charCodeAt(0) === 45) {\n\t\t\ti = 1;\n\t\t\tsign = -1;\n\t\t}\n\n\t\t// handle digits before the decimal\n\t\tfor (i; i < whole.length; i++) {\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\n\t\t\tout = 60 * out + num;\n\t\t}\n\n\t\t// handle digits after the decimal\n\t\tfor (i = 0; i < fractional.length; i++) {\n\t\t\tmultiplier = multiplier / 60;\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\n\t\t\tout += num * multiplier;\n\t\t}\n\n\t\treturn out * sign;\n\t}\n\n\tfunction arrayToInt (array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = unpackBase60(array[i]);\n\t\t}\n\t}\n\n\tfunction intToUntil (array, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\n\t\t}\n\n\t\tarray[length - 1] = Infinity;\n\t}\n\n\tfunction mapIndices (source, indices) {\n\t\tvar out = [], i;\n\n\t\tfor (i = 0; i < indices.length; i++) {\n\t\t\tout[i] = source[indices[i]];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction unpack (string) {\n\t\tvar data = string.split('|'),\n\t\t\toffsets = data[2].split(' '),\n\t\t\tindices = data[3].split(''),\n\t\t\tuntils = data[4].split(' ');\n\n\t\tarrayToInt(offsets);\n\t\tarrayToInt(indices);\n\t\tarrayToInt(untils);\n\n\t\tintToUntil(untils, indices.length);\n\n\t\treturn {\n\t\t\tname : data[0],\n\t\t\tabbrs : mapIndices(data[1].split(' '), indices),\n\t\t\toffsets : mapIndices(offsets, indices),\n\t\t\tuntils : untils,\n\t\t\tpopulation : data[5] | 0\n\t\t};\n\t}\n\n\t/************************************\n\t\tZone object\n\t************************************/\n\n\tfunction Zone (packedString) {\n\t\tif (packedString) {\n\t\t\tthis._set(unpack(packedString));\n\t\t}\n\t}\n\n\tZone.prototype = {\n\t\t_set : function (unpacked) {\n\t\t\tthis.name = unpacked.name;\n\t\t\tthis.abbrs = unpacked.abbrs;\n\t\t\tthis.untils = unpacked.untils;\n\t\t\tthis.offsets = unpacked.offsets;\n\t\t\tthis.population = unpacked.population;\n\t\t},\n\n\t\t_index : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\tuntils = this.untils,\n\t\t\t\ti;\n\n\t\t\tfor (i = 0; i < untils.length; i++) {\n\t\t\t\tif (target < untils[i]) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tcountries : function () {\n\t\t\tvar zone_name = this.name;\n\t\t\treturn Object.keys(countries).filter(function (country_code) {\n\t\t\t\treturn countries[country_code].zones.indexOf(zone_name) !== -1;\n\t\t\t});\n\t\t},\n\n\t\tparse : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\toffsets = this.offsets,\n\t\t\t\tuntils = this.untils,\n\t\t\t\tmax = untils.length - 1,\n\t\t\t\toffset, offsetNext, offsetPrev, i;\n\n\t\t\tfor (i = 0; i < max; i++) {\n\t\t\t\toffset = offsets[i];\n\t\t\t\toffsetNext = offsets[i + 1];\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\n\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\n\t\t\t\t\toffset = offsetNext;\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\n\t\t\t\t\toffset = offsetPrev;\n\t\t\t\t}\n\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\n\t\t\t\t\treturn offsets[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn offsets[max];\n\t\t},\n\n\t\tabbr : function (mom) {\n\t\t\treturn this.abbrs[this._index(mom)];\n\t\t},\n\n\t\toffset : function (mom) {\n\t\t\tlogError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t},\n\n\t\tutcOffset : function (mom) {\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t}\n\t};\n\n\t/************************************\n\t\tCountry object\n\t************************************/\n\n\tfunction Country (country_name, zone_names) {\n\t\tthis.name = country_name;\n\t\tthis.zones = zone_names;\n\t}\n\n\t/************************************\n\t\tCurrent Timezone\n\t************************************/\n\n\tfunction OffsetAt(at) {\n\t\tvar timeString = at.toTimeString();\n\t\tvar abbr = timeString.match(/\\([a-z ]+\\)/i);\n\t\tif (abbr && abbr[0]) {\n\t\t\t// 17:56:31 GMT-0600 (CST)\n\t\t\t// 17:56:31 GMT-0600 (Central Standard Time)\n\t\t\tabbr = abbr[0].match(/[A-Z]/g);\n\t\t\tabbr = abbr ? abbr.join('') : undefined;\n\t\t} else {\n\t\t\t// 17:56:31 CST\n\t\t\t// 17:56:31 GMT+0800 (台北標準時間)\n\t\t\tabbr = timeString.match(/[A-Z]{3,5}/g);\n\t\t\tabbr = abbr ? abbr[0] : undefined;\n\t\t}\n\n\t\tif (abbr === 'GMT') {\n\t\t\tabbr = undefined;\n\t\t}\n\n\t\tthis.at = +at;\n\t\tthis.abbr = abbr;\n\t\tthis.offset = at.getTimezoneOffset();\n\t}\n\n\tfunction ZoneScore(zone) {\n\t\tthis.zone = zone;\n\t\tthis.offsetScore = 0;\n\t\tthis.abbrScore = 0;\n\t}\n\n\tZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\n\t\tthis.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\n\t\tif (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\n\t\t\tthis.abbrScore++;\n\t\t}\n\t};\n\n\tfunction findChange(low, high) {\n\t\tvar mid, diff;\n\n\t\twhile ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\n\t\t\tmid = new OffsetAt(new Date(low.at + diff));\n\t\t\tif (mid.offset === low.offset) {\n\t\t\t\tlow = mid;\n\t\t\t} else {\n\t\t\t\thigh = mid;\n\t\t\t}\n\t\t}\n\n\t\treturn low;\n\t}\n\n\tfunction userOffsets() {\n\t\tvar startYear = new Date().getFullYear() - 2,\n\t\t\tlast = new OffsetAt(new Date(startYear, 0, 1)),\n\t\t\toffsets = [last],\n\t\t\tchange, next, i;\n\n\t\tfor (i = 1; i < 48; i++) {\n\t\t\tnext = new OffsetAt(new Date(startYear, i, 1));\n\t\t\tif (next.offset !== last.offset) {\n\t\t\t\tchange = findChange(last, next);\n\t\t\t\toffsets.push(change);\n\t\t\t\toffsets.push(new OffsetAt(new Date(change.at + 6e4)));\n\t\t\t}\n\t\t\tlast = next;\n\t\t}\n\n\t\tfor (i = 0; i < 4; i++) {\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\n\t\t}\n\n\t\treturn offsets;\n\t}\n\n\tfunction sortZoneScores (a, b) {\n\t\tif (a.offsetScore !== b.offsetScore) {\n\t\t\treturn a.offsetScore - b.offsetScore;\n\t\t}\n\t\tif (a.abbrScore !== b.abbrScore) {\n\t\t\treturn a.abbrScore - b.abbrScore;\n\t\t}\n\t\tif (a.zone.population !== b.zone.population) {\n\t\t\treturn b.zone.population - a.zone.population;\n\t\t}\n\t\treturn b.zone.name.localeCompare(a.zone.name);\n\t}\n\n\tfunction addToGuesses (name, offsets) {\n\t\tvar i, offset;\n\t\tarrayToInt(offsets);\n\t\tfor (i = 0; i < offsets.length; i++) {\n\t\t\toffset = offsets[i];\n\t\t\tguesses[offset] = guesses[offset] || {};\n\t\t\tguesses[offset][name] = true;\n\t\t}\n\t}\n\n\tfunction guessesForUserOffsets (offsets) {\n\t\tvar offsetsLength = offsets.length,\n\t\t\tfilteredGuesses = {},\n\t\t\tout = [],\n\t\t\ti, j, guessesOffset;\n\n\t\tfor (i = 0; i < offsetsLength; i++) {\n\t\t\tguessesOffset = guesses[offsets[i].offset] || {};\n\t\t\tfor (j in guessesOffset) {\n\t\t\t\tif (guessesOffset.hasOwnProperty(j)) {\n\t\t\t\t\tfilteredGuesses[j] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i in filteredGuesses) {\n\t\t\tif (filteredGuesses.hasOwnProperty(i)) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction rebuildGuess () {\n\n\t\t// use Intl API when available and returning valid time zone\n\t\ttry {\n\t\t\tvar intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t\t\tif (intlName && intlName.length > 3) {\n\t\t\t\tvar name = names[normalizeName(intlName)];\n\t\t\t\tif (name) {\n\t\t\t\t\treturn name;\n\t\t\t\t}\n\t\t\t\tlogError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Intl unavailable, fall back to manual guessing.\n\t\t}\n\n\t\tvar offsets = userOffsets(),\n\t\t\toffsetsLength = offsets.length,\n\t\t\tguesses = guessesForUserOffsets(offsets),\n\t\t\tzoneScores = [],\n\t\t\tzoneScore, i, j;\n\n\t\tfor (i = 0; i < guesses.length; i++) {\n\t\t\tzoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\n\t\t\tfor (j = 0; j < offsetsLength; j++) {\n\t\t\t\tzoneScore.scoreOffsetAt(offsets[j]);\n\t\t\t}\n\t\t\tzoneScores.push(zoneScore);\n\t\t}\n\n\t\tzoneScores.sort(sortZoneScores);\n\n\t\treturn zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\n\t}\n\n\tfunction guess (ignoreCache) {\n\t\tif (!cachedGuess || ignoreCache) {\n\t\t\tcachedGuess = rebuildGuess();\n\t\t}\n\t\treturn cachedGuess;\n\t}\n\n\t/************************************\n\t\tGlobal Methods\n\t************************************/\n\n\tfunction normalizeName (name) {\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\n\t}\n\n\tfunction addZone (packed) {\n\t\tvar i, name, split, normalized;\n\n\t\tif (typeof packed === \"string\") {\n\t\t\tpacked = [packed];\n\t\t}\n\n\t\tfor (i = 0; i < packed.length; i++) {\n\t\t\tsplit = packed[i].split('|');\n\t\t\tname = split[0];\n\t\t\tnormalized = normalizeName(name);\n\t\t\tzones[normalized] = packed[i];\n\t\t\tnames[normalized] = name;\n\t\t\taddToGuesses(normalized, split[2].split(' '));\n\t\t}\n\t}\n\n\tfunction getZone (name, caller) {\n\n\t\tname = normalizeName(name);\n\n\t\tvar zone = zones[name];\n\t\tvar link;\n\n\t\tif (zone instanceof Zone) {\n\t\t\treturn zone;\n\t\t}\n\n\t\tif (typeof zone === 'string') {\n\t\t\tzone = new Zone(zone);\n\t\t\tzones[name] = zone;\n\t\t\treturn zone;\n\t\t}\n\n\t\t// Pass getZone to prevent recursion more than 1 level deep\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n\t\t\tzone = zones[name] = new Zone();\n\t\t\tzone._set(link);\n\t\t\tzone.name = names[name];\n\t\t\treturn zone;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction getNames () {\n\t\tvar i, out = [];\n\n\t\tfor (i in names) {\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out.sort();\n\t}\n\n\tfunction getCountryNames () {\n\t\treturn Object.keys(countries);\n\t}\n\n\tfunction addLink (aliases) {\n\t\tvar i, alias, normal0, normal1;\n\n\t\tif (typeof aliases === \"string\") {\n\t\t\taliases = [aliases];\n\t\t}\n\n\t\tfor (i = 0; i < aliases.length; i++) {\n\t\t\talias = aliases[i].split('|');\n\n\t\t\tnormal0 = normalizeName(alias[0]);\n\t\t\tnormal1 = normalizeName(alias[1]);\n\n\t\t\tlinks[normal0] = normal1;\n\t\t\tnames[normal0] = alias[0];\n\n\t\t\tlinks[normal1] = normal0;\n\t\t\tnames[normal1] = alias[1];\n\t\t}\n\t}\n\n\tfunction addCountries (data) {\n\t\tvar i, country_code, country_zones, split;\n\t\tif (!data || !data.length) return;\n\t\tfor (i = 0; i < data.length; i++) {\n\t\t\tsplit = data[i].split('|');\n\t\t\tcountry_code = split[0].toUpperCase();\n\t\t\tcountry_zones = split[1].split(' ');\n\t\t\tcountries[country_code] = new Country(\n\t\t\t\tcountry_code,\n\t\t\t\tcountry_zones\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction getCountry (name) {\n\t\tname = name.toUpperCase();\n\t\treturn countries[name] || null;\n\t}\n\n\tfunction zonesForCountry(country, with_offset) {\n\t\tcountry = getCountry(country);\n\n\t\tif (!country) return null;\n\n\t\tvar zones = country.zones.sort();\n\n\t\tif (with_offset) {\n\t\t\treturn zones.map(function (zone_name) {\n\t\t\t\tvar zone = getZone(zone_name);\n\t\t\t\treturn {\n\t\t\t\t\tname: zone_name,\n\t\t\t\t\toffset: zone.utcOffset(new Date())\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\treturn zones;\n\t}\n\n\tfunction loadData (data) {\n\t\taddZone(data.zones);\n\t\taddLink(data.links);\n\t\taddCountries(data.countries);\n\t\ttz.dataVersion = data.version;\n\t}\n\n\tfunction zoneExists (name) {\n\t\tif (!zoneExists.didShowError) {\n\t\t\tzoneExists.didShowError = true;\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n\t\t}\n\t\treturn !!getZone(name);\n\t}\n\n\tfunction needsOffset (m) {\n\t\tvar isUnixTimestamp = (m._f === 'X' || m._f === 'x');\n\t\treturn !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\n\t}\n\n\tfunction logError (message) {\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t\t\tconsole.error(message);\n\t\t}\n\t}\n\n\t/************************************\n\t\tmoment.tz namespace\n\t************************************/\n\n\tfunction tz (input) {\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\n\t\t\tname = arguments[arguments.length - 1],\n\t\t\tzone = getZone(name),\n\t\t\tout = moment.utc.apply(null, args);\n\n\t\tif (zone && !moment.isMoment(input) && needsOffset(out)) {\n\t\t\tout.add(zone.parse(out), 'minutes');\n\t\t}\n\n\t\tout.tz(name);\n\n\t\treturn out;\n\t}\n\n\ttz.version = VERSION;\n\ttz.dataVersion = '';\n\ttz._zones = zones;\n\ttz._links = links;\n\ttz._names = names;\n\ttz._countries\t= countries;\n\ttz.add = addZone;\n\ttz.link = addLink;\n\ttz.load = loadData;\n\ttz.zone = getZone;\n\ttz.zoneExists = zoneExists; // deprecated in 0.1.0\n\ttz.guess = guess;\n\ttz.names = getNames;\n\ttz.Zone = Zone;\n\ttz.unpack = unpack;\n\ttz.unpackBase60 = unpackBase60;\n\ttz.needsOffset = needsOffset;\n\ttz.moveInvalidForward = true;\n\ttz.moveAmbiguousForward = false;\n\ttz.countries = getCountryNames;\n\ttz.zonesForCountry = zonesForCountry;\n\n\t/************************************\n\t\tInterface with Moment.js\n\t************************************/\n\n\tvar fn = moment.fn;\n\n\tmoment.tz = tz;\n\n\tmoment.defaultZone = null;\n\n\tmoment.updateOffset = function (mom, keepTime) {\n\t\tvar zone = moment.defaultZone,\n\t\t\toffset;\n\n\t\tif (mom._z === undefined) {\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC) {\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\n\t\t\t}\n\t\t\tmom._z = zone;\n\t\t}\n\t\tif (mom._z) {\n\t\t\toffset = mom._z.utcOffset(mom);\n\t\t\tif (Math.abs(offset) < 16) {\n\t\t\t\toffset = offset / 60;\n\t\t\t}\n\t\t\tif (mom.utcOffset !== undefined) {\n\t\t\t\tvar z = mom._z;\n\t\t\t\tmom.utcOffset(-offset, keepTime);\n\t\t\t\tmom._z = z;\n\t\t\t} else {\n\t\t\t\tmom.zone(offset, keepTime);\n\t\t\t}\n\t\t}\n\t};\n\n\tfn.tz = function (name, keepTime) {\n\t\tif (name) {\n\t\t\tif (typeof name !== 'string') {\n\t\t\t\tthrow new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\n\t\t\t}\n\t\t\tthis._z = getZone(name);\n\t\t\tif (this._z) {\n\t\t\t\tmoment.updateOffset(this, keepTime);\n\t\t\t} else {\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif (this._z) { return this._z.name; }\n\t};\n\n\tfunction abbrWrap (old) {\n\t\treturn function () {\n\t\t\tif (this._z) { return this._z.abbr(this); }\n\t\t\treturn old.call(this);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap (old) {\n\t\treturn function () {\n\t\t\tthis._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap2 (old) {\n\t\treturn function () {\n\t\t\tif (arguments.length > 0) this._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfn.zoneName = abbrWrap(fn.zoneName);\n\tfn.zoneAbbr = abbrWrap(fn.zoneAbbr);\n\tfn.utc = resetZoneWrap(fn.utc);\n\tfn.local = resetZoneWrap(fn.local);\n\tfn.utcOffset = resetZoneWrap2(fn.utcOffset);\n\n\tmoment.tz.setDefault = function(name) {\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n\t\t}\n\t\tmoment.defaultZone = name ? getZone(name) : null;\n\t\treturn moment;\n\t};\n\n\t// Cloning a moment should include the _z property.\n\tvar momentProperties = moment.momentProperties;\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n\t\t// moment 2.8.1+\n\t\tmomentProperties.push('_z');\n\t\tmomentProperties.push('_a');\n\t} else if (momentProperties) {\n\t\t// moment 2.7.0\n\t\tmomentProperties._z = null;\n\t}\n\n\t// INJECT DATA\n\n\treturn moment;\n}));\n","var moment = module.exports = require(\"./moment-timezone\");\nmoment.tz.load(require('./data/packed/latest.json'));\n","\nimport * as d3 from \"d3\"\nimport Vue, { PropType } from \"vue\"\nimport { D3ZoomEvent, Axis, ZoomBehavior } from \"d3\"\nimport { defaultAxesConfig } from \"@/components/ETimeline.config\"\nimport {\n TimelineAxesConfig,\n TimelineAxis,\n TimelineTicksConfig,\n Timestamp,\n} from \"@/types\"\nimport { ResizeObserverDirective } from \"@/directives\"\nimport moment from \"moment-timezone\"\n\nexport type TimelineEvent =\n | {\n timestamp: string | Date\n [key: string]: any\n }\n | {\n startDate: string | Date\n endDate: string | Date\n [key: string]: any\n }\n\nexport type TimelineEventsGroup = {\n label: string\n color: string\n events: Array<TimelineEvent>\n}\n\nexport type TimelineEventsByType = {\n [eventsType: string]: TimelineEventsGroup\n}\n\nconst classes = {\n eventGroup: \"event-group\",\n eventGroupBg: \"event-group-bg\",\n labelBg: \"label-bg\",\n labelBgFill: \"label-bg-fill\",\n labelText: \"label-text\",\n xAxis: \"x-axis\",\n selectedTimestampCursor: \"selected-timestamp-cursor\",\n}\n\nexport default Vue.extend({\n name: \"ETimeline\",\n directives: {\n resizeObserver: ResizeObserverDirective,\n },\n props: {\n eventsGroups: {\n type: Object as PropType<TimelineEventsByType>,\n default: () => ({}),\n },\n xAxesConfig: {\n type: Object as PropType<TimelineAxesConfig>,\n default: () => defaultAxesConfig,\n },\n dark: {\n type: Boolean,\n default: false,\n },\n startDate: {\n type: String,\n default: undefined,\n },\n endDate: {\n type: String,\n default: undefined,\n },\n selectedTimestamp: {\n type: String,\n default: undefined,\n },\n showEventTooltip: {\n type: Boolean,\n default: true,\n },\n disableZoom: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n tooltip: null as unknown as HTMLElement,\n cursor: null as unknown as HTMLElement,\n timeline: null as unknown as HTMLElement,\n selectedTimestampCursor: null as unknown as HTMLElement,\n svg: null as unknown as d3.Selection<SVGSVGElement, any, any, any>,\n axesContainer: null as unknown as d3.Selection<\n SVGGElement,\n any,\n any,\n any\n >,\n xAxes: {} as unknown as Record<TimelineAxis, Axis<Date>>,\n timeScale: null as unknown as d3.ScaleTime<any, any, unknown>,\n initialTimeScale: null as unknown as d3.ScaleTime<any, any, unknown>,\n currentTimeScaleDensity: null as unknown as number,\n zoomBehavior: null as unknown as ZoomBehavior<SVGSVGElement, unknown>,\n isMouseDown: false,\n axisHeight: 22,\n eventGroupHeight: 18,\n eventGroupPadding: 0,\n isHoveringEvent: false,\n hoveredEvent: null as unknown as TimelineEvent,\n isHoveringTimeline: false,\n hoveredTimestamp: null as unknown as string,\n eventTooltipStyle: {},\n hoveredEventType: null as unknown as string,\n utcOffset: 0,\n }\n },\n computed: {\n classes() {\n return {\n wrapper: this.dark\n ? \"e-border-gray-700 e-timeline--dark\"\n : \"e-border-gray-300\",\n background: this.dark ? \"e-bg-gray-900\" : \"e-bg-gray-50\",\n tooltipSlot: this.dark\n ? \"e-bg-gray-900 e-text-white e-border-gray-700\"\n : \"e-bg-gray-100 e-text-gray-700 e-border-gray-300\",\n eventTooltipSlot: this.dark\n ? \"e-bg-gray-900 e-text-white e-border-gray-700\"\n : \"e-bg-gray-100 e-text-gray-700 e-border-gray-300\",\n }\n },\n labelRectWidth(): number {\n const eventsGroups = Object.values(\n this.eventsGroups\n ) as TimelineEventsGroup[]\n const maxLabelLength = eventsGroups.reduce((acc, eventsGroup) => {\n return Math.max(acc, eventsGroup.label?.length)\n }, 0)\n\n return maxLabelLength * 7.5 + 5\n },\n combinedXAxesHeight(): number {\n const axesCount = Object.keys(this.xAxesConfig).length - 1\n\n return this.axisHeight * axesCount\n },\n timelineHeight(): number {\n const eventsGroupsCount = Object.keys(this.eventsGroups).length\n const padding = this.eventGroupPadding * (eventsGroupsCount - 1)\n const eventsGouprsHeight = this.eventGroupHeight * eventsGroupsCount\n\n return this.combinedXAxesHeight + eventsGouprsHeight + padding\n },\n allEventsSorted(): TimelineEvent[] {\n const flattenedEvents = (\n Object.values(this.eventsGroups) as TimelineEventsGroup[]\n )\n .map((e: TimelineEventsGroup) => e.events)\n .flat()\n\n return flattenedEvents.sort((a, b) =>\n new Date(a.timestamp || a.startDate) >\n new Date(b.timestamp || b.startDate)\n ? 1\n : -1\n )\n },\n oldestEvent(): TimelineEvent {\n let oldestEvent\n if (this.allEventsSorted.length > 1) {\n oldestEvent = this.allEventsSorted[0]\n } else {\n const DAY = 86_400_000\n const yesterday = new Date(new Date().getTime() - DAY)\n\n oldestEvent = {\n timestamp: yesterday,\n }\n }\n\n return oldestEvent\n },\n latestEvent(): TimelineEvent {\n let latestEvent\n if (this.allEventsSorted.length > 1) {\n latestEvent = this.allEventsSorted[this.allEventsSorted.length - 1]\n } else {\n const defaultMaxDate = new Date()\n\n latestEvent = {\n timestamp: defaultMaxDate,\n }\n }\n\n return latestEvent\n },\n },\n watch: {\n dark() {\n this.onDarkModeChange()\n },\n selectedTimestamp() {\n this.repositionSelectedTimestampCursor()\n },\n startDate() {\n this.zoomToStartAndEndDates()\n },\n endDate() {\n this.zoomToStartAndEndDates()\n },\n },\n mounted() {\n this.initTimeline()\n },\n beforeDestroy() {\n document.removeEventListener(\"mouseup\", this.handleDocumentMouseUp)\n },\n methods: {\n tzStringToDate(timestamp: Timestamp): Date {\n return moment(timestamp).add(this.utcOffset, \"minutes\").toDate()\n },\n dateToTzString(date: Date): string {\n const userUtcOffset = new Date(date).getTimezoneOffset()\n\n return moment(date)\n .add(userUtcOffset, \"minutes\")\n .utcOffset(this.utcOffset, true)\n .format()\n },\n getFormattedTimestamp(timestamp: Timestamp): string {\n return moment.parseZone(timestamp).format(\"YYYY-MM-DDTHH:mm:ss\")\n },\n handleResize({ contentRect }: ResizeObserverEntry) {\n if (this.svg) {\n this.svg.attr(\"width\", contentRect.width)\n }\n },\n initTimeline() {\n this.initRefs()\n\n if (!this.timeline) {\n setTimeout(this.initTimeline, 500)\n\n return\n }\n\n this.initSvg()\n this.initUtcOffset()\n this.initTimeScale()\n this.initXAxes()\n this.initZoomBehavior()\n this.drawEventsGroups()\n this.initSelectedTimestampCursor()\n this.registerEventsListeners()\n },\n initRefs() {\n this.tooltip = this.$refs.tooltip as HTMLElement\n this.cursor = this.$refs.cursor as HTMLElement\n this.timeline = this.$refs.timelineContainer as HTMLElement\n this.selectedTimestampCursor = this.$refs.selectedTimestamp as HTMLElement\n },\n initSvg() {\n this.svg = d3\n .select(this.timeline)\n .append(\"svg\")\n .attr(\"width\", this.timeline.offsetWidth)\n .attr(\"height\", this.timelineHeight) as d3.Selection<\n SVGSVGElement,\n any,\n any,\n any\n >\n },\n initUtcOffset() {\n const sampleTimestamp =\n this.startDate ||\n this.oldestEvent.timestamp ||\n this.oldestEvent.startDate\n this.utcOffset = moment.parseZone(sampleTimestamp).utcOffset()\n },\n initTimeScale() {\n const startDate =\n this.startDate ||\n this.oldestEvent.timestamp ||\n this.oldestEvent.startDate\n const endDate =\n this.endDate || this.latestEvent.timestamp || this.latestEvent.endDate\n\n this.timeScale = d3\n .scaleTime()\n .domain([this.tzStringToDate(startDate), this.tzStringToDate(endDate)])\n .range([0, this.timeline.offsetWidth])\n\n this.initialTimeScale = this.timeScale.copy()\n this.updateCurrentTimeScaleDensity()\n },\n initXAxes() {\n let i = 0\n const padding = 5\n for (const axisName in this.xAxesConfig) {\n const axis = this.createAxis(axisName as TimelineAxis)\n this.xAxes[axisName as TimelineAxis] = axis\n this.svg\n .append(\"g\")\n .classed(classes.xAxis, true)\n .classed(`${classes.xAxis}-${axisName}`, true)\n .attr(\"transform\", `translate(0, ${i || padding})`)\n .call(axis)\n\n this.translateTicksText(axisName)\n i += this.axisHeight\n }\n },\n createAxis(axisName: TimelineAxis) {\n const axis = this.xAxesConfig[axisName as TimelineAxis]\n const config = this.getAxisTicksConfig(axis)\n\n return d3\n .axisBottom<Date>(this.timeScale)\n .ticks(config.interval)\n .tickFormat((d) => config.formatFn(d))\n .tickSizeOuter(0)\n .tickSizeInner(this.timelineHeight)\n },\n getAxisTicksConfig(configs: TimelineTicksConfig[]) {\n const { interval, format } = configs.find(\n (config) =>\n config.precision >= this.currentTimeScaleDensity && config.interval\n ) as TimelineTicksConfig\n\n const formatFn = (d: Date): string => {\n return typeof format === \"function\"\n ? format(d)\n : d3.timeFormat(format)(d)\n }\n\n return {\n formatFn,\n interval,\n }\n },\n initZoomBehavior() {\n if (this.disableZoom) {\n return\n }\n\n this.zoomBehavior = d3\n .zoom<SVGSVGElement, unknown>()\n .on(\"zoom\", this.handleZoom)\n .scaleExtent([0.25, 750_000])\n\n this.svg.call(this.zoomBehavior)\n },\n initSelectedTimestampCursor() {\n this.svg\n .append(\"line\")\n .attr(\"class\", classes.selectedTimestampCursor)\n .style(\"stroke\", \"red\")\n .style(\"stroke-width\", \"1px\")\n .style(\"opacity\", 0)\n .attr(\"x1\", 0)\n .attr(\"x2\", 0)\n .attr(\"y1\", 0)\n .attr(\"y2\", this.timelineHeight)\n this.repositionSelectedTimestampCursor()\n },\n repositionSelectedTimestampCursor() {\n const cursor = this.svg.select(`.${classes.selectedTimestampCursor}`)\n if (!this.selectedTimestamp) {\n cursor.style(\"opacity\", 0)\n\n return\n }\n const timestamp = this.tzStringToDate(this.selectedTimestamp)\n const cursorX = this.timeScale(timestamp)\n if (!isNaN(cursorX)) {\n cursor.attr(\"x1\", cursorX).attr(\"x2\", cursorX).style(\"opacity\", 0.5)\n } else {\n cursor.style(\"opacity\", 0)\n }\n },\n updateCurrentTimeScaleDensity() {\n const timeAtPixel0 = this.timeScale.invert(0).getTime()\n const timeAtPixel1 = this.timeScale.invert(1).getTime()\n const HOUR = 3_600_000\n\n this.currentTimeScaleDensity = (timeAtPixel1 - timeAtPixel0) / HOUR\n },\n registerEventsListeners() {\n document.addEventListener(\"mouseup\", this.handleDocumentMouseUp)\n this.svg.on(\"mousedown\", this.handleMouseDown)\n this.svg.on(\"mousemove\", this.handleMouseMove)\n this.svg.on(\"click\", this.handleClick)\n this.svg.on(\"mouseleave\", this.handleMouseLeave)\n },\n handleMouseDown() {\n this.isMouseDown = true\n },\n handleDocumentMouseUp() {\n this.isMouseDown = false\n },\n handleMouseLeave() {\n this.isHoveringTimeline = false\n },\n handleMouseMove(event: MouseEvent) {\n if (this.isMouseDown) {\n return\n }\n const mouseX = event.offsetX\n const date = this.timeScale.invert(mouseX)\n this.hoveredTimestamp = this.dateToTzString(date)\n this.isHoveringTimeline = true\n this.cursor.style.left = mouseX + \"px\"\n\n if (!this.tooltip) {\n return\n }\n\n this.eventTooltipStyle = {\n left: `${mouseX}px`,\n bottom: `${this.timeline.getBoundingClientRect().height}px`,\n }\n this.repositionSelectedTimestampCursor()\n },\n handleClick(event: MouseEvent) {\n const mouseX = event.offsetX\n const date = this.timeScale.invert(mouseX)\n const formattedDateTz = this.dateToTzString(date)\n\n this.$emit(\"date-clicked\", formattedDateTz)\n },\n handleEventMouseOver(\n _event: MouseEvent,\n eventData: TimelineEvent,\n eventType: string\n ) {\n this.hoveredEvent = eventData\n this.hoveredEventType = eventType\n this.isHoveringEvent = true\n this.$emit(\"event-mouseover\", { eventData, eventType })\n },\n handleEventMouseOut() {\n this.isHoveringEvent = false\n this.hoveredEvent = null as unknown as TimelineEvent\n this.$emit(\"event-mouseout\")\n },\n handleZoom(event: D3ZoomEvent<SVGSVGElement, any>) {\n const newScale = event.transform.rescaleX(this.initialTimeScale)\n this.timeScale.domain(newScale.domain())\n this.updateCurrentTimeScaleDensity()\n\n for (const axisName in this.xAxes) {\n this.rescaleAxis(axisName, newScale)\n this.translateTicksText(axisName)\n }\n this.updateEventsRects()\n this.repositionSelectedTimestampCursor()\n },\n zoomToStartAndEndDates() {\n const startDate =\n this.startDate ||\n this.oldestEvent.timestamp ||\n this.oldestEvent.startDate\n const endDate =\n this.endDate || this.latestEvent.timestamp || this.latestEvent.endDate\n\n const startTime = this.tzStringToDate(startDate)\n const endTime = this.tzStringToDate(endDate)\n const timelineWidth = this.timeline.offsetWidth\n const newDomain = [startTime, endTime]\n const newRange = [0, timelineWidth]\n\n this.timeScale = d3.scaleTime().domain(newDomain).range(newRange)\n this.initialTimeScale = this.timeScale.copy()\n\n this.updateCurrentTimeScaleDensity()\n for (const axisName in this.xAxes) {\n this.rescaleAxis(axisName, this.timeScale)\n this.translateTicksText(axisName)\n }\n this.updateEventsRects()\n this.repositionSelectedTimestampCursor()\n },\n rescaleAxis(axisName: string, newScale: d3.ScaleTime<any, any, unknown>) {\n const axis: Axis<Date> = this.xAxes[axisName as TimelineAxis]\n const ticksConfig = this.getAxisTicksConfig(\n this.xAxesConfig[axisName as TimelineAxis]\n )\n axis\n .scale(newScale)\n .ticks(ticksConfig.interval)\n .tickFormat((d) => ticksConfig.formatFn(d))\n .tickSizeOuter(0)\n this.svg.select<SVGGElement>(`.${classes.xAxis}-${axisName}`).call(axis)\n },\n translateTicksText(axisName: string) {\n this.svg\n .select<SVGGElement>(`.${classes.xAxis}-${axisName}`)\n .selectAll(\".tick text\")\n .each(function () {\n let textElement = d3.select(this as SVGTextElement)\n let textBBox = (textElement.node() as SVGGraphicsElement).getBBox()\n textElement\n .attr(\"x\", textBBox.height / 2)\n .attr(\"y\", 0)\n .style(\"text-anchor\", \"start\")\n })\n },\n updateEventsRects() {\n const rectsSelector = `.${classes.eventGroup} > rect:not(.${classes.labelBg}):not(.${classes.labelBgFill}):not(.${classes.eventGroupBg})`\n this.svg\n .selectAll<SVGRectElement, TimelineEvent>(rectsSelector)\n .attr(\"x\", this.getEventRectX)\n .attr(\"width\", this.getEventRectWidth)\n .attr(\"height\", this.eventGroupHeight)\n },\n getEventRectX(d: TimelineEvent) {\n return this.timeScale(this.tzStringToDate(d.startDate || d.timestamp))\n },\n getEventRectWidth(d: TimelineEvent) {\n if (!d) {\n return 0\n }\n if (d.startDate && d.endDate) {\n const startTimestamp = new Date(d.startDate)\n const endTimestamp = new Date(d.endDate)\n const width =\n this.timeScale(endTimestamp) - this.timeScale(startTimestamp)\n\n return Math.max(width, 1)\n } else {\n const oneSecondWidth = 1 / (this.currentTimeScaleDensity * 3600)\n\n return Math.max(oneSecondWidth, 1)\n }\n },\n drawEventsGroups() {\n this.svg.selectAll(`g.${classes.eventGroup}`).remove()\n Object.entries(this.eventsGroups).forEach(\n ([type, eventsGroup], index) => {\n const { color, label, events } = eventsGroup as TimelineEventsGroup\n const padding = index === 0 ? 0 : this.eventGroupPadding\n const yPosition =\n index * (this.eventGroupHeight + padding) + this.combinedXAxesHeight\n const gElement = this.svg\n .append(\"g\")\n .attr(\"data-color\", color)\n .classed(classes.eventGroup, true)\n .classed(`${classes.eventGroup}-${type}`, true)\n\n this.drawBackground({\n color,\n gElement,\n yPosition,\n })\n\n this.drawEvents({\n events,\n color,\n gElement,\n yPosition,\n type,\n })\n\n this.drawTextLabel({\n color,\n label,\n gElement,\n yPosition,\n })\n }\n )\n },\n drawBackground({\n color,\n yPosition,\n gElement,\n }: {\n gElement: d3.Selection<SVGGElement, any, any, any>\n yPosition: number\n color: string\n }) {\n gElement\n .append(\"rect\")\n .attr(\"class\", classes.eventGroupBg)\n .attr(\"x\", 0)\n .attr(\"y\", yPosition)\n .attr(\"width\", this.timeline.offsetWidth)\n .attr(\"height\", this.eventGroupHeight)\n .attr(\"fill\", d3.color(color)!.toString())\n .style(\"opacity\", 0.1)\n },\n drawEvents({\n events,\n gElement,\n yPosition,\n color,\n type,\n }: {\n events: TimelineEvent[]\n gElement: d3.Selection<SVGGElement, any, any, any>\n yPosition: number\n color: string\n type: string\n }) {\n gElement\n .selectAll(\"rect\")\n .data(events)\n .enter()\n .append(\"rect\")\n .attr(\"x\", this.getEventRectX)\n .attr(\"y\", yPosition)\n .attr(\"ry\", 1.5)\n .attr(\"rx\", 1.5)\n .attr(\"width\", this.getEventRectWidth)\n .attr(\"height\", this.eventGroupHeight)\n .attr(\"stroke-width\", 5)\n .attr(\"cursor\", \"pointer\")\n .attr(\"stroke\", \"#0000\")\n .style(\"fill\", color)\n .on(\"mouseover\", (event, eventData) =>\n this.handleEventMouseOver(event, eventData, type)\n )\n .on(\"mouseout\", () => this.handleEventMouseOut())\n },\n drawTextLabel({\n gElement,\n yPosition,\n color,\n label,\n }: {\n gElement: d3.Selection<SVGGElement, any, any, any>\n yPosition: number\n color: string\n label: string\n }) {\n const bg = {\n x: -5,\n y: yPosition,\n w: this.labelRectWidth + 5,\n h: this.eventGroupHeight,\n radius: 3,\n }\n\n // Label rect background\n gElement\n .append(\"rect\")\n .attr(\"class\", classes.labelBg)\n .attr(\"x\", bg.x)\n .attr(\"y\", bg.y)\n .attr(\"width\", bg.w)\n .attr(\"height\", bg.h)\n .attr(\"rx\", bg.radius)\n .attr(\"ry\", bg.radius)\n .style(\"fill\", this.dark ? \"#131a29\" : \"white\")\n\n // Label rect fill\n gElement\n .append(\"rect\")\n .attr(\"class\", classes.labelBgFill)\n .attr(\"x\", bg.x)\n .attr(\"y\", bg.y)\n .attr(\"width\", bg.w)\n .attr(\"height\", bg.h)\n .attr(\"rx\", bg.radius)\n .attr(\"ry\", bg.radius)\n .style(\"fill\", this.getLabelBackgroundColor(color))\n .style(\"stroke\", this.getTextFillColor(color))\n .style(\"stroke-width\", 0.25)\n\n // Label text\n gElement\n .append(\"text\")\n .attr(\"class\", classes.labelText)\n .attr(\"x\", 5)\n .attr(\"y\", yPosition + this.eventGroupHeight / 2)\n .attr(\"dy\", \"0.35em\")\n .style(\"text-anchor\", \"start\")\n .style(\"font-size\", \"12px\")\n .style(\"font-weight\", 500)\n .style(\"stroke-linejoin\", \"round\")\n .style(\"paint-order\", \"stroke\")\n .style(\"fill\", this.getTextFillColor(color))\n .text(label)\n },\n getTextFillColor(baseColor: string) {\n return (\n this.dark\n ? d3.color(baseColor)?.brighter(1.5)\n : d3.color(baseColor)?.darker(2)\n )!.toString()\n },\n getLabelBackgroundColor(baseColor: string) {\n let color = d3.color(baseColor)\n color!.opacity = this.dark ? 0.2 : 0.5\n\n return color!.toString()\n },\n onDarkModeChange() {\n Object.entries(this.eventsGroups).forEach(([type, _eventsGroup]) => {\n const gElement = this.svg.select(`.${classes.eventGroup}-${type}`)\n\n const color = (gElement.node()! as HTMLElement).dataset.color\n gElement\n .select(`.${classes.labelBg}`)\n .style(\"fill\", this.dark ? \"black\" : \"white\")\n gElement\n .select(`.${classes.labelBgFill}`)\n .style(\"fill\", this.getLabelBackgroundColor(color as string))\n .style(\"stroke\", this.getTextFillColor(color as string))\n .style(\"stroke-width\", 0.25)\n gElement\n .select(`.${classes.labelText}`)\n .style(\"fill\", this.getTextFillColor(color as string))\n })\n },\n },\n})\n","// Components\nimport EAvatar from \"@/components/EAvatar.vue\"\nimport EBadge from \"@/components/EBadge.vue\"\nimport EIcon from \"@/components/EIcon.vue\"\nimport ESpinner from \"@/components/ESpinner.vue\"\nimport ERow from \"@/components/ERow.vue\"\nimport ECol from \"@/components/ECol.vue\"\nimport EVideoPlayer from \"@/components/EVideoPlayer.vue\"\nimport ETimeline from \"@/components/ETimeline.vue\"\n\n// Directives\nimport { DirectivesMap } from \"@/directives\"\n\nimport { VueConstructor } from \"vue\"\n\nexport const components = {\n EAvatar,\n EBadge,\n EIcon,\n ESpinner,\n ERow,\n ECol,\n EVideoPlayer,\n ETimeline,\n}\n\nexport default {\n install(Vue: VueConstructor) {\n // Register components\n Object.keys(components).forEach((name) => {\n // @ts-ignore\n Vue.component(name, components[name])\n })\n\n // Register directives\n DirectivesMap.forEach(({ name, definition }) => {\n Vue.directive(name, definition)\n })\n },\n}\n\nexport { EAvatar, EBadge, EIcon, ESpinner, ERow, ECol, EVideoPlayer, ETimeline }\n\nexport * from \"@/constants\"\n\nexport * from \"@/types\"\n\nexport * from \"@/utils\"\n\nexport * from \"@/directives\"\n"],"names":["Size","BaseColor","TimelineAxis","_sfc_main$7","Vue","colorClasses","sizeClasses","_sfc_main$6","Badge","exports","negateValue","value","sign","numericFunctions","fn","_default","pluginConfig","plugins","pluginName","x","create","picocolors_browserModule","_export","target","all","name","dim","_picocolors","_interop_require_default","require$$0","obj","alreadyShown","log","type","messages","key","message","input","_log","warn","version","from","to","defaults","sources","source","k","_target_hasOwnProperty","_target_hasOwnProperty1","toPath","path","openBrackets","closedBrackets","flagEnabled","issueFlagNotices","require$$1","featureFlags","config","flag","_config_future","_config_future_flag","_ref","_config_experimental","_config_experimental_flag","_ref1","experimentalFlagsEnabled","changes","s","normalizeConfig","_featureFlags","_interop_require_wildcard","_getRequireWildcardCache","nodeInterop","cacheBabelInterop","cacheNodeInterop","cache","newObj","hasPropertyDescriptor","desc","_purge_options","content","purge","safelist","blocklist","item","_config_prefix","extract","_config_purge","_config_content","_config_purge1","_config_purge_extract","_config_content1","_config_content_extract","_config_purge2","_config_purge_options","_config_content2","_config_content_options","extractors","defaultExtractor","extensions","extractor","extension","transform","_config_purge_transform","_config_content_transform","transformers","file","isPlainObject","prototype","cloneDeep","child","v","escapeCommas","className","parseColor","formatColor","_colorNames","HEX","SHORT_HEX","VALUE","SEP","ALPHA_SEP","CUSTOM_PROPERTY","RGB","HSL","loose","_match_","_match__toString","hex","_","r","g","b","a","_value_match","match","color","part","mode","alpha","hasAlpha","withAlphaValue","withAlphaVariable","_color","alphaValue","defaultValue","parsed","property","variable","properties","p","splitAtTopLevelOnly","separator","stack","parts","lastPos","isEscaped","idx","char","parseBoxShadowValue","formatBoxShadowValue","_splitAtTopLevelOnly","KEYWORDS","SPACE","LENGTH","shadow","result","seen","shadows","normalize","url","number","percentage","length","lineWidth","image","gradient","position","familyName","genericName","absoluteSize","relativeSize","_parseBoxShadowValue","require$$2","cssFunctions","isCSSFunction","placeholder","placeholderRe","isRoot","fullMatch","characterBefore","normalizeMathOperatorSpacing","vars","g1","lengthUnitsPattern","lineWidths","parsedShadows","parsedShadow","colors","images","gradientTypes","validPositions","positions","fonts","genericNames","absoluteSizes","relativeSizes","backgroundSize","_dataTypes","keywordValues","sizes","size","updateAllClasses","asValue","parseColorFormat","asColor","asLookupValue","typeMap","coerceValue","getMatchingTypes","_escapeCommas","_withAlphaVariable","_negateValue","require$$3","_validateFormalSyntax","require$$4","require$$5","selectors","updateClass","sel","resolveArbitraryValue","modifier","validate","isArbitraryValue","asNegativeValue","lookup","positiveValue","resolved","options","_options_values","splitUtilityModifier","slashIdx","oldValue","opacityValue","unwrapArbitraryModifier","tailwindConfig","_options_values1","_options_values2","_tailwindConfig_theme","_tailwindConfig_theme_opacity","_options_values_color","normalizedColor","guess","supportedTypes","splitAtFirst","delim","types","arbitraryValue","explicitType","matches","rawModifier","modifiersEnabled","utilityModifier","_options_modifiers","_options_modifiers_utilityModifier","configValue","toColorValue","maybeFunction","resolveConfig","_corePluginList","_configurePlugins","_colors","_defaults","_toPath","_normalizeConfig","require$$6","_isPlainObject","require$$7","_cloneDeep","require$$8","_pluginUtils","require$$9","require$$10","_toColorValue","require$$11","isFunction","mergeWith","customizer","merged","configUtils","scale","negativeScale","negativeValue","screens","breakpoints","valueToResolve","args","collectExtends","items","extend","mergedValue","extendValue","mergeThemes","themes","theme","mergeExtensionCustomizer","mergeExtensions","themeValue","resolveThemePath","utils","e","toPaths","pattern","prefix","newPath","resolveFunctionKeys","object","resolvePath","index","val","normalized","extractPluginConfigs","configs","allConfigs","_config_plugins","plugin","_plugin_config","resolveCorePlugins","corePluginConfigs","corePluginConfig","resolvePluginLists","pluginLists","pluginList","_t_theme","_c_plugins","t","c","config_full","getAllConfigs","_configfull","_config_presets","preset","features","experimentals","feature","_resolveConfig","_getAllConfigs","defaultConfigs","resolveConfig_1","colors_1","BrandColors","customColors","TailwindColors.white","TailwindColors.amber","TailwindColors.rose","TailwindColors.cyan","TailwindColors.lime","TailwindColors.sky","CustomColors","TailwindColors.slate","fullConfig","TextSizes","Colors","BadgeSizes","AvatarSizes","IconSizes","BadgeColors","EVENTS","_sfc_main$5","acc","iconClasses","_b","_a","_sfc_main$4","fill","animationDuration","_sfc_main$3","_sfc_main$2","prop","acceptUndefined","n","isFullScreen","makeFullScreen","element","resolve","exitFullScreen","leadingZeroFormatter","VIDEO_PLAYER_EVENTS","formatDuration","time","seconds","minutes","hours","_sfc_main$1","ESpinner","videoOptions","event","which","player","timelineContainer","playerRef","state","currentTime","percent","rect","duration","videoContainer","playPromise","tagName","getFormattedDay","d","day","d3","daySuffix","getFormattedDayNoEndOfMonth","getFormattedHour","getFormattedHourMinute","HH_MM","getFormattedMinuteSecond","getFormattedOverviewMinuteSecond","getFormattedOverviewHour","hour","month","getFormattedDayHourMinute","filterHourDivisibleBy","filterMinutesDivisibleBy","minute","filterMinutesSecondsDivisibleBy","second","Precision","defaultAxesConfig","format","_c","_d","_e","_f","_g","_h","dayOfMonth","daysInMonth","fifthOfMonth","quarterOfTheMonth","halfOfTheMonth","ResizeObserverDirective","el","binding","callback","observer","entries","DirectivesMap","hookCallback","hooks","setHookCallback","isArray","isObject","hasOwnProp","isObjectEmpty","isUndefined","isNumber","isDate","map","arr","res","i","arrLen","createUTC","locale","strict","createLocalOrUTC","defaultParsingFlags","getParsingFlags","m","some","fun","len","isValid","flags","parsedParts","isNowValid","createInvalid","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","Moment","isMoment","msg","deprecate","firstTime","arg","argLen","deprecations","deprecateSimple","set","mergeConfigs","parentConfig","childConfig","Locale","keys","defaultCalendar","calendar","mom","now","output","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","removeFormattingTokens","makeFormatFunction","array","formatMoment","expandFormat","replaceLongDateFormatTokens","defaultLongDateFormat","longDateFormat","formatUpper","tok","defaultInvalidDate","invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","defaultRelativeTime","relativeTime","withoutSuffix","string","isFuture","pastFuture","diff","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedInput","normalizedProp","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","u","isLeapYear","year","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","get","stringGet","stringSet","prioritized","prioritizedLen","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","regexes","addRegexToken","regex","strictRegex","isStrict","localeData","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","tokenLen","addWeekParseToken","addTimeToArrayFromToken","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","mod","indexOf","o","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","localeMonthsShort","handleStrictParse","monthName","ii","llc","localeMonthsParse","setMonth","getSetMonth","getDaysInMonth","monthsShortRegex","computeMonthsParse","monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","y","daysInYear","getSetYear","getIsLeapYear","createDate","h","M","ms","date","createUTCDate","firstWeekOffset","dow","doy","fwd","fwdlw","dayOfYearFromWeeks","week","weekday","localWeekday","weekOffset","dayOfYear","resYear","resDayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","parseIsoWeekday","shiftWeekdays","ws","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","weekdays","localeWeekdaysShort","localeWeekdaysMin","handleStrictParse$1","weekdayName","localeWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","weekdaysRegex","computeWeekdaysParse","weekdaysShortRegex","weekdaysMinRegex","minPieces","minp","shortp","longp","hFormat","kFormat","meridiem","lowercase","matchMeridiem","kInput","pos","pos1","pos2","localeIsPM","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","baseConfig","locales","localeFamilies","globalLocale","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","next","split","loadLocale","isLocaleNameSane","oldLocale","aliasedRequire","getSetGlobalLocale","values","data","getLocale","defineLocale","updateLocale","tmpLocale","listLocales","checkOverflow","overflow","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","rfc2822","obsOffsets","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","weekdayProvided","weekdayActual","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","currentDateArray","nowValue","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","w","weekYear","temp","weekdayOverflow","curWeek","createLocal","skipped","stringLength","totalParsedInputLength","era","meridiemFixWrap","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","configFromObject","dayOrDate","createFromConfig","prepareConfig","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","min","max","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","years","quarters","months","weeks","days","milliseconds","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","offsetFromString","chunkOffset","matcher","chunk","cloneWithOffset","model","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","createAdder","direction","period","dur","tmp","isAdding","updateOffset","add","subtract","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","formats","sod","clone","isAfter","localInput","isBefore","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","anchor2","adjust","toString","toISOString","keepOffset","utc","inspect","zone","datetime","suffix","inputString","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOf","startOfDate","endOf","valueOf","unix","toDate","toArray","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","localeEras","eras","localeErasParse","eraName","abbr","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","erasAbbrRegex","erasNarrowRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetSecond","getSetMillisecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","preParsePostFormat","proto$1","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","mathAbs","abs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","round","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","humanize","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","total","totalSign","ymSign","daysSign","hmsSign","proto$2","root","factory","module","this","moment","VERSION","zones","links","countries","guesses","cachedGuess","logError","momentVersion","major","minor","charCodeToInt","charCode","unpackBase60","whole","fractional","multiplier","num","arrayToInt","intToUntil","mapIndices","indices","unpack","offsets","untils","Zone","packedString","unpacked","timestamp","zone_name","country_code","offsetNext","offsetPrev","tz","Country","country_name","zone_names","OffsetAt","at","timeString","ZoneScore","offsetAt","findChange","low","high","mid","userOffsets","startYear","last","change","sortZoneScores","addToGuesses","guessesForUserOffsets","offsetsLength","filteredGuesses","guessesOffset","rebuildGuess","intlName","normalizeName","zoneScores","zoneScore","getZone","ignoreCache","addZone","packed","caller","link","getNames","getCountryNames","addLink","normal0","normal1","addCountries","country_zones","getCountry","zonesForCountry","country","with_offset","loadData","zoneExists","needsOffset","isUnixTimestamp","z","abbrWrap","old","resetZoneWrap","resetZoneWrap2","momentTimezoneModule","classes","_sfc_main","eventsGroup","axesCount","eventsGroupsCount","padding","eventsGouprsHeight","oldestEvent","latestEvent","userUtcOffset","contentRect","sampleTimestamp","startDate","endDate","axisName","axis","interval","cursor","cursorX","timeAtPixel0","timeAtPixel1","mouseX","formattedDateTz","_event","eventData","eventType","newScale","startTime","endTime","timelineWidth","newDomain","newRange","ticksConfig","textElement","textBBox","rectsSelector","startTimestamp","endTimestamp","width","oneSecondWidth","label","events","yPosition","gElement","bg","baseColor","_eventsGroup","components","EAvatar","EBadge","EIcon","ERow","ECol","EVideoPlayer","ETimeline","definition"],"mappings":"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A,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAA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","x_google_ignoreList":[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,42,43,44]}