You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
208 KiB
1 lines
208 KiB
{"ast":null,"code":"import \"core-js/modules/es.array.push.js\";\n/**\n * vue-router v2.8.0\n * (c) 2017 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(\"[vue-router] \" + message);\n }\n}\nfunction warn(condition, message) {\n if (process.env.NODE_ENV !== 'production' && !condition) {\n typeof console !== 'undefined' && console.warn(\"[vue-router] \" + message);\n }\n}\nfunction isError(err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1;\n}\nvar View = {\n name: 'router-view',\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 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 if (parent.$vnode && parent.$vnode.data.routerView) {\n depth++;\n }\n if (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 return h(cache[name], data, children);\n }\n var matched = route.matched[depth];\n // render empty node if no matched route\n if (!matched) {\n cache[name] = null;\n return h();\n }\n var component = cache[name] = matched.components[name];\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 (val && current !== vm || !val && current === vm) {\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 ;\n (data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // resolve props\n data.props = resolveProps(route, matched.props && matched.props[name]);\n data.attrs = {};\n for (var key in data.props) {\n if (!('props' in component) || !(key in component.props)) {\n data.attrs[key] = data.props[key];\n delete data.props[key];\n }\n }\n return h(component, data, children);\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(false, \"props in \\\"\" + route.path + \"\\\" is a \" + typeof config + \", \" + \"expecting an object, function or boolean.\");\n }\n }\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) {\n return '%' + c.charCodeAt(0).toString(16);\n};\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) {\n return encodeURIComponent(str).replace(encodeReserveRE, encodeReserveReplacer).replace(commaRE, ',');\n};\nvar decode = decodeURIComponent;\nfunction resolveQuery(query, extraQuery, _parseQuery) {\n if (extraQuery === void 0) extraQuery = {};\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 parsedQuery[key] = extraQuery[key];\n }\n return parsedQuery;\n}\nfunction parseQuery(query) {\n var res = {};\n query = query.trim().replace(/^(\\?|#|&)/, '');\n if (!query) {\n return res;\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 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 return res;\n}\nfunction stringifyQuery(obj) {\n var res = obj ? Object.keys(obj).map(function (key) {\n var val = obj[key];\n if (val === undefined) {\n return '';\n }\n if (val === null) {\n return encode(key);\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 return encode(key) + '=' + encode(val);\n }).filter(function (x) {\n return x.length > 0;\n }).join('&') : null;\n return res ? \"?\" + res : '';\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\nfunction createRoute(record, location, redirectedFrom, router) {\n var stringifyQuery$$1 = router && router.options.stringifyQuery;\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\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$$1),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery$$1);\n }\n return Object.freeze(route);\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});\nfunction formatMatch(record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res;\n}\nfunction getFullPath(ref, _stringifyQuery) {\n var path = ref.path;\n var query = ref.query;\n if (query === void 0) query = {};\n var hash = ref.hash;\n if (hash === void 0) hash = '';\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash;\n}\nfunction isSameRoute(a, b) {\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, '') && a.hash === b.hash && isObjectEqual(a.query, b.query);\n } else if (a.name && b.name) {\n return a.name === b.name && a.hash === b.hash && isObjectEqual(a.query, b.query) && isObjectEqual(a.params, b.params);\n } else {\n return false;\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) {\n return a === b;\n }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n return aKeys.every(function (key) {\n var aVal = a[key];\n var bVal = b[key];\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}\nfunction isIncludedRoute(current, target) {\n return current.path.replace(trailingSlashRE, '/').indexOf(target.path.replace(trailingSlashRE, '/')) === 0 && (!target.hash || current.hash === target.hash) && queryIncludes(current.query, target.query);\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\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\nvar Link = {\n name: 'router-link',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n exact: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render(h) {\n var this$1 = this;\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(this.to, current, this.append);\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback = globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback = globalExactActiveClass == null ? 'router-link-exact-active' : globalExactActiveClass;\n var activeClass = this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass = this.exactActiveClass == null ? exactActiveClassFallback : this.exactActiveClass;\n var compareTarget = location.path ? createRoute(null, location, null, router) : route;\n classes[exactActiveClass] = isSameRoute(current, compareTarget);\n classes[activeClass] = this.exact ? classes[exactActiveClass] : isIncludedRoute(current, compareTarget);\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1.replace) {\n router.replace(location);\n } else {\n router.push(location);\n }\n }\n };\n var on = {\n click: guardEvent\n };\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 var data = {\n class: classes\n };\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = {\n href: href\n };\n } else {\n // find the first <a> child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the <a> is a static node\n a.isStatic = false;\n var extend = _Vue.util.extend;\n var aData = a.data = extend({}, a.data);\n aData.on = on;\n var aAttrs = a.data.attrs = extend({}, a.data.attrs);\n aAttrs.href = href;\n } else {\n // doesn't have <a> child, apply listener to self\n data.on = on;\n }\n }\n return h(this.tag, data, this.$slots.default);\n }\n};\nfunction guardEvent(e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) {\n return;\n }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) {\n return;\n }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) {\n return;\n }\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)) {\n return;\n }\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}\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}\nvar _Vue;\nfunction install(Vue) {\n if (install.installed && _Vue === Vue) {\n return;\n }\n install.installed = true;\n _Vue = Vue;\n var isDef = function (v) {\n 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 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 Object.defineProperty(Vue.prototype, '$router', {\n get: function get() {\n return this._routerRoot._router;\n }\n });\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get() {\n return this._routerRoot._route;\n }\n });\n Vue.component('router-view', View);\n Vue.component('router-link', Link);\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 resolvePath(relative, base, append) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative;\n }\n if (firstChar === '?' || firstChar === '#') {\n return base + relative;\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 return stack.join('/');\n}\nfunction parsePath(path) {\n var hash = '';\n var query = '';\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n return {\n path: path,\n query: query,\n hash: hash\n };\n}\nfunction cleanPath(path) {\n return path.replace(/\\/\\//g, '/');\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+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'].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 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 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 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 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 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));\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) {\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 + ')$');\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 for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === 'string') {\n path += token;\n continue;\n }\n var value = data[token.name];\n var segment;\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n continue;\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined');\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 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 for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\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 path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n continue;\n }\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"');\n }\n path += token.prefix + segment;\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.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 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 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 for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\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 options = options || {};\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 if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n keys.push(token);\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\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 route += capture;\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 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 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 options = options || {};\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */keys);\n }\n if (isarray(path)) {\n return arrayToRegexp( /** @type {!Array} */path, /** @type {!Array} */keys, options);\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);\nfunction fillParams(path, params, routeMsg) {\n try {\n var filler = regexpCompileCache[path] || (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n return filler(params || {}, {\n pretty: true\n });\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, \"missing param for \" + routeMsg + \": \" + e.message);\n }\n return '';\n }\n}\n\n/* */\n\nfunction createRouteMap(routes, oldPathList, oldPathMap, oldNameMap) {\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 routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route);\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 return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n };\n}\nfunction addRouteRecord(pathList, pathMap, nameMap, route, parent, matchAs) {\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(typeof route.component !== 'string', \"route config \\\"component\\\" for path: \" + String(path || name) + \" cannot be a \" + \"string id. Use an actual component instead.\");\n }\n var pathToRegexpOptions = route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || {\n default: route.component\n },\n instances: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props: route.props == null ? {} : route.components ? 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 (route.name && !route.redirect && route.children.some(function (child) {\n return /^\\/?$/.test(child.path);\n })) {\n warn(false, \"Named Route '\" + route.name + \"' has a default child route. \" + \"When navigating to this named route (:to=\\\"{name: '\" + route.name + \"'\\\"), \" + \"the default child route will not be rendered. Remove the name from \" + \"this route and use the name of the default child route for named \" + \"links instead.\");\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs ? cleanPath(matchAs + \"/\" + child.path) : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n aliases.forEach(function (alias) {\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(pathList, pathMap, nameMap, aliasRoute, parent, record.path || '/' // matchAs\n );\n });\n }\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(false, \"Duplicate named routes definition: \" + \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + record.path + \"\\\" }\");\n }\n }\n}\nfunction compileRouteRegex(path, pathToRegexpOptions) {\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(!keys[key.name], \"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\");\n keys[key.name] = true;\n });\n }\n return regex;\n}\nfunction normalizePath(path, parent, strict) {\n if (!strict) {\n path = path.replace(/\\/$/, '');\n }\n if (path[0] === '/') {\n return path;\n }\n if (parent == null) {\n return path;\n }\n return cleanPath(parent.path + \"/\" + path);\n}\n\n/* */\n\nfunction normalizeLocation(raw, current, append, router) {\n var next = typeof raw === 'string' ? {\n path: raw\n } : raw;\n // named target\n if (next.name || next._normalized) {\n return next;\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = assign({}, next);\n next._normalized = true;\n var params = assign(assign({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params, \"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 var parsedPath = parsePath(next.path || '');\n var basePath = current && current.path || '/';\n var path = parsedPath.path ? resolvePath(parsedPath.path, basePath, append || next.append) : basePath;\n var query = resolveQuery(parsedPath.query, next.query, router && router.options.parseQuery);\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n };\n}\nfunction assign(a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a;\n}\n\n/* */\n\nfunction createMatcher(routes, router) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n function addRoutes(routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n function match(raw, currentRoute, redirectedFrom) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\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) {\n return _createRoute(null, location);\n }\n var paramNames = record.regex.keys.filter(function (key) {\n return !key.optional;\n }).map(function (key) {\n return key.name;\n });\n if (typeof location.params !== 'object') {\n location.params = {};\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 if (record) {\n location.path = fillParams(record.path, location.params, \"named route \\\"\" + name + \"\\\"\");\n return _createRoute(record, location, redirectedFrom);\n }\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 function redirect(record, location) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function' ? originalRedirect(createRoute(record, location, null, router)) : originalRedirect;\n if (typeof redirect === 'string') {\n redirect = {\n path: redirect\n };\n }\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, \"invalid redirect option: \" + JSON.stringify(redirect));\n }\n return _createRoute(null, location);\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 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 function alias(record, location, matchAs) {\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 function _createRoute(record, location, redirectedFrom) {\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 return {\n match: match,\n addRoutes: addRoutes\n };\n}\nfunction matchRoute(regex, path, params) {\n var m = path.match(regex);\n if (!m) {\n return false;\n } else if (!params) {\n return true;\n }\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n var val = typeof m[i] === 'string' ? decodeURIComponent(m[i]) : m[i];\n if (key) {\n params[key.name] = val;\n }\n }\n return true;\n}\nfunction resolveRecordPath(path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true);\n}\n\n/* */\n\nvar positionStore = Object.create(null);\nfunction setupScroll() {\n // Fix for #1585 for Firefox\n window.history.replaceState({\n key: getStateKey()\n }, '');\n window.addEventListener('popstate', function (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n });\n}\nfunction handleScroll(router, to, from, isPop) {\n if (!router.app) {\n return;\n }\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return;\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(to, from, isPop ? position : null);\n if (!shouldScroll) {\n return;\n }\n if (typeof shouldScroll.then === 'function') {\n shouldScroll.then(function (shouldScroll) {\n scrollToPosition(shouldScroll, position);\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}\nfunction saveScrollPosition() {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\nfunction getScrollPosition() {\n var key = getStateKey();\n if (key) {\n return positionStore[key];\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}\nfunction isValidPosition(obj) {\n return isNumber(obj.x) || isNumber(obj.y);\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}\nfunction normalizeOffset(obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n };\n}\nfunction isNumber(v) {\n return typeof v === 'number';\n}\nfunction scrollToPosition(shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n var el = document.querySelector(shouldScroll.selector);\n if (el) {\n var offset = shouldScroll.offset && typeof shouldScroll.offset === 'object' ? shouldScroll.offset : {};\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 if (position) {\n window.scrollTo(position.x, position.y);\n }\n}\n\n/* */\n\nvar supportsPushState = inBrowser && function () {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) {\n return false;\n }\n return window.history && 'pushState' in window.history;\n}();\n\n// use User Timing api (if present) for more accurate key precision\nvar Time = inBrowser && window.performance && window.performance.now ? window.performance : Date;\nvar _key = genKey();\nfunction genKey() {\n return Time.now().toFixed(3);\n}\nfunction getStateKey() {\n return _key;\n}\nfunction setStateKey(key) {\n _key = key;\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 history.replaceState({\n key: _key\n }, '', url);\n } else {\n _key = genKey();\n history.pushState({\n key: _key\n }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\nfunction replaceState(url) {\n pushState(url, true);\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 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 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' ? resolvedDef : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\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) ? reason : new Error(msg);\n next(error);\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 if (!hasAsync) {\n next();\n }\n };\n}\nfunction flatMapComponents(matched, fn) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return fn(m.components[key], m.instances[key], m, key);\n });\n }));\n}\nfunction flatten(arr) {\n return Array.prototype.concat.apply([], arr);\n}\nvar hasSymbol = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\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 = [],\n len = arguments.length;\n while (len--) args[len] = arguments[len];\n if (called) {\n return;\n }\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};\nHistory.prototype.listen = function listen(cb) {\n this.cb = cb;\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};\nHistory.prototype.onError = function onError(errorCb) {\n this.errorCbs.push(errorCb);\n};\nHistory.prototype.transitionTo = function transitionTo(location, onComplete, onAbort) {\n var this$1 = this;\n var route = this.router.match(location, this.current);\n this.confirmTransition(route, function () {\n this$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n\n // fire ready cbs once\n if (!this$1.ready) {\n this$1.ready = true;\n this$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n }, function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1.ready) {\n this$1.ready = true;\n this$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n });\n};\nHistory.prototype.confirmTransition = function confirmTransition(route, onComplete, onAbort) {\n var this$1 = this;\n var current = this.current;\n var abort = function (err) {\n if (isError(err)) {\n if (this$1.errorCbs.length) {\n this$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n warn(false, 'uncaught error during route navigation:');\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n if (isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n route.matched.length === current.matched.length) {\n this.ensureURL();\n return abort();\n }\n var ref = resolveQueue(this.current.matched, route.matched);\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\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) {\n return m.beforeEnter;\n }),\n // async components\n resolveAsyncComponents(activated));\n this.pending = route;\n var iterator = function (hook, next) {\n if (this$1.pending !== route) {\n return abort();\n }\n try {\n hook(route, current, function (to) {\n if (to === false || isError(to)) {\n // next(false) -> abort navigation, ensure current URL\n this$1.ensureURL(true);\n abort(to);\n } else if (typeof to === 'string' || typeof to === 'object' && (typeof to.path === 'string' || typeof to.name === 'string')) {\n // next('/') or next({ path: '/' }) -> redirect\n abort();\n if (typeof to === 'object' && to.replace) {\n this$1.replace(to);\n } else {\n this$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 runQueue(queue, iterator, function () {\n var postEnterCbs = [];\n var isValid = function () {\n return this$1.current === route;\n };\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated, postEnterCbs, isValid);\n var queue = enterGuards.concat(this$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort();\n }\n this$1.pending = null;\n onComplete(route);\n if (this$1.router.app) {\n this$1.router.app.$nextTick(function () {\n postEnterCbs.forEach(function (cb) {\n cb();\n });\n });\n }\n });\n });\n};\nHistory.prototype.updateRoute = function updateRoute(route) {\n var prev = this.current;\n this.current = route;\n this.cb && this.cb(route);\n this.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n};\nfunction normalizeBase(base) {\n if (!base) {\n if (inBrowser) {\n // respect <base> 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}\nfunction resolveQueue(current, next) {\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}\nfunction extractGuards(records, name, bind, reverse) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard) ? guard.map(function (guard) {\n return bind(guard, instance, match, key);\n }) : bind(guard, instance, match, key);\n }\n });\n return flatten(reverse ? guards.reverse() : guards);\n}\nfunction extractGuard(def, key) {\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}\nfunction extractLeaveGuards(deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true);\n}\nfunction extractUpdateHooks(updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard);\n}\nfunction bindGuard(guard, instance) {\n if (instance) {\n return function boundRouteGuard() {\n return guard.apply(instance, arguments);\n };\n }\n}\nfunction extractEnterGuards(activated, cbs, isValid) {\n return extractGuards(activated, 'beforeRouteEnter', function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key, cbs, isValid);\n });\n}\nfunction bindEnterGuard(guard, match, key, cbs, isValid) {\n return function routeEnterGuard(to, from, next) {\n return guard(to, from, function (cb) {\n next(cb);\n if (typeof cb === 'function') {\n cbs.push(function () {\n // #750\n // if a router-view is wrapped with an out-in transition,\n // the instance may not have been registered at this time.\n // we will need to poll for registration until current route\n // is no longer valid.\n poll(cb, match.instances, key, isValid);\n });\n }\n });\n };\n}\nfunction poll(cb,\n// somehow flow cannot infer this is a function\ninstances, key, isValid) {\n if (instances[key]) {\n cb(instances[key]);\n } else if (isValid()) {\n setTimeout(function () {\n poll(cb, instances, key, isValid);\n }, 16);\n }\n}\n\n/* */\n\nvar HTML5History = function (History$$1) {\n function HTML5History(router, base) {\n var this$1 = this;\n History$$1.call(this, router, base);\n var expectScroll = router.options.scrollBehavior;\n if (expectScroll) {\n setupScroll();\n }\n var initLocation = getLocation(this.base);\n window.addEventListener('popstate', function (e) {\n var current = this$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.base);\n if (this$1.current === START && location === initLocation) {\n return;\n }\n this$1.transitionTo(location, function (route) {\n if (expectScroll) {\n handleScroll(router, route, current, true);\n }\n });\n });\n }\n if (History$$1) HTML5History.__proto__ = History$$1;\n HTML5History.prototype = Object.create(History$$1 && History$$1.prototype);\n HTML5History.prototype.constructor = HTML5History;\n HTML5History.prototype.go = function go(n) {\n window.history.go(n);\n };\n HTML5History.prototype.push = function push(location, onComplete, onAbort) {\n var this$1 = this;\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n HTML5History.prototype.replace = function replace(location, onComplete, onAbort) {\n var this$1 = this;\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\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 HTML5History.prototype.getCurrentLocation = function getCurrentLocation() {\n return getLocation(this.base);\n };\n return HTML5History;\n}(History);\nfunction getLocation(base) {\n var path = window.location.pathname;\n if (base && path.indexOf(base) === 0) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash;\n}\n\n/* */\n\nvar HashHistory = function (History$$1) {\n function HashHistory(router, base, fallback) {\n History$$1.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return;\n }\n ensureSlash();\n }\n if (History$$1) HashHistory.__proto__ = History$$1;\n HashHistory.prototype = Object.create(History$$1 && History$$1.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 = this;\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n if (supportsScroll) {\n setupScroll();\n }\n window.addEventListener(supportsPushState ? 'popstate' : 'hashchange', function () {\n var current = this$1.current;\n if (!ensureSlash()) {\n return;\n }\n this$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n });\n };\n HashHistory.prototype.push = function push(location, onComplete, onAbort) {\n var this$1 = this;\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n HashHistory.prototype.replace = function replace(location, onComplete, onAbort) {\n var this$1 = this;\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n HashHistory.prototype.go = function go(n) {\n window.history.go(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 HashHistory.prototype.getCurrentLocation = function getCurrentLocation() {\n return getHash();\n };\n return HashHistory;\n}(History);\nfunction checkFallback(base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true;\n }\n}\nfunction ensureSlash() {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true;\n }\n replaceHash('/' + path);\n return false;\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 return index === -1 ? '' : href.slice(index + 1);\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}\nfunction pushHash(path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\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 = function (History$$1) {\n function AbstractHistory(router, base) {\n History$$1.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n if (History$$1) AbstractHistory.__proto__ = History$$1;\n AbstractHistory.prototype = Object.create(History$$1 && History$$1.prototype);\n AbstractHistory.prototype.constructor = AbstractHistory;\n AbstractHistory.prototype.push = function push(location, onComplete, onAbort) {\n var this$1 = this;\n this.transitionTo(location, function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route);\n this$1.index++;\n onComplete && onComplete(route);\n }, onAbort);\n };\n AbstractHistory.prototype.replace = function replace(location, onComplete, onAbort) {\n var this$1 = this;\n this.transitionTo(location, function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\n onComplete && onComplete(route);\n }, onAbort);\n };\n AbstractHistory.prototype.go = function go(n) {\n var this$1 = this;\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(route, function () {\n this$1.index = targetIndex;\n this$1.updateRoute(route);\n });\n };\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation() {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/';\n };\n AbstractHistory.prototype.ensureURL = function ensureURL() {\n // noop\n };\n return AbstractHistory;\n}(History);\n\n/* */\n\nvar VueRouter = function VueRouter(options) {\n if (options === void 0) options = {};\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 var mode = options.mode || 'hash';\n this.fallback = 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 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};\nvar prototypeAccessors = {\n currentRoute: {\n configurable: true\n }\n};\nVueRouter.prototype.match = function match(raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom);\n};\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current;\n};\nVueRouter.prototype.init = function init(app /* Vue component instance */) {\n var this$1 = this;\n process.env.NODE_ENV !== 'production' && assert(install.installed, \"not installed. Make sure to call `Vue.use(VueRouter)` \" + \"before creating root instance.\");\n this.apps.push(app);\n\n // main app already initialized.\n if (this.app) {\n return;\n }\n this.app = app;\n var history = this.history;\n if (history instanceof HTML5History) {\n history.transitionTo(history.getCurrentLocation());\n } else if (history instanceof HashHistory) {\n var setupHashListener = function () {\n history.setupListeners();\n };\n history.transitionTo(history.getCurrentLocation(), setupHashListener, setupHashListener);\n }\n history.listen(function (route) {\n this$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\nVueRouter.prototype.beforeEach = function beforeEach(fn) {\n return registerHook(this.beforeHooks, fn);\n};\nVueRouter.prototype.beforeResolve = function beforeResolve(fn) {\n return registerHook(this.resolveHooks, fn);\n};\nVueRouter.prototype.afterEach = function afterEach(fn) {\n return registerHook(this.afterHooks, fn);\n};\nVueRouter.prototype.onReady = function onReady(cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\nVueRouter.prototype.onError = function onError(errorCb) {\n this.history.onError(errorCb);\n};\nVueRouter.prototype.push = function push(location, onComplete, onAbort) {\n this.history.push(location, onComplete, onAbort);\n};\nVueRouter.prototype.replace = function replace(location, onComplete, onAbort) {\n this.history.replace(location, onComplete, onAbort);\n};\nVueRouter.prototype.go = function go(n) {\n this.history.go(n);\n};\nVueRouter.prototype.back = function back() {\n this.go(-1);\n};\nVueRouter.prototype.forward = function forward() {\n this.go(1);\n};\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents(to) {\n var route = to ? to.matched ? to : this.resolve(to).route : this.currentRoute;\n if (!route) {\n return [];\n }\n return [].concat.apply([], route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key];\n });\n }));\n};\nVueRouter.prototype.resolve = function resolve(to, current, append) {\n var location = normalizeLocation(to, current || this.history.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};\nVueRouter.prototype.addRoutes = function addRoutes(routes) {\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\nObject.defineProperties(VueRouter.prototype, prototypeAccessors);\nfunction registerHook(list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) {\n 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}\nVueRouter.install = install;\nVueRouter.version = '2.8.0';\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\nexport default VueRouter;","map":{"version":3,"names":["assert","condition","message","Error","warn","process","env","NODE_ENV","console","isError","err","Object","prototype","toString","call","indexOf","View","name","functional","props","type","String","default","render","_","ref","children","parent","data","routerView","h","$createElement","route","$route","cache","_routerViewCache","depth","inactive","_routerRoot","$vnode","_inactive","$parent","routerViewDepth","matched","component","components","registerRouteInstance","vm","val","current","instances","hook","prepatch","vnode","componentInstance","resolveProps","attrs","key","config","params","undefined","path","encodeReserveRE","encodeReserveReplacer","c","charCodeAt","commaRE","encode","str","encodeURIComponent","replace","decode","decodeURIComponent","resolveQuery","query","extraQuery","_parseQuery","parse","parseQuery","parsedQuery","e","res","trim","split","forEach","param","parts","shift","length","join","Array","isArray","push","stringifyQuery","obj","keys","map","result","val2","filter","x","trailingSlashRE","createRoute","record","location","redirectedFrom","router","stringifyQuery$$1","options","clone","meta","hash","fullPath","getFullPath","formatMatch","freeze","value","START","unshift","_stringifyQuery","stringify","isSameRoute","a","b","isObjectEqual","aKeys","bKeys","every","aVal","bVal","isIncludedRoute","target","queryIncludes","toTypes","eventTypes","Link","to","required","tag","exact","Boolean","append","activeClass","exactActiveClass","event","this$1","$router","resolve","href","classes","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","handler","guardEvent","on","click","class","findAnchor","$slots","isStatic","extend","_Vue","util","aData","aAttrs","metaKey","altKey","ctrlKey","shiftKey","defaultPrevented","button","currentTarget","getAttribute","test","preventDefault","child","i","install","Vue","installed","isDef","v","registerInstance","callVal","$options","_parentVnode","mixin","beforeCreate","_router","init","defineReactive","history","destroyed","defineProperty","get","_route","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","created","inBrowser","window","resolvePath","relative","base","firstChar","charAt","stack","pop","segments","segment","parsePath","hashIndex","slice","queryIndex","cleanPath","isarray","arr","pathToRegexp_1","pathToRegexp","parse_1","compile_1","compile","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","RegExp","tokens","index","defaultDelimiter","delimiter","exec","m","escaped","offset","next","prefix","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","toUpperCase","encodeAsterisk","matches","opts","pretty","token","TypeError","JSON","j","attachKeys","re","flags","sensitive","regexpToRegexp","groups","source","match","arrayToRegexp","regexp","stringToRegexp","strict","end","endsWithDelimiter","regexpCompileCache","create","fillParams","routeMsg","filler","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","pathList","pathMap","nameMap","addRouteRecord","l","splice","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","redirect","beforeEnter","some","childMatchAs","alias","aliases","aliasRoute","normalizeLocation","raw","_normalized","assign","rawPath","parsedPath","basePath","createMatcher","addRoutes","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","hasOwnProperty","targetRecord","resolveRecordPath","resolvedPath","aliasedPath","aliasedMatch","aliasedRecord","len","positionStore","setupScroll","replaceState","getStateKey","addEventListener","saveScrollPosition","state","setStateKey","handleScroll","from","isPop","app","behavior","scrollBehavior","$nextTick","position","getScrollPosition","shouldScroll","then","scrollToPosition","catch","pageXOffset","y","pageYOffset","getElementPosition","el","docEl","document","documentElement","docRect","getBoundingClientRect","elRect","left","top","isValidPosition","isNumber","normalizePosition","normalizeOffset","isObject","selector","querySelector","scrollTo","supportsPushState","ua","navigator","userAgent","Time","performance","now","Date","_key","genKey","toFixed","pushState","url","runQueue","queue","fn","cb","step","resolveAsyncComponents","hasAsync","pending","error","flatMapComponents","def","cid","once","resolvedDef","isESModule","resolved","reject","reason","msg","comp","flatten","concat","apply","hasSymbol","Symbol","toStringTag","__esModule","called","args","arguments","History","normalizeBase","ready","readyCbs","readyErrorCbs","errorCbs","listen","onReady","errorCb","onError","transitionTo","onComplete","onAbort","confirmTransition","updateRoute","ensureURL","abort","resolveQueue","updated","deactivated","activated","extractLeaveGuards","beforeHooks","extractUpdateHooks","iterator","postEnterCbs","isValid","enterGuards","extractEnterGuards","resolveHooks","prev","afterHooks","baseEl","max","Math","extractGuards","records","bind","reverse","guards","instance","guard","extractGuard","bindGuard","boundRouteGuard","cbs","bindEnterGuard","routeEnterGuard","poll","setTimeout","HTML5History","History$$1","expectScroll","initLocation","getLocation","__proto__","constructor","go","n","fromRoute","getCurrentLocation","pathname","search","HashHistory","fallback","checkFallback","ensureSlash","setupListeners","supportsScroll","getHash","replaceHash","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","apps","matcher","mode","prototypeAccessors","configurable","setupHashListener","beforeEach","registerHook","beforeResolve","afterEach","back","forward","getMatchedComponents","createHref","normalizedTo","defineProperties","list","version","use"],"sources":["D:/Project/SISP-ADSI-601/vue/node_modules/vue-router/dist/vue-router.esm.js"],"sourcesContent":["/**\n * vue-router v2.8.0\n * (c) 2017 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 (process.env.NODE_ENV !== 'production' && !condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nvar View = {\n name: 'router-view',\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 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 if (parent.$vnode && parent.$vnode.data.routerView) {\n depth++;\n }\n if (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 return h(cache[name], data, children)\n }\n\n var matched = route.matched[depth];\n // render empty node if no matched route\n if (!matched) {\n cache[name] = null;\n return h()\n }\n\n var component = cache[name] = matched.components[name];\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 // resolve props\n data.props = resolveProps(route, matched.props && matched.props[name]);\n data.attrs = {};\n\n for (var key in data.props) {\n if (!('props' in component) || !(key in component.props)) {\n data.attrs[key] = data.props[key];\n delete data.props[key];\n }\n }\n\n return h(component, data, children)\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\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\nvar decode = decodeURIComponent;\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 parsedQuery[key] = extraQuery[key];\n }\n return parsedQuery\n}\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\n ? decode(parts.join('='))\n : 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 ? Object.keys(obj).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 }).filter(function (x) { return x.length > 0; }).join('&') : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery$$1 = 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$$1),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery$$1);\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) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return (\n a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') &&\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query)\n )\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params)\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);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key) {\n var aVal = a[key];\n var bVal = b[key];\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\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar Link = {\n name: 'router-link',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n exact: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(this.to, current, this.append);\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 = globalActiveClass == null\n ? 'router-link-active'\n : globalActiveClass;\n var exactActiveClassFallback = globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass = this.activeClass == null\n ? activeClassFallback\n : this.activeClass;\n var exactActiveClass = this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n var compareTarget = location.path\n ? createRoute(null, location, null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget);\n classes[activeClass] = this.exact\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1.replace) {\n router.replace(location);\n } else {\n router.push(location);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) { on[e] = handler; });\n } else {\n on[this.event] = handler;\n }\n\n var data = {\n class: classes\n };\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href };\n } else {\n // find the first <a> child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the <a> is a static node\n a.isStatic = false;\n var extend = _Vue.util.extend;\n var aData = a.data = extend({}, a.data);\n aData.on = on;\n var aAttrs = a.data.attrs = extend({}, a.data.attrs);\n aAttrs.href = href;\n } else {\n // doesn't have <a> 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('router-view', View);\n Vue.component('router-link', 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 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(/\\/\\//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))\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) {\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 + ')$');\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.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}\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 try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n return filler(params || {}, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n }\n}\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap\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);\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 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(path || name)) + \" cannot be a \" +\n \"string id. Use an actual component instead.\"\n );\n }\n\n var pathToRegexpOptions = route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(\n path,\n parent,\n pathToRegexpOptions.strict\n );\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 instances: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props: 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 (route.name && !route.redirect && route.children.some(function (child) { return /^\\/?$/.test(child.path); })) {\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 (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias)\n ? route.alias\n : [route.alias];\n\n aliases.forEach(function (alias) {\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 (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\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 (path, pathToRegexpOptions) {\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(!keys[key.name], (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\"));\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (path, parent, strict) {\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\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.name || next._normalized) {\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = assign({}, next);\n next._normalized = true;\n var params = assign(assign({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params, (\"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\nfunction assign (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\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 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 if (record) {\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n }\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 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 var val = typeof m[i] === 'string' ? decodeURIComponent(m[i]) : m[i];\n if (key) {\n params[key.name] = val;\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\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Fix for #1585 for Firefox\n window.history.replaceState({ key: getStateKey() }, '');\n window.addEventListener('popstate', function (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\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(to, from, isPop ? position : null);\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll.then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\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 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\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n var el = document.querySelector(shouldScroll.selector);\n if (el) {\n var offset = shouldScroll.offset && typeof shouldScroll.offset === 'object' ? shouldScroll.offset : {};\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 window.scrollTo(position.x, position.y);\n }\n}\n\n/* */\n\nvar supportsPushState = inBrowser && (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 && 'pushState' in window.history\n})();\n\n// use User Timing api (if present) for more accurate key precision\nvar Time = inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nvar _key = genKey();\n\nfunction genKey () {\n return Time.now().toFixed(3)\n}\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n _key = key;\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 history.replaceState({ key: _key }, '', url);\n } else {\n _key = genKey();\n history.pushState({ key: _key }, '', 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/* */\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};\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 (location, onComplete, onAbort) {\n var this$1 = this;\n\n var route = this.router.match(location, this.current);\n this.confirmTransition(route, function () {\n this$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n\n // fire ready cbs once\n if (!this$1.ready) {\n this$1.ready = true;\n this$1.readyCbs.forEach(function (cb) { cb(route); });\n }\n }, function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1.ready) {\n this$1.ready = true;\n this$1.readyErrorCbs.forEach(function (cb) { cb(err); });\n }\n });\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1 = this;\n\n var current = this.current;\n var abort = function (err) {\n if (isError(err)) {\n if (this$1.errorCbs.length) {\n this$1.errorCbs.forEach(function (cb) { cb(err); });\n } else {\n warn(false, 'uncaught error during route navigation:');\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n route.matched.length === current.matched.length\n ) {\n this.ensureURL();\n return abort()\n }\n\n var ref = resolveQueue(this.current.matched, route.matched);\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 this.pending = route;\n var iterator = function (hook, next) {\n if (this$1.pending !== route) {\n return abort()\n }\n try {\n hook(route, current, function (to) {\n if (to === false || isError(to)) {\n // next(false) -> abort navigation, ensure current URL\n this$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' && (\n typeof to.path === 'string' ||\n typeof to.name === 'string'\n ))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort();\n if (typeof to === 'object' && to.replace) {\n this$1.replace(to);\n } else {\n this$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 var postEnterCbs = [];\n var isValid = function () { return this$1.current === route; };\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated, postEnterCbs, isValid);\n var queue = enterGuards.concat(this$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort()\n }\n this$1.pending = null;\n onComplete(route);\n if (this$1.router.app) {\n this$1.router.app.$nextTick(function () {\n postEnterCbs.forEach(function (cb) { cb(); });\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n var prev = this.current;\n this.current = route;\n this.cb && this.cb(route);\n this.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect <base> 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 cbs,\n isValid\n) {\n return extractGuards(activated, 'beforeRouteEnter', function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key, cbs, isValid)\n })\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key,\n cbs,\n isValid\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n next(cb);\n if (typeof cb === 'function') {\n cbs.push(function () {\n // #750\n // if a router-view is wrapped with an out-in transition,\n // the instance may not have been registered at this time.\n // we will need to poll for registration until current route\n // is no longer valid.\n poll(cb, match.instances, key, isValid);\n });\n }\n })\n }\n}\n\nfunction poll (\n cb, // somehow flow cannot infer this is a function\n instances,\n key,\n isValid\n) {\n if (instances[key]) {\n cb(instances[key]);\n } else if (isValid()) {\n setTimeout(function () {\n poll(cb, instances, key, isValid);\n }, 16);\n }\n}\n\n/* */\n\n\nvar HTML5History = (function (History$$1) {\n function HTML5History (router, base) {\n var this$1 = this;\n\n History$$1.call(this, router, base);\n\n var expectScroll = router.options.scrollBehavior;\n\n if (expectScroll) {\n setupScroll();\n }\n\n var initLocation = getLocation(this.base);\n window.addEventListener('popstate', function (e) {\n var current = this$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.base);\n if (this$1.current === START && location === initLocation) {\n return\n }\n\n this$1.transitionTo(location, function (route) {\n if (expectScroll) {\n handleScroll(router, route, current, true);\n }\n });\n });\n }\n\n if ( History$$1 ) HTML5History.__proto__ = History$$1;\n HTML5History.prototype = Object.create( History$$1 && History$$1.prototype );\n HTML5History.prototype.constructor = HTML5History;\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 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$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 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$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 if (base && path.indexOf(base) === 0) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\n\nvar HashHistory = (function (History$$1) {\n function HashHistory (router, base, fallback) {\n History$$1.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$$1 ) HashHistory.__proto__ = History$$1;\n HashHistory.prototype = Object.create( History$$1 && History$$1.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 = this;\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n setupScroll();\n }\n\n window.addEventListener(supportsPushState ? 'popstate' : 'hashchange', function () {\n var current = this$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\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(\n cleanPath(base + '/#' + location)\n );\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 return index === -1 ? '' : href.slice(index + 1)\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\n\nvar AbstractHistory = (function (History$$1) {\n function AbstractHistory (router, base) {\n History$$1.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History$$1 ) AbstractHistory.__proto__ = History$$1;\n AbstractHistory.prototype = Object.create( History$$1 && History$$1.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(location, function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route);\n this$1.index++;\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(location, function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$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(route, function () {\n this$1.index = targetIndex;\n this$1.updateRoute(route);\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\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\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 = 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 (\n raw,\n current,\n redirectedFrom\n) {\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 = this;\n\n process.env.NODE_ENV !== 'production' && 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 // main app already initialized.\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History) {\n history.transitionTo(history.getCurrentLocation());\n } else if (history instanceof HashHistory) {\n var setupHashListener = function () {\n history.setupListeners();\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupHashListener,\n setupHashListener\n );\n }\n\n history.listen(function (route) {\n this$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 this.history.push(location, onComplete, onAbort);\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n this.history.replace(location, onComplete, onAbort);\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([], route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n }))\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n var location = normalizeLocation(\n to,\n current || this.history.current,\n append,\n this\n );\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.addRoutes = function addRoutes (routes) {\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\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\nVueRouter.install = install;\nVueRouter.version = '2.8.0';\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nexport default VueRouter;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|