{"version":3,"sources":["webpack:///./node_modules/vue-router/dist/vue-router.esm.js","webpack:///./node_modules/canvas-confetti/dist/confetti.module.mjs","webpack:///./node_modules/lodash/compact.js","webpack:///./node_modules/lodash/random.js","webpack:///./node_modules/date-fns/esm/getYear/index.js","webpack:///./node_modules/date-fns/esm/isToday/index.js","webpack:///./node_modules/lodash/_baseRandom.js"],"names":["extend","a","b","key","encodeReserveRE","encodeReserveReplacer","c","charCodeAt","toString","commaRE","encode","str","encodeURIComponent","replace","decode","decodeURIComponent","err","castQueryParamValue","value","String","parseQuery","query","res","trim","split","forEach","param","parts","shift","val","length","join","undefined","Array","isArray","push","stringifyQuery","obj","Object","keys","map","result","val2","filter","x","trailingSlashRE","createRoute","record","location","redirectedFrom","router","options","clone","e","route","name","meta","path","hash","params","fullPath","getFullPath","matched","formatMatch","freeze","START","unshift","parent","ref","_stringifyQuery","isSameRoute","onlyPath","isObjectEqual","aKeys","sort","bKeys","every","i","aVal","bVal","handleRouteEntered","instances","instance","cbs","enteredCbs","i$1","_isBeingDestroyed","View","functional","props","type","default","render","_","children","data","routerView","h","$createElement","$route","cache","_routerViewCache","depth","inactive","_routerRoot","vnodeData","$vnode","keepAlive","_directInactive","_inactive","$parent","routerViewDepth","cachedData","cachedComponent","component","configProps","fillPropsinData","components","registerRouteInstance","vm","current","hook","prepatch","vnode","componentInstance","init","propsToPass","config","resolveProps","attrs","resolvePath","relative","base","append","firstChar","charAt","stack","pop","segments","segment","cleanPath","isarray","arr","prototype","call","pathToRegexp_1","pathToRegexp","parse_1","parse","compile_1","tokensToFunction","tokensToFunction_1","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","RegExp","tokens","index","defaultDelimiter","delimiter","exec","m","escaped","offset","slice","next","prefix","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","toUpperCase","matches","flags","opts","pretty","token","TypeError","JSON","stringify","j","test","attachKeys","re","sensitive","strict","end","endsWithDelimiter","groups","source","match","regexpToRegexp","arrayToRegexp","stringToRegexp","compile","regexpCompileCache","create","fillParams","routeMsg","filler","pathMatch","normalizeLocation","raw","_normalized","params$1","rawPath","parsedPath","hashIndex","indexOf","queryIndex","parsePath","basePath","extraQuery","_parseQuery","parsedQuery","resolveQuery","_Vue","noop","Link","to","required","tag","custom","Boolean","exact","exactPath","activeClass","exactActiveClass","ariaCurrentValue","event","this$1$1","this","$router","resolve","href","classes","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","target","queryIncludes","isIncludedRoute","handler","guardEvent","on","click","class","scopedSlot","$scopedSlots","$hasNormal","navigate","isActive","isExactActive","findAnchor","child","$slots","isStatic","aData","handler$1","event$1","aAttrs","metaKey","altKey","ctrlKey","shiftKey","defaultPrevented","button","currentTarget","getAttribute","preventDefault","inBrowser","window","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","alias","redirect","beforeEnter","childMatchAs","aliases","aliasRoute","l","splice","createMatcher","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","hasOwnProperty","resolveRecordPath","aliasedMatch","aliasedRecord","addRoute","parentOrRoute","getRoutes","addRoutes","len","Time","performance","now","Date","genStateKey","toFixed","_key","getStateKey","setStateKey","positionStore","setupScroll","history","scrollRestoration","protocolAndPath","protocol","host","absolutePath","stateCopy","state","replaceState","addEventListener","handlePopState","removeEventListener","handleScroll","from","isPop","app","behavior","scrollBehavior","$nextTick","position","getScrollPosition","shouldScroll","then","scrollToPosition","catch","saveScrollPosition","pageXOffset","y","pageYOffset","isValidPosition","isNumber","normalizePosition","v","hashStartsWithNumberRE","isObject","selector","el","document","getElementById","querySelector","docRect","documentElement","getBoundingClientRect","elRect","left","top","getElementPosition","style","scrollTo","ua","supportsPushState","navigator","userAgent","pushState","url","NavigationFailureType","redirected","aborted","cancelled","duplicated","createNavigationRedirectedError","createRouterError","propertiesToLog","createNavigationCancelledError","message","error","Error","_isRouter","isError","isNavigationFailure","errorType","runQueue","queue","fn","cb","step","resolveAsyncComponents","hasAsync","pending","flatMapComponents","def","cid","once","resolvedDef","__esModule","hasSymbol","Symbol","toStringTag","resolved","reject","reason","msg","comp","flatten","concat","apply","called","args","arguments","History","baseEl","normalizeBase","ready","readyCbs","readyErrorCbs","errorCbs","listeners","extractGuards","records","bind","reverse","guards","guard","extractGuard","bindGuard","listen","onReady","errorCb","onError","transitionTo","onComplete","onAbort","prev","confirmTransition","updateRoute","ensureURL","afterHooks","abort","console","lastRouteIndex","lastCurrentIndex","max","Math","updated","activated","deactivated","resolveQueue","extractLeaveGuards","beforeHooks","extractUpdateHooks","iterator","createNavigationAbortedError","bindEnterGuard","extractEnterGuards","resolveHooks","setupListeners","teardown","cleanupListener","HTML5History","_startLocation","getLocation","__proto__","constructor","expectScroll","supportsScroll","handleRoutingEvent","go","n","fromRoute","getCurrentLocation","pathname","pathLowerCase","toLowerCase","baseLowerCase","search","HashHistory","fallback","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","apps","matcher","mode","prototypeAccessors","configurable","get","$once","routeOrError","handleInitialScroll","_route","beforeEach","registerHook","beforeResolve","afterEach","Promise","back","forward","getMatchedComponents","createHref","normalizedTo","defineProperties","VueRouter$1","list","install","Vue","installed","isDef","registerInstance","callVal","$options","_parentVnode","mixin","beforeCreate","_router","util","defineReactive","destroyed","defineProperty","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","created","version","START_LOCATION","use","module","main","global","isWorker","workerSize","canUseWorker","Worker","Blob","OffscreenCanvas","OffscreenCanvasRenderingContext2D","HTMLCanvasElement","transferControlToOffscreen","URL","createObjectURL","canUsePaths","Path2D","DOMMatrix","canDrawBitmap","canvas","ctx","getContext","fillRect","bitmap","transferToImageBitmap","createPattern","promise","func","ModulePromise","exports","Prom","skipTransform","frame","cancel","TIME","frames","lastFrameTime","worker","prom","resolves","defaultFire","bitmapMapper","Map","transform","has","width","height","drawImage","set","clear","raf","floor","requestAnimationFrame","cancelAnimationFrame","id","random","onFrame","time","setTimeout","timer","clearTimeout","getWorker","code","warn","execute","callback","postMessage","offscreen","fire","size","done","workerDone","reset","decorate","defaults","particleCount","angle","spread","startVelocity","decay","gravity","drift","ticks","shapes","zIndex","colors","disableForReducedMotion","scalar","prop","convert","onlyPositiveInt","number","toDecimal","parseInt","colorsToRgb","hexToRgb","r","substring","g","setCanvasWindowSize","clientWidth","clientHeight","setCanvasRectSize","rect","updateFetti","context","fetti","cos","angle2D","velocity","sin","flat","wobble","wobbleX","wobbleY","tiltSin","tiltCos","wobbleSpeed","tiltAngle","progress","tick","totalTicks","x1","y1","x2","y2","fillStyle","color","beginPath","shape","matrix","fill","pathString","pathMatrix","scaleX","scaleY","rotation","path2d","t1","addPath","t2","transformPath2D","abs","PI","multiplySelf","setTransform","globalAlpha","ellipse","ovalScalar","radiusX","radiusY","startAngle","endAngle","antiClockwise","save","translate","rotate","scale","arc","restore","rot","innerRadius","outerRadius","spikes","lineTo","moveTo","closePath","confettiCannon","globalOpts","animationObj","isLibCanvas","allowResize","hasResizeEventRegistered","globalDisableForReducedMotion","resizer","initialized","__confetti_initialized","preferLessMotion","matchMedia","fireLocal","radAngle","radSpread","min","Number","origin","getOrigin","temp","fettis","startX","startY","addFettis","animationFrame","destroy","animatingFettis","onDone","clearRect","update","animate","createElement","pointerEvents","getCanvas","body","appendChild","onResize","resize","contains","removeChild","getDefaultFire","useWorker","shapeFromPath","pathData","tempCtx","minX","minY","maxX","maxY","isPointInPath","round","shapeFromText","textData","text","fontFamily","fontSize","font","measureText","ceil","actualBoundingBoxRight","actualBoundingBoxLeft","actualBoundingBoxAscent","actualBoundingBoxDescent","padding","fillText","self","array","resIndex","baseRandom","isIterateeCall","toFinite","freeParseFloat","parseFloat","nativeMin","nativeRandom","lower","upper","floating","rand","getYear","dirtyDate","getFullYear","isToday","nativeFloor"],"mappings":"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","file":"js/vendors~main.js?aa610f70","sourcesContent":["/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an element. Use the custom prop to remove this warning:\\n\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\" with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1$1.ensureURL();\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1$1.ready) {\n this$1$1.ready = true;\n this$1$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1$1.ready = true;\n this$1$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1$1.errorCbs.length) {\n this$1$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1$1.replace(to);\n } else {\n this$1$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1$1.pending = null;\n onComplete(route);\n if (this$1$1.router.app) {\n this$1$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1$1.base);\n if (this$1$1.current === START && location === this$1$1._startLocation) {\n return\n }\n\n this$1$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);\n this$1$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1$1.current;\n this$1$1.index = targetIndex;\n this$1$1.updateRoute(route);\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1$1.apps.indexOf(app);\n if (index > -1) { this$1$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }\n\n if (!this$1$1.app) { this$1$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nvar VueRouter$1 = VueRouter;\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nvar version = '3.6.5';\n\nexport { NavigationFailureType, Link as RouterLink, View as RouterView, START as START_LOCATION, VueRouter$1 as default, isNavigationFailure, version };\n","// canvas-confetti v1.9.3 built on 2024-04-30T22:19:17.794Z\nvar module = {};\n\n// source content\n/* globals Map */\n\n(function main(global, module, isWorker, workerSize) {\n var canUseWorker = !!(\n global.Worker &&\n global.Blob &&\n global.Promise &&\n global.OffscreenCanvas &&\n global.OffscreenCanvasRenderingContext2D &&\n global.HTMLCanvasElement &&\n global.HTMLCanvasElement.prototype.transferControlToOffscreen &&\n global.URL &&\n global.URL.createObjectURL);\n\n var canUsePaths = typeof Path2D === 'function' && typeof DOMMatrix === 'function';\n var canDrawBitmap = (function () {\n // this mostly supports ssr\n if (!global.OffscreenCanvas) {\n return false;\n }\n\n var canvas = new OffscreenCanvas(1, 1);\n var ctx = canvas.getContext('2d');\n ctx.fillRect(0, 0, 1, 1);\n var bitmap = canvas.transferToImageBitmap();\n\n try {\n ctx.createPattern(bitmap, 'no-repeat');\n } catch (e) {\n return false;\n }\n\n return true;\n })();\n\n function noop() {}\n\n // create a promise if it exists, otherwise, just\n // call the function directly\n function promise(func) {\n var ModulePromise = module.exports.Promise;\n var Prom = ModulePromise !== void 0 ? ModulePromise : global.Promise;\n\n if (typeof Prom === 'function') {\n return new Prom(func);\n }\n\n func(noop, noop);\n\n return null;\n }\n\n var bitmapMapper = (function (skipTransform, map) {\n // see https://github.com/catdad/canvas-confetti/issues/209\n // creating canvases is actually pretty expensive, so we should create a\n // 1:1 map for bitmap:canvas, so that we can animate the confetti in\n // a performant manner, but also not store them forever so that we don't\n // have a memory leak\n return {\n transform: function(bitmap) {\n if (skipTransform) {\n return bitmap;\n }\n\n if (map.has(bitmap)) {\n return map.get(bitmap);\n }\n\n var canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n var ctx = canvas.getContext('2d');\n ctx.drawImage(bitmap, 0, 0);\n\n map.set(bitmap, canvas);\n\n return canvas;\n },\n clear: function () {\n map.clear();\n }\n };\n })(canDrawBitmap, new Map());\n\n var raf = (function () {\n var TIME = Math.floor(1000 / 60);\n var frame, cancel;\n var frames = {};\n var lastFrameTime = 0;\n\n if (typeof requestAnimationFrame === 'function' && typeof cancelAnimationFrame === 'function') {\n frame = function (cb) {\n var id = Math.random();\n\n frames[id] = requestAnimationFrame(function onFrame(time) {\n if (lastFrameTime === time || lastFrameTime + TIME - 1 < time) {\n lastFrameTime = time;\n delete frames[id];\n\n cb();\n } else {\n frames[id] = requestAnimationFrame(onFrame);\n }\n });\n\n return id;\n };\n cancel = function (id) {\n if (frames[id]) {\n cancelAnimationFrame(frames[id]);\n }\n };\n } else {\n frame = function (cb) {\n return setTimeout(cb, TIME);\n };\n cancel = function (timer) {\n return clearTimeout(timer);\n };\n }\n\n return { frame: frame, cancel: cancel };\n }());\n\n var getWorker = (function () {\n var worker;\n var prom;\n var resolves = {};\n\n function decorate(worker) {\n function execute(options, callback) {\n worker.postMessage({ options: options || {}, callback: callback });\n }\n worker.init = function initWorker(canvas) {\n var offscreen = canvas.transferControlToOffscreen();\n worker.postMessage({ canvas: offscreen }, [offscreen]);\n };\n\n worker.fire = function fireWorker(options, size, done) {\n if (prom) {\n execute(options, null);\n return prom;\n }\n\n var id = Math.random().toString(36).slice(2);\n\n prom = promise(function (resolve) {\n function workerDone(msg) {\n if (msg.data.callback !== id) {\n return;\n }\n\n delete resolves[id];\n worker.removeEventListener('message', workerDone);\n\n prom = null;\n\n bitmapMapper.clear();\n\n done();\n resolve();\n }\n\n worker.addEventListener('message', workerDone);\n execute(options, id);\n\n resolves[id] = workerDone.bind(null, { data: { callback: id }});\n });\n\n return prom;\n };\n\n worker.reset = function resetWorker() {\n worker.postMessage({ reset: true });\n\n for (var id in resolves) {\n resolves[id]();\n delete resolves[id];\n }\n };\n }\n\n return function () {\n if (worker) {\n return worker;\n }\n\n if (!isWorker && canUseWorker) {\n var code = [\n 'var CONFETTI, SIZE = {}, module = {};',\n '(' + main.toString() + ')(this, module, true, SIZE);',\n 'onmessage = function(msg) {',\n ' if (msg.data.options) {',\n ' CONFETTI(msg.data.options).then(function () {',\n ' if (msg.data.callback) {',\n ' postMessage({ callback: msg.data.callback });',\n ' }',\n ' });',\n ' } else if (msg.data.reset) {',\n ' CONFETTI && CONFETTI.reset();',\n ' } else if (msg.data.resize) {',\n ' SIZE.width = msg.data.resize.width;',\n ' SIZE.height = msg.data.resize.height;',\n ' } else if (msg.data.canvas) {',\n ' SIZE.width = msg.data.canvas.width;',\n ' SIZE.height = msg.data.canvas.height;',\n ' CONFETTI = module.exports.create(msg.data.canvas);',\n ' }',\n '}',\n ].join('\\n');\n try {\n worker = new Worker(URL.createObjectURL(new Blob([code])));\n } catch (e) {\n // eslint-disable-next-line no-console\n typeof console !== undefined && typeof console.warn === 'function' ? console.warn('🎊 Could not load worker', e) : null;\n\n return null;\n }\n\n decorate(worker);\n }\n\n return worker;\n };\n })();\n\n var defaults = {\n particleCount: 50,\n angle: 90,\n spread: 45,\n startVelocity: 45,\n decay: 0.9,\n gravity: 1,\n drift: 0,\n ticks: 200,\n x: 0.5,\n y: 0.5,\n shapes: ['square', 'circle'],\n zIndex: 100,\n colors: [\n '#26ccff',\n '#a25afd',\n '#ff5e7e',\n '#88ff5a',\n '#fcff42',\n '#ffa62d',\n '#ff36ff'\n ],\n // probably should be true, but back-compat\n disableForReducedMotion: false,\n scalar: 1\n };\n\n function convert(val, transform) {\n return transform ? transform(val) : val;\n }\n\n function isOk(val) {\n return !(val === null || val === undefined);\n }\n\n function prop(options, name, transform) {\n return convert(\n options && isOk(options[name]) ? options[name] : defaults[name],\n transform\n );\n }\n\n function onlyPositiveInt(number){\n return number < 0 ? 0 : Math.floor(number);\n }\n\n function randomInt(min, max) {\n // [min, max)\n return Math.floor(Math.random() * (max - min)) + min;\n }\n\n function toDecimal(str) {\n return parseInt(str, 16);\n }\n\n function colorsToRgb(colors) {\n return colors.map(hexToRgb);\n }\n\n function hexToRgb(str) {\n var val = String(str).replace(/[^0-9a-f]/gi, '');\n\n if (val.length < 6) {\n val = val[0]+val[0]+val[1]+val[1]+val[2]+val[2];\n }\n\n return {\n r: toDecimal(val.substring(0,2)),\n g: toDecimal(val.substring(2,4)),\n b: toDecimal(val.substring(4,6))\n };\n }\n\n function getOrigin(options) {\n var origin = prop(options, 'origin', Object);\n origin.x = prop(origin, 'x', Number);\n origin.y = prop(origin, 'y', Number);\n\n return origin;\n }\n\n function setCanvasWindowSize(canvas) {\n canvas.width = document.documentElement.clientWidth;\n canvas.height = document.documentElement.clientHeight;\n }\n\n function setCanvasRectSize(canvas) {\n var rect = canvas.getBoundingClientRect();\n canvas.width = rect.width;\n canvas.height = rect.height;\n }\n\n function getCanvas(zIndex) {\n var canvas = document.createElement('canvas');\n\n canvas.style.position = 'fixed';\n canvas.style.top = '0px';\n canvas.style.left = '0px';\n canvas.style.pointerEvents = 'none';\n canvas.style.zIndex = zIndex;\n\n return canvas;\n }\n\n function ellipse(context, x, y, radiusX, radiusY, rotation, startAngle, endAngle, antiClockwise) {\n context.save();\n context.translate(x, y);\n context.rotate(rotation);\n context.scale(radiusX, radiusY);\n context.arc(0, 0, 1, startAngle, endAngle, antiClockwise);\n context.restore();\n }\n\n function randomPhysics(opts) {\n var radAngle = opts.angle * (Math.PI / 180);\n var radSpread = opts.spread * (Math.PI / 180);\n\n return {\n x: opts.x,\n y: opts.y,\n wobble: Math.random() * 10,\n wobbleSpeed: Math.min(0.11, Math.random() * 0.1 + 0.05),\n velocity: (opts.startVelocity * 0.5) + (Math.random() * opts.startVelocity),\n angle2D: -radAngle + ((0.5 * radSpread) - (Math.random() * radSpread)),\n tiltAngle: (Math.random() * (0.75 - 0.25) + 0.25) * Math.PI,\n color: opts.color,\n shape: opts.shape,\n tick: 0,\n totalTicks: opts.ticks,\n decay: opts.decay,\n drift: opts.drift,\n random: Math.random() + 2,\n tiltSin: 0,\n tiltCos: 0,\n wobbleX: 0,\n wobbleY: 0,\n gravity: opts.gravity * 3,\n ovalScalar: 0.6,\n scalar: opts.scalar,\n flat: opts.flat\n };\n }\n\n function updateFetti(context, fetti) {\n fetti.x += Math.cos(fetti.angle2D) * fetti.velocity + fetti.drift;\n fetti.y += Math.sin(fetti.angle2D) * fetti.velocity + fetti.gravity;\n fetti.velocity *= fetti.decay;\n\n if (fetti.flat) {\n fetti.wobble = 0;\n fetti.wobbleX = fetti.x + (10 * fetti.scalar);\n fetti.wobbleY = fetti.y + (10 * fetti.scalar);\n\n fetti.tiltSin = 0;\n fetti.tiltCos = 0;\n fetti.random = 1;\n } else {\n fetti.wobble += fetti.wobbleSpeed;\n fetti.wobbleX = fetti.x + ((10 * fetti.scalar) * Math.cos(fetti.wobble));\n fetti.wobbleY = fetti.y + ((10 * fetti.scalar) * Math.sin(fetti.wobble));\n\n fetti.tiltAngle += 0.1;\n fetti.tiltSin = Math.sin(fetti.tiltAngle);\n fetti.tiltCos = Math.cos(fetti.tiltAngle);\n fetti.random = Math.random() + 2;\n }\n\n var progress = (fetti.tick++) / fetti.totalTicks;\n\n var x1 = fetti.x + (fetti.random * fetti.tiltCos);\n var y1 = fetti.y + (fetti.random * fetti.tiltSin);\n var x2 = fetti.wobbleX + (fetti.random * fetti.tiltCos);\n var y2 = fetti.wobbleY + (fetti.random * fetti.tiltSin);\n\n context.fillStyle = 'rgba(' + fetti.color.r + ', ' + fetti.color.g + ', ' + fetti.color.b + ', ' + (1 - progress) + ')';\n\n context.beginPath();\n\n if (canUsePaths && fetti.shape.type === 'path' && typeof fetti.shape.path === 'string' && Array.isArray(fetti.shape.matrix)) {\n context.fill(transformPath2D(\n fetti.shape.path,\n fetti.shape.matrix,\n fetti.x,\n fetti.y,\n Math.abs(x2 - x1) * 0.1,\n Math.abs(y2 - y1) * 0.1,\n Math.PI / 10 * fetti.wobble\n ));\n } else if (fetti.shape.type === 'bitmap') {\n var rotation = Math.PI / 10 * fetti.wobble;\n var scaleX = Math.abs(x2 - x1) * 0.1;\n var scaleY = Math.abs(y2 - y1) * 0.1;\n var width = fetti.shape.bitmap.width * fetti.scalar;\n var height = fetti.shape.bitmap.height * fetti.scalar;\n\n var matrix = new DOMMatrix([\n Math.cos(rotation) * scaleX,\n Math.sin(rotation) * scaleX,\n -Math.sin(rotation) * scaleY,\n Math.cos(rotation) * scaleY,\n fetti.x,\n fetti.y\n ]);\n\n // apply the transform matrix from the confetti shape\n matrix.multiplySelf(new DOMMatrix(fetti.shape.matrix));\n\n var pattern = context.createPattern(bitmapMapper.transform(fetti.shape.bitmap), 'no-repeat');\n pattern.setTransform(matrix);\n\n context.globalAlpha = (1 - progress);\n context.fillStyle = pattern;\n context.fillRect(\n fetti.x - (width / 2),\n fetti.y - (height / 2),\n width,\n height\n );\n context.globalAlpha = 1;\n } else if (fetti.shape === 'circle') {\n context.ellipse ?\n context.ellipse(fetti.x, fetti.y, Math.abs(x2 - x1) * fetti.ovalScalar, Math.abs(y2 - y1) * fetti.ovalScalar, Math.PI / 10 * fetti.wobble, 0, 2 * Math.PI) :\n ellipse(context, fetti.x, fetti.y, Math.abs(x2 - x1) * fetti.ovalScalar, Math.abs(y2 - y1) * fetti.ovalScalar, Math.PI / 10 * fetti.wobble, 0, 2 * Math.PI);\n } else if (fetti.shape === 'star') {\n var rot = Math.PI / 2 * 3;\n var innerRadius = 4 * fetti.scalar;\n var outerRadius = 8 * fetti.scalar;\n var x = fetti.x;\n var y = fetti.y;\n var spikes = 5;\n var step = Math.PI / spikes;\n\n while (spikes--) {\n x = fetti.x + Math.cos(rot) * outerRadius;\n y = fetti.y + Math.sin(rot) * outerRadius;\n context.lineTo(x, y);\n rot += step;\n\n x = fetti.x + Math.cos(rot) * innerRadius;\n y = fetti.y + Math.sin(rot) * innerRadius;\n context.lineTo(x, y);\n rot += step;\n }\n } else {\n context.moveTo(Math.floor(fetti.x), Math.floor(fetti.y));\n context.lineTo(Math.floor(fetti.wobbleX), Math.floor(y1));\n context.lineTo(Math.floor(x2), Math.floor(y2));\n context.lineTo(Math.floor(x1), Math.floor(fetti.wobbleY));\n }\n\n context.closePath();\n context.fill();\n\n return fetti.tick < fetti.totalTicks;\n }\n\n function animate(canvas, fettis, resizer, size, done) {\n var animatingFettis = fettis.slice();\n var context = canvas.getContext('2d');\n var animationFrame;\n var destroy;\n\n var prom = promise(function (resolve) {\n function onDone() {\n animationFrame = destroy = null;\n\n context.clearRect(0, 0, size.width, size.height);\n bitmapMapper.clear();\n\n done();\n resolve();\n }\n\n function update() {\n if (isWorker && !(size.width === workerSize.width && size.height === workerSize.height)) {\n size.width = canvas.width = workerSize.width;\n size.height = canvas.height = workerSize.height;\n }\n\n if (!size.width && !size.height) {\n resizer(canvas);\n size.width = canvas.width;\n size.height = canvas.height;\n }\n\n context.clearRect(0, 0, size.width, size.height);\n\n animatingFettis = animatingFettis.filter(function (fetti) {\n return updateFetti(context, fetti);\n });\n\n if (animatingFettis.length) {\n animationFrame = raf.frame(update);\n } else {\n onDone();\n }\n }\n\n animationFrame = raf.frame(update);\n destroy = onDone;\n });\n\n return {\n addFettis: function (fettis) {\n animatingFettis = animatingFettis.concat(fettis);\n\n return prom;\n },\n canvas: canvas,\n promise: prom,\n reset: function () {\n if (animationFrame) {\n raf.cancel(animationFrame);\n }\n\n if (destroy) {\n destroy();\n }\n }\n };\n }\n\n function confettiCannon(canvas, globalOpts) {\n var isLibCanvas = !canvas;\n var allowResize = !!prop(globalOpts || {}, 'resize');\n var hasResizeEventRegistered = false;\n var globalDisableForReducedMotion = prop(globalOpts, 'disableForReducedMotion', Boolean);\n var shouldUseWorker = canUseWorker && !!prop(globalOpts || {}, 'useWorker');\n var worker = shouldUseWorker ? getWorker() : null;\n var resizer = isLibCanvas ? setCanvasWindowSize : setCanvasRectSize;\n var initialized = (canvas && worker) ? !!canvas.__confetti_initialized : false;\n var preferLessMotion = typeof matchMedia === 'function' && matchMedia('(prefers-reduced-motion)').matches;\n var animationObj;\n\n function fireLocal(options, size, done) {\n var particleCount = prop(options, 'particleCount', onlyPositiveInt);\n var angle = prop(options, 'angle', Number);\n var spread = prop(options, 'spread', Number);\n var startVelocity = prop(options, 'startVelocity', Number);\n var decay = prop(options, 'decay', Number);\n var gravity = prop(options, 'gravity', Number);\n var drift = prop(options, 'drift', Number);\n var colors = prop(options, 'colors', colorsToRgb);\n var ticks = prop(options, 'ticks', Number);\n var shapes = prop(options, 'shapes');\n var scalar = prop(options, 'scalar');\n var flat = !!prop(options, 'flat');\n var origin = getOrigin(options);\n\n var temp = particleCount;\n var fettis = [];\n\n var startX = canvas.width * origin.x;\n var startY = canvas.height * origin.y;\n\n while (temp--) {\n fettis.push(\n randomPhysics({\n x: startX,\n y: startY,\n angle: angle,\n spread: spread,\n startVelocity: startVelocity,\n color: colors[temp % colors.length],\n shape: shapes[randomInt(0, shapes.length)],\n ticks: ticks,\n decay: decay,\n gravity: gravity,\n drift: drift,\n scalar: scalar,\n flat: flat\n })\n );\n }\n\n // if we have a previous canvas already animating,\n // add to it\n if (animationObj) {\n return animationObj.addFettis(fettis);\n }\n\n animationObj = animate(canvas, fettis, resizer, size , done);\n\n return animationObj.promise;\n }\n\n function fire(options) {\n var disableForReducedMotion = globalDisableForReducedMotion || prop(options, 'disableForReducedMotion', Boolean);\n var zIndex = prop(options, 'zIndex', Number);\n\n if (disableForReducedMotion && preferLessMotion) {\n return promise(function (resolve) {\n resolve();\n });\n }\n\n if (isLibCanvas && animationObj) {\n // use existing canvas from in-progress animation\n canvas = animationObj.canvas;\n } else if (isLibCanvas && !canvas) {\n // create and initialize a new canvas\n canvas = getCanvas(zIndex);\n document.body.appendChild(canvas);\n }\n\n if (allowResize && !initialized) {\n // initialize the size of a user-supplied canvas\n resizer(canvas);\n }\n\n var size = {\n width: canvas.width,\n height: canvas.height\n };\n\n if (worker && !initialized) {\n worker.init(canvas);\n }\n\n initialized = true;\n\n if (worker) {\n canvas.__confetti_initialized = true;\n }\n\n function onResize() {\n if (worker) {\n // TODO this really shouldn't be immediate, because it is expensive\n var obj = {\n getBoundingClientRect: function () {\n if (!isLibCanvas) {\n return canvas.getBoundingClientRect();\n }\n }\n };\n\n resizer(obj);\n\n worker.postMessage({\n resize: {\n width: obj.width,\n height: obj.height\n }\n });\n return;\n }\n\n // don't actually query the size here, since this\n // can execute frequently and rapidly\n size.width = size.height = null;\n }\n\n function done() {\n animationObj = null;\n\n if (allowResize) {\n hasResizeEventRegistered = false;\n global.removeEventListener('resize', onResize);\n }\n\n if (isLibCanvas && canvas) {\n if (document.body.contains(canvas)) {\n document.body.removeChild(canvas); \n }\n canvas = null;\n initialized = false;\n }\n }\n\n if (allowResize && !hasResizeEventRegistered) {\n hasResizeEventRegistered = true;\n global.addEventListener('resize', onResize, false);\n }\n\n if (worker) {\n return worker.fire(options, size, done);\n }\n\n return fireLocal(options, size, done);\n }\n\n fire.reset = function () {\n if (worker) {\n worker.reset();\n }\n\n if (animationObj) {\n animationObj.reset();\n }\n };\n\n return fire;\n }\n\n // Make default export lazy to defer worker creation until called.\n var defaultFire;\n function getDefaultFire() {\n if (!defaultFire) {\n defaultFire = confettiCannon(null, { useWorker: true, resize: true });\n }\n return defaultFire;\n }\n\n function transformPath2D(pathString, pathMatrix, x, y, scaleX, scaleY, rotation) {\n var path2d = new Path2D(pathString);\n\n var t1 = new Path2D();\n t1.addPath(path2d, new DOMMatrix(pathMatrix));\n\n var t2 = new Path2D();\n // see https://developer.mozilla.org/en-US/docs/Web/API/DOMMatrix/DOMMatrix\n t2.addPath(t1, new DOMMatrix([\n Math.cos(rotation) * scaleX,\n Math.sin(rotation) * scaleX,\n -Math.sin(rotation) * scaleY,\n Math.cos(rotation) * scaleY,\n x,\n y\n ]));\n\n return t2;\n }\n\n function shapeFromPath(pathData) {\n if (!canUsePaths) {\n throw new Error('path confetti are not supported in this browser');\n }\n\n var path, matrix;\n\n if (typeof pathData === 'string') {\n path = pathData;\n } else {\n path = pathData.path;\n matrix = pathData.matrix;\n }\n\n var path2d = new Path2D(path);\n var tempCanvas = document.createElement('canvas');\n var tempCtx = tempCanvas.getContext('2d');\n\n if (!matrix) {\n // attempt to figure out the width of the path, up to 1000x1000\n var maxSize = 1000;\n var minX = maxSize;\n var minY = maxSize;\n var maxX = 0;\n var maxY = 0;\n var width, height;\n\n // do some line skipping... this is faster than checking\n // every pixel and will be mostly still correct\n for (var x = 0; x < maxSize; x += 2) {\n for (var y = 0; y < maxSize; y += 2) {\n if (tempCtx.isPointInPath(path2d, x, y, 'nonzero')) {\n minX = Math.min(minX, x);\n minY = Math.min(minY, y);\n maxX = Math.max(maxX, x);\n maxY = Math.max(maxY, y);\n }\n }\n }\n\n width = maxX - minX;\n height = maxY - minY;\n\n var maxDesiredSize = 10;\n var scale = Math.min(maxDesiredSize/width, maxDesiredSize/height);\n\n matrix = [\n scale, 0, 0, scale,\n -Math.round((width/2) + minX) * scale,\n -Math.round((height/2) + minY) * scale\n ];\n }\n\n return {\n type: 'path',\n path: path,\n matrix: matrix\n };\n }\n\n function shapeFromText(textData) {\n var text,\n scalar = 1,\n color = '#000000',\n // see https://nolanlawson.com/2022/04/08/the-struggle-of-using-native-emoji-on-the-web/\n fontFamily = '\"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\", \"EmojiOne Color\", \"Android Emoji\", \"Twemoji Mozilla\", \"system emoji\", sans-serif';\n\n if (typeof textData === 'string') {\n text = textData;\n } else {\n text = textData.text;\n scalar = 'scalar' in textData ? textData.scalar : scalar;\n fontFamily = 'fontFamily' in textData ? textData.fontFamily : fontFamily;\n color = 'color' in textData ? textData.color : color;\n }\n\n // all other confetti are 10 pixels,\n // so this pixel size is the de-facto 100% scale confetti\n var fontSize = 10 * scalar;\n var font = '' + fontSize + 'px ' + fontFamily;\n\n var canvas = new OffscreenCanvas(fontSize, fontSize);\n var ctx = canvas.getContext('2d');\n\n ctx.font = font;\n var size = ctx.measureText(text);\n var width = Math.ceil(size.actualBoundingBoxRight + size.actualBoundingBoxLeft);\n var height = Math.ceil(size.actualBoundingBoxAscent + size.actualBoundingBoxDescent);\n\n var padding = 2;\n var x = size.actualBoundingBoxLeft + padding;\n var y = size.actualBoundingBoxAscent + padding;\n width += padding + padding;\n height += padding + padding;\n\n canvas = new OffscreenCanvas(width, height);\n ctx = canvas.getContext('2d');\n ctx.font = font;\n ctx.fillStyle = color;\n\n ctx.fillText(text, x, y);\n\n var scale = 1 / scalar;\n\n return {\n type: 'bitmap',\n // TODO these probably need to be transfered for workers\n bitmap: canvas.transferToImageBitmap(),\n matrix: [scale, 0, 0, scale, -width * scale / 2, -height * scale / 2]\n };\n }\n\n module.exports = function() {\n return getDefaultFire().apply(this, arguments);\n };\n module.exports.reset = function() {\n getDefaultFire().reset();\n };\n module.exports.create = confettiCannon;\n module.exports.shapeFromPath = shapeFromPath;\n module.exports.shapeFromText = shapeFromText;\n}((function () {\n if (typeof window !== 'undefined') {\n return window;\n }\n\n if (typeof self !== 'undefined') {\n return self;\n }\n\n return this || {};\n})(), module, false));\n\n// end source content\n\nexport default module.exports;\nexport var create = module.exports.create;\n","/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = compact;\n","var baseRandom = require('./_baseRandom'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseFloat = parseFloat;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min,\n nativeRandom = Math.random;\n\n/**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\nfunction random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n}\n\nmodule.exports = random;\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getFullYear();\n}","import isSameDay from \"../isSameDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isToday\n * @category Day Helpers\n * @summary Is the given date today?\n * @pure false\n *\n * @description\n * Is the given date today?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is today\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * const result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\nexport default function isToday(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, Date.now());\n}","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n nativeRandom = Math.random;\n\n/**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\nfunction baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n}\n\nmodule.exports = baseRandom;\n"],"sourceRoot":""}