Projekt

Obecné

Profil

Stáhnout (149 KB) Statistiky
| Větev: | Revize:
1
{"version":3,"file":"react-router-dom.min.js","sources":["../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../node_modules/react-is/cjs/react-is.production.min.js","../../node_modules/react-is/index.js","../../node_modules/object-assign/index.js","../../node_modules/prop-types/factoryWithTypeCheckers.js","../../node_modules/prop-types/factoryWithThrowingShims.js","../../node_modules/prop-types/index.js","../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../node_modules/@babel/runtime/helpers/esm/extends.js","../../node_modules/resolve-pathname/index.js","../../node_modules/value-equal/index.js","../../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../../node_modules/history/esm/history.js","../../node_modules/@babel/runtime/helpers/inheritsLoose.js","../../node_modules/gud/index.js","../../node_modules/mini-create-react-context/dist/esm/index.js","../../node_modules/path-to-regexp/index.js","../../node_modules/path-to-regexp/node_modules/isarray/index.js","../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../../react-router/esm/react-router.js","../modules/utils/locationUtils.js","../modules/Link.js","../modules/BrowserRouter.js","../modules/HashRouter.js","../modules/NavLink.js"],"sourcesContent":["export default function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}","/** @license React v16.9.0\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.suspense_list\"):\n60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.fundamental\"):60117,w=b?Symbol.for(\"react.responder\"):60118;function x(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case t:case r:case d:return u}}}function y(a){return x(a)===m}exports.typeOf=x;exports.AsyncMode=l;\nexports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===v||a.$$typeof===w)};exports.isAsyncMode=function(a){return y(a)||x(a)===l};exports.isConcurrentMode=y;exports.isContextConsumer=function(a){return x(a)===k};exports.isContextProvider=function(a){return x(a)===h};\nexports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return x(a)===n};exports.isFragment=function(a){return x(a)===e};exports.isLazy=function(a){return x(a)===t};exports.isMemo=function(a){return x(a)===r};exports.isPortal=function(a){return x(a)===d};exports.isProfiler=function(a){return x(a)===g};exports.isStrictMode=function(a){return x(a)===f};exports.isSuspense=function(a){return x(a)===p};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar has = Function.call.bind(Object.prototype.hasOwnProperty);\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n  return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n  /* global Symbol */\n  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n  /**\n   * Returns the iterator method function contained on the iterable object.\n   *\n   * Be sure to invoke the function with the iterable as context:\n   *\n   *     var iteratorFn = getIteratorFn(myIterable);\n   *     if (iteratorFn) {\n   *       var iterator = iteratorFn.call(myIterable);\n   *       ...\n   *     }\n   *\n   * @param {?object} maybeIterable\n   * @return {?function}\n   */\n  function getIteratorFn(maybeIterable) {\n    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n    if (typeof iteratorFn === 'function') {\n      return iteratorFn;\n    }\n  }\n\n  /**\n   * Collection of methods that allow declaration and validation of props that are\n   * supplied to React components. Example usage:\n   *\n   *   var Props = require('ReactPropTypes');\n   *   var MyArticle = React.createClass({\n   *     propTypes: {\n   *       // An optional string prop named \"description\".\n   *       description: Props.string,\n   *\n   *       // A required enum prop named \"category\".\n   *       category: Props.oneOf(['News','Photos']).isRequired,\n   *\n   *       // A prop named \"dialog\" that requires an instance of Dialog.\n   *       dialog: Props.instanceOf(Dialog).isRequired\n   *     },\n   *     render: function() { ... }\n   *   });\n   *\n   * A more formal specification of how these methods are used:\n   *\n   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n   *   decl := ReactPropTypes.{type}(.isRequired)?\n   *\n   * Each and every declaration produces a function with the same signature. This\n   * allows the creation of custom validation functions. For example:\n   *\n   *  var MyLink = React.createClass({\n   *    propTypes: {\n   *      // An optional string or URI prop named \"href\".\n   *      href: function(props, propName, componentName) {\n   *        var propValue = props[propName];\n   *        if (propValue != null && typeof propValue !== 'string' &&\n   *            !(propValue instanceof URI)) {\n   *          return new Error(\n   *            'Expected a string or an URI for ' + propName + ' in ' +\n   *            componentName\n   *          );\n   *        }\n   *      }\n   *    },\n   *    render: function() {...}\n   *  });\n   *\n   * @internal\n   */\n\n  var ANONYMOUS = '<<anonymous>>';\n\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n  var ReactPropTypes = {\n    array: createPrimitiveTypeChecker('array'),\n    bool: createPrimitiveTypeChecker('boolean'),\n    func: createPrimitiveTypeChecker('function'),\n    number: createPrimitiveTypeChecker('number'),\n    object: createPrimitiveTypeChecker('object'),\n    string: createPrimitiveTypeChecker('string'),\n    symbol: createPrimitiveTypeChecker('symbol'),\n\n    any: createAnyTypeChecker(),\n    arrayOf: createArrayOfTypeChecker,\n    element: createElementTypeChecker(),\n    elementType: createElementTypeTypeChecker(),\n    instanceOf: createInstanceTypeChecker,\n    node: createNodeChecker(),\n    objectOf: createObjectOfTypeChecker,\n    oneOf: createEnumTypeChecker,\n    oneOfType: createUnionTypeChecker,\n    shape: createShapeTypeChecker,\n    exact: createStrictShapeTypeChecker,\n  };\n\n  /**\n   * inlined Object.is polyfill to avoid requiring consumers ship their own\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n   */\n  /*eslint-disable no-self-compare*/\n  function is(x, y) {\n    // SameValue algorithm\n    if (x === y) {\n      // Steps 1-5, 7-10\n      // Steps 6.b-6.e: +0 != -0\n      return x !== 0 || 1 / x === 1 / y;\n    } else {\n      // Step 6.a: NaN == NaN\n      return x !== x && y !== y;\n    }\n  }\n  /*eslint-enable no-self-compare*/\n\n  /**\n   * We use an Error-like object for backward compatibility as people may call\n   * PropTypes directly and inspect their output. However, we don't use real\n   * Errors anymore. We don't inspect their stack anyway, and creating them\n   * is prohibitively expensive if they are created too often, such as what\n   * happens in oneOfType() for any type before the one that matched.\n   */\n  function PropTypeError(message) {\n    this.message = message;\n    this.stack = '';\n  }\n  // Make `instanceof Error` still work for returned errors.\n  PropTypeError.prototype = Error.prototype;\n\n  function createChainableTypeChecker(validate) {\n    if (process.env.NODE_ENV !== 'production') {\n      var manualPropTypeCallCache = {};\n      var manualPropTypeWarningCount = 0;\n    }\n    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n      componentName = componentName || ANONYMOUS;\n      propFullName = propFullName || propName;\n\n      if (secret !== ReactPropTypesSecret) {\n        if (throwOnDirectAccess) {\n          // New behavior only for users of `prop-types` package\n          var err = new Error(\n            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n            'Use `PropTypes.checkPropTypes()` to call them. ' +\n            'Read more at http://fb.me/use-check-prop-types'\n          );\n          err.name = 'Invariant Violation';\n          throw err;\n        } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n          // Old behavior for people using React.PropTypes\n          var cacheKey = componentName + ':' + propName;\n          if (\n            !manualPropTypeCallCache[cacheKey] &&\n            // Avoid spamming the console because they are often not actionable except for lib authors\n            manualPropTypeWarningCount < 3\n          ) {\n            printWarning(\n              'You are manually calling a React.PropTypes validation ' +\n              'function for the `' + propFullName + '` prop on `' + componentName  + '`. This is deprecated ' +\n              'and will throw in the standalone `prop-types` package. ' +\n              'You may be seeing this warning due to a third-party PropTypes ' +\n              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n            );\n            manualPropTypeCallCache[cacheKey] = true;\n            manualPropTypeWarningCount++;\n          }\n        }\n      }\n      if (props[propName] == null) {\n        if (isRequired) {\n          if (props[propName] === null) {\n            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n          }\n          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n        }\n        return null;\n      } else {\n        return validate(props, propName, componentName, location, propFullName);\n      }\n    }\n\n    var chainedCheckType = checkType.bind(null, false);\n    chainedCheckType.isRequired = checkType.bind(null, true);\n\n    return chainedCheckType;\n  }\n\n  function createPrimitiveTypeChecker(expectedType) {\n    function validate(props, propName, componentName, location, propFullName, secret) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== expectedType) {\n        // `propValue` being instance of, say, date/regexp, pass the 'object'\n        // check, but we can offer a more precise error message here rather than\n        // 'of type `object`'.\n        var preciseType = getPreciseType(propValue);\n\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createAnyTypeChecker() {\n    return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n  }\n\n  function createArrayOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n      }\n      var propValue = props[propName];\n      if (!Array.isArray(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n      }\n      for (var i = 0; i < propValue.length; i++) {\n        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n        if (error instanceof Error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!isValidElement(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!ReactIs.isValidElementType(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createInstanceTypeChecker(expectedClass) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!(props[propName] instanceof expectedClass)) {\n        var expectedClassName = expectedClass.name || ANONYMOUS;\n        var actualClassName = getClassName(props[propName]);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createEnumTypeChecker(expectedValues) {\n    if (!Array.isArray(expectedValues)) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (arguments.length > 1) {\n          printWarning(\n            'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n            'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n          );\n        } else {\n          printWarning('Invalid argument supplied to oneOf, expected an array.');\n        }\n      }\n      return emptyFunctionThatReturnsNull;\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      for (var i = 0; i < expectedValues.length; i++) {\n        if (is(propValue, expectedValues[i])) {\n          return null;\n        }\n      }\n\n      var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n        var type = getPreciseType(value);\n        if (type === 'symbol') {\n          return String(value);\n        }\n        return value;\n      });\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createObjectOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n      }\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n      }\n      for (var key in propValue) {\n        if (has(propValue, key)) {\n          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n          if (error instanceof Error) {\n            return error;\n          }\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createUnionTypeChecker(arrayOfTypeCheckers) {\n    if (!Array.isArray(arrayOfTypeCheckers)) {\n      process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n      return emptyFunctionThatReturnsNull;\n    }\n\n    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n      var checker = arrayOfTypeCheckers[i];\n      if (typeof checker !== 'function') {\n        printWarning(\n          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n          'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n        );\n        return emptyFunctionThatReturnsNull;\n      }\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n        var checker = arrayOfTypeCheckers[i];\n        if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n          return null;\n        }\n      }\n\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createNodeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!isNode(props[propName])) {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      for (var key in shapeTypes) {\n        var checker = shapeTypes[key];\n        if (!checker) {\n          continue;\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createStrictShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      // We need to check all keys in case some are required but missing from\n      // props.\n      var allKeys = assign({}, props[propName], shapeTypes);\n      for (var key in allKeys) {\n        var checker = shapeTypes[key];\n        if (!checker) {\n          return new PropTypeError(\n            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n            '\\nBad object: ' + JSON.stringify(props[propName], null, '  ') +\n            '\\nValid keys: ' +  JSON.stringify(Object.keys(shapeTypes), null, '  ')\n          );\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n\n    return createChainableTypeChecker(validate);\n  }\n\n  function isNode(propValue) {\n    switch (typeof propValue) {\n      case 'number':\n      case 'string':\n      case 'undefined':\n        return true;\n      case 'boolean':\n        return !propValue;\n      case 'object':\n        if (Array.isArray(propValue)) {\n          return propValue.every(isNode);\n        }\n        if (propValue === null || isValidElement(propValue)) {\n          return true;\n        }\n\n        var iteratorFn = getIteratorFn(propValue);\n        if (iteratorFn) {\n          var iterator = iteratorFn.call(propValue);\n          var step;\n          if (iteratorFn !== propValue.entries) {\n            while (!(step = iterator.next()).done) {\n              if (!isNode(step.value)) {\n                return false;\n              }\n            }\n          } else {\n            // Iterator will provide entry [k,v] tuples rather than values.\n            while (!(step = iterator.next()).done) {\n              var entry = step.value;\n              if (entry) {\n                if (!isNode(entry[1])) {\n                  return false;\n                }\n              }\n            }\n          }\n        } else {\n          return false;\n        }\n\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  function isSymbol(propType, propValue) {\n    // Native Symbol.\n    if (propType === 'symbol') {\n      return true;\n    }\n\n    // falsy value can't be a Symbol\n    if (!propValue) {\n      return false;\n    }\n\n    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n    if (propValue['@@toStringTag'] === 'Symbol') {\n      return true;\n    }\n\n    // Fallback for non-spec compliant Symbols which are polyfilled.\n    if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n      return true;\n    }\n\n    return false;\n  }\n\n  // Equivalent of `typeof` but with special handling for array and regexp.\n  function getPropType(propValue) {\n    var propType = typeof propValue;\n    if (Array.isArray(propValue)) {\n      return 'array';\n    }\n    if (propValue instanceof RegExp) {\n      // Old webkits (at least until Android 4.0) return 'function' rather than\n      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n      // passes PropTypes.object.\n      return 'object';\n    }\n    if (isSymbol(propType, propValue)) {\n      return 'symbol';\n    }\n    return propType;\n  }\n\n  // This handles more types than `getPropType`. Only used for error messages.\n  // See `createPrimitiveTypeChecker`.\n  function getPreciseType(propValue) {\n    if (typeof propValue === 'undefined' || propValue === null) {\n      return '' + propValue;\n    }\n    var propType = getPropType(propValue);\n    if (propType === 'object') {\n      if (propValue instanceof Date) {\n        return 'date';\n      } else if (propValue instanceof RegExp) {\n        return 'regexp';\n      }\n    }\n    return propType;\n  }\n\n  // Returns a string that is postfixed to a warning about an invalid type.\n  // For example, \"undefined\" or \"of type array\"\n  function getPostfixForTypeWarning(value) {\n    var type = getPreciseType(value);\n    switch (type) {\n      case 'array':\n      case 'object':\n        return 'an ' + type;\n      case 'boolean':\n      case 'date':\n      case 'regexp':\n        return 'a ' + type;\n      default:\n        return type;\n    }\n  }\n\n  // Returns class name of the object, if any.\n  function getClassName(propValue) {\n    if (!propValue.constructor || !propValue.constructor.name) {\n      return ANONYMOUS;\n    }\n    return propValue.constructor.name;\n  }\n\n  ReactPropTypes.checkPropTypes = checkPropTypes;\n  ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","export default function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n  return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n  for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n    list[i] = list[k];\n  }\n\n  list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to) {\n  var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n  var toParts = to && to.split('/') || [];\n  var fromParts = from && from.split('/') || [];\n\n  var isToAbs = to && isAbsolute(to);\n  var isFromAbs = from && isAbsolute(from);\n  var mustEndAbs = isToAbs || isFromAbs;\n\n  if (to && isAbsolute(to)) {\n    // to is absolute\n    fromParts = toParts;\n  } else if (toParts.length) {\n    // to is relative, drop the filename\n    fromParts.pop();\n    fromParts = fromParts.concat(toParts);\n  }\n\n  if (!fromParts.length) return '/';\n\n  var hasTrailingSlash = void 0;\n  if (fromParts.length) {\n    var last = fromParts[fromParts.length - 1];\n    hasTrailingSlash = last === '.' || last === '..' || last === '';\n  } else {\n    hasTrailingSlash = false;\n  }\n\n  var up = 0;\n  for (var i = fromParts.length; i >= 0; i--) {\n    var part = fromParts[i];\n\n    if (part === '.') {\n      spliceOne(fromParts, i);\n    } else if (part === '..') {\n      spliceOne(fromParts, i);\n      up++;\n    } else if (up) {\n      spliceOne(fromParts, i);\n      up--;\n    }\n  }\n\n  if (!mustEndAbs) for (; up--; up) {\n    fromParts.unshift('..');\n  }if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n\n  var result = fromParts.join('/');\n\n  if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n  return result;\n}\n\nexport default resolvePathname;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction valueEqual(a, b) {\n  if (a === b) return true;\n\n  if (a == null || b == null) return false;\n\n  if (Array.isArray(a)) {\n    return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n      return valueEqual(item, b[index]);\n    });\n  }\n\n  var aType = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n  var bType = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\n  if (aType !== bType) return false;\n\n  if (aType === 'object') {\n    var aValue = a.valueOf();\n    var bValue = b.valueOf();\n\n    if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n    var aKeys = Object.keys(a);\n    var bKeys = Object.keys(b);\n\n    if (aKeys.length !== bKeys.length) return false;\n\n    return aKeys.every(function (key) {\n      return valueEqual(a[key], b[key]);\n    });\n  }\n\n  return false;\n}\n\nexport default valueEqual;","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n  if (condition) {\n    return;\n  }\n\n  if (isProduction) {\n    throw new Error(prefix);\n  } else {\n    throw new Error(prefix + \": \" + (message || ''));\n  }\n}\n\nexport default invariant;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n  return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n}\nfunction stripBasename(path, prefix) {\n  return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n  return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n  var pathname = path || '/';\n  var search = '';\n  var hash = '';\n  var hashIndex = pathname.indexOf('#');\n\n  if (hashIndex !== -1) {\n    hash = pathname.substr(hashIndex);\n    pathname = pathname.substr(0, hashIndex);\n  }\n\n  var searchIndex = pathname.indexOf('?');\n\n  if (searchIndex !== -1) {\n    search = pathname.substr(searchIndex);\n    pathname = pathname.substr(0, searchIndex);\n  }\n\n  return {\n    pathname: pathname,\n    search: search === '?' ? '' : search,\n    hash: hash === '#' ? '' : hash\n  };\n}\nfunction createPath(location) {\n  var pathname = location.pathname,\n      search = location.search,\n      hash = location.hash;\n  var path = pathname || '/';\n  if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n  if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n  return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n  var location;\n\n  if (typeof path === 'string') {\n    // Two-arg form: push(path, state)\n    location = parsePath(path);\n    location.state = state;\n  } else {\n    // One-arg form: push(location)\n    location = _extends({}, path);\n    if (location.pathname === undefined) location.pathname = '';\n\n    if (location.search) {\n      if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n    } else {\n      location.search = '';\n    }\n\n    if (location.hash) {\n      if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n    } else {\n      location.hash = '';\n    }\n\n    if (state !== undefined && location.state === undefined) location.state = state;\n  }\n\n  try {\n    location.pathname = decodeURI(location.pathname);\n  } catch (e) {\n    if (e instanceof URIError) {\n      throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n    } else {\n      throw e;\n    }\n  }\n\n  if (key) location.key = key;\n\n  if (currentLocation) {\n    // Resolve incomplete/relative pathname relative to current location.\n    if (!location.pathname) {\n      location.pathname = currentLocation.pathname;\n    } else if (location.pathname.charAt(0) !== '/') {\n      location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n    }\n  } else {\n    // When there is no prior location and pathname is empty, set it to /\n    if (!location.pathname) {\n      location.pathname = '/';\n    }\n  }\n\n  return location;\n}\nfunction locationsAreEqual(a, b) {\n  return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n  var prompt = null;\n\n  function setPrompt(nextPrompt) {\n    process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n    prompt = nextPrompt;\n    return function () {\n      if (prompt === nextPrompt) prompt = null;\n    };\n  }\n\n  function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n    // TODO: If another transition starts while we're still confirming\n    // the previous one, we may end up in a weird state. Figure out the\n    // best way to handle this.\n    if (prompt != null) {\n      var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n      if (typeof result === 'string') {\n        if (typeof getUserConfirmation === 'function') {\n          getUserConfirmation(result, callback);\n        } else {\n          process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n          callback(true);\n        }\n      } else {\n        // Return false from a transition hook to cancel the transition.\n        callback(result !== false);\n      }\n    } else {\n      callback(true);\n    }\n  }\n\n  var listeners = [];\n\n  function appendListener(fn) {\n    var isActive = true;\n\n    function listener() {\n      if (isActive) fn.apply(void 0, arguments);\n    }\n\n    listeners.push(listener);\n    return function () {\n      isActive = false;\n      listeners = listeners.filter(function (item) {\n        return item !== listener;\n      });\n    };\n  }\n\n  function notifyListeners() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    listeners.forEach(function (listener) {\n      return listener.apply(void 0, args);\n    });\n  }\n\n  return {\n    setPrompt: setPrompt,\n    confirmTransitionTo: confirmTransitionTo,\n    appendListener: appendListener,\n    notifyListeners: notifyListeners\n  };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n  callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\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) return false;\n  return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n  return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n  return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n  event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n  try {\n    return window.history.state || {};\n  } catch (e) {\n    // IE 11 sometimes throws when accessing window.history.state\n    // See https://github.com/ReactTraining/history/pull/289\n    return {};\n  }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n  var globalHistory = window.history;\n  var canUseHistory = supportsHistory();\n  var needsHashChangeListener = !supportsPopStateOnHashChange();\n  var _props = props,\n      _props$forceRefresh = _props.forceRefresh,\n      forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n      _props$getUserConfirm = _props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n      _props$keyLength = _props.keyLength,\n      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n  function getDOMLocation(historyState) {\n    var _ref = historyState || {},\n        key = _ref.key,\n        state = _ref.state;\n\n    var _window$location = window.location,\n        pathname = _window$location.pathname,\n        search = _window$location.search,\n        hash = _window$location.hash;\n    var path = pathname + search + hash;\n    process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n    if (basename) path = stripBasename(path, basename);\n    return createLocation(path, state, key);\n  }\n\n  function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  }\n\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  function handlePopState(event) {\n    // Ignore extraneous popstate events in WebKit.\n    if (isExtraneousPopstateEvent(event)) return;\n    handlePop(getDOMLocation(event.state));\n  }\n\n  function handleHashChange() {\n    handlePop(getDOMLocation(getHistoryState()));\n  }\n\n  var forceNextPop = false;\n\n  function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({\n            action: action,\n            location: location\n          });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  }\n\n  function revertPop(fromLocation) {\n    var toLocation = history.location; // TODO: We could probably make this more reliable by\n    // keeping a list of keys we've seen in sessionStorage.\n    // Instead, we just default to 0 for keys we don't know.\n\n    var toIndex = allKeys.indexOf(toLocation.key);\n    if (toIndex === -1) toIndex = 0;\n    var fromIndex = allKeys.indexOf(fromLocation.key);\n    if (fromIndex === -1) fromIndex = 0;\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  }\n\n  var initialLocation = getDOMLocation(getHistoryState());\n  var allKeys = [initialLocation.key]; // Public interface\n\n  function createHref(location) {\n    return basename + createPath(location);\n  }\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n      if (canUseHistory) {\n        globalHistory.pushState({\n          key: key,\n          state: state\n        }, null, href);\n\n        if (forceRefresh) {\n          window.location.href = href;\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n          var nextKeys = allKeys.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n          nextKeys.push(location.key);\n          allKeys = nextKeys;\n          setState({\n            action: action,\n            location: location\n          });\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n        window.location.href = href;\n      }\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n      if (canUseHistory) {\n        globalHistory.replaceState({\n          key: key,\n          state: state\n        }, null, href);\n\n        if (forceRefresh) {\n          window.location.replace(href);\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n          if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n          setState({\n            action: action,\n            location: location\n          });\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n        window.location.replace(href);\n      }\n    });\n  }\n\n  function go(n) {\n    globalHistory.go(n);\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  var listenerCount = 0;\n\n  function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1 && delta === 1) {\n      window.addEventListener(PopStateEvent, handlePopState);\n      if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n    } else if (listenerCount === 0) {\n      window.removeEventListener(PopStateEvent, handlePopState);\n      if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n    }\n  }\n\n  var isBlocked = false;\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    var unblock = transitionManager.setPrompt(prompt);\n\n    if (!isBlocked) {\n      checkDOMListeners(1);\n      isBlocked = true;\n    }\n\n    return function () {\n      if (isBlocked) {\n        isBlocked = false;\n        checkDOMListeners(-1);\n      }\n\n      return unblock();\n    };\n  }\n\n  function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n    return function () {\n      checkDOMListeners(-1);\n      unlisten();\n    };\n  }\n\n  var history = {\n    length: globalHistory.length,\n    action: 'POP',\n    location: initialLocation,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n  hashbang: {\n    encodePath: function encodePath(path) {\n      return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n    },\n    decodePath: function decodePath(path) {\n      return path.charAt(0) === '!' ? path.substr(1) : path;\n    }\n  },\n  noslash: {\n    encodePath: stripLeadingSlash,\n    decodePath: addLeadingSlash\n  },\n  slash: {\n    encodePath: addLeadingSlash,\n    decodePath: addLeadingSlash\n  }\n};\n\nfunction getHashPath() {\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 hashIndex = href.indexOf('#');\n  return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n  window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n  var hashIndex = window.location.href.indexOf('#');\n  window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n  var globalHistory = window.history;\n  var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n  var _props = props,\n      _props$getUserConfirm = _props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n      _props$hashType = _props.hashType,\n      hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n  var _HashPathCoders$hashT = HashPathCoders[hashType],\n      encodePath = _HashPathCoders$hashT.encodePath,\n      decodePath = _HashPathCoders$hashT.decodePath;\n\n  function getDOMLocation() {\n    var path = decodePath(getHashPath());\n    process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n    if (basename) path = stripBasename(path, basename);\n    return createLocation(path);\n  }\n\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  var forceNextPop = false;\n  var ignorePath = null;\n\n  function handleHashChange() {\n    var path = getHashPath();\n    var encodedPath = encodePath(path);\n\n    if (path !== encodedPath) {\n      // Ensure we always have a properly-encoded hash.\n      replaceHashPath(encodedPath);\n    } else {\n      var location = getDOMLocation();\n      var prevLocation = history.location;\n      if (!forceNextPop && locationsAreEqual(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n      if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n      ignorePath = null;\n      handlePop(location);\n    }\n  }\n\n  function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({\n            action: action,\n            location: location\n          });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  }\n\n  function revertPop(fromLocation) {\n    var toLocation = history.location; // TODO: We could probably make this more reliable by\n    // keeping a list of paths we've seen in sessionStorage.\n    // Instead, we just default to 0 for paths we don't know.\n\n    var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n    if (toIndex === -1) toIndex = 0;\n    var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n    if (fromIndex === -1) fromIndex = 0;\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  } // Ensure the hash is encoded properly before doing anything else.\n\n\n  var path = getHashPath();\n  var encodedPath = encodePath(path);\n  if (path !== encodedPath) replaceHashPath(encodedPath);\n  var initialLocation = getDOMLocation();\n  var allPaths = [createPath(initialLocation)]; // Public interface\n\n  function createHref(location) {\n    return '#' + encodePath(basename + createPath(location));\n  }\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, undefined, undefined, history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var path = createPath(location);\n      var encodedPath = encodePath(basename + path);\n      var hashChanged = getHashPath() !== encodedPath;\n\n      if (hashChanged) {\n        // We cannot tell if a hashchange was caused by a PUSH, so we'd\n        // rather setState here and ignore the hashchange. The caveat here\n        // is that other hash histories in the page will consider it a POP.\n        ignorePath = path;\n        pushHashPath(encodedPath);\n        var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n        var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n        nextPaths.push(path);\n        allPaths = nextPaths;\n        setState({\n          action: action,\n          location: location\n        });\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n        setState();\n      }\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, undefined, undefined, history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var path = createPath(location);\n      var encodedPath = encodePath(basename + path);\n      var hashChanged = getHashPath() !== encodedPath;\n\n      if (hashChanged) {\n        // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n        // rather setState here and ignore the hashchange. The caveat here\n        // is that other hash histories in the page will consider it a POP.\n        ignorePath = path;\n        replaceHashPath(encodedPath);\n      }\n\n      var prevIndex = allPaths.indexOf(createPath(history.location));\n      if (prevIndex !== -1) allPaths[prevIndex] = path;\n      setState({\n        action: action,\n        location: location\n      });\n    });\n  }\n\n  function go(n) {\n    process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n    globalHistory.go(n);\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  var listenerCount = 0;\n\n  function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1 && delta === 1) {\n      window.addEventListener(HashChangeEvent$1, handleHashChange);\n    } else if (listenerCount === 0) {\n      window.removeEventListener(HashChangeEvent$1, handleHashChange);\n    }\n  }\n\n  var isBlocked = false;\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    var unblock = transitionManager.setPrompt(prompt);\n\n    if (!isBlocked) {\n      checkDOMListeners(1);\n      isBlocked = true;\n    }\n\n    return function () {\n      if (isBlocked) {\n        isBlocked = false;\n        checkDOMListeners(-1);\n      }\n\n      return unblock();\n    };\n  }\n\n  function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n    return function () {\n      checkDOMListeners(-1);\n      unlisten();\n    };\n  }\n\n  var history = {\n    length: globalHistory.length,\n    action: 'POP',\n    location: initialLocation,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n  return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  var _props = props,\n      getUserConfirmation = _props.getUserConfirmation,\n      _props$initialEntries = _props.initialEntries,\n      initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n      _props$initialIndex = _props.initialIndex,\n      initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n      _props$keyLength = _props.keyLength,\n      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = history.entries.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  }\n\n  var index = clamp(initialIndex, 0, initialEntries.length - 1);\n  var entries = initialEntries.map(function (entry) {\n    return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n  }); // Public interface\n\n  var createHref = createPath;\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var prevIndex = history.index;\n      var nextIndex = prevIndex + 1;\n      var nextEntries = history.entries.slice(0);\n\n      if (nextEntries.length > nextIndex) {\n        nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n      } else {\n        nextEntries.push(location);\n      }\n\n      setState({\n        action: action,\n        location: location,\n        index: nextIndex,\n        entries: nextEntries\n      });\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      history.entries[history.index] = location;\n      setState({\n        action: action,\n        location: location\n      });\n    });\n  }\n\n  function go(n) {\n    var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n    var action = 'POP';\n    var location = history.entries[nextIndex];\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (ok) {\n        setState({\n          action: action,\n          location: location,\n          index: nextIndex\n        });\n      } else {\n        // Mimic the behavior of DOM histories by\n        // causing a render after a cancelled POP.\n        setState();\n      }\n    });\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  function canGo(n) {\n    var nextIndex = history.index + n;\n    return nextIndex >= 0 && nextIndex < history.entries.length;\n  }\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    return transitionManager.setPrompt(prompt);\n  }\n\n  function listen(listener) {\n    return transitionManager.appendListener(listener);\n  }\n\n  var history = {\n    length: entries.length,\n    action: 'POP',\n    location: entries[index],\n    index: index,\n    entries: entries,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    canGo: canGo,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n  return global[key] = (global[key] || 0) + 1;\n};\n","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport gud from 'gud';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\n\nfunction objectIs(x, y) {\n  if (x === y) {\n    return x !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nfunction createEventEmitter(value) {\n  var handlers = [];\n  return {\n    on: function on(handler) {\n      handlers.push(handler);\n    },\n    off: function off(handler) {\n      handlers = handlers.filter(function (h) {\n        return h !== handler;\n      });\n    },\n    get: function get() {\n      return value;\n    },\n    set: function set(newValue, changedBits) {\n      value = newValue;\n      handlers.forEach(function (handler) {\n        return handler(value, changedBits);\n      });\n    }\n  };\n}\n\nfunction onlyChild(children) {\n  return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n  var _Provider$childContex, _Consumer$contextType;\n\n  var contextProp = '__create-react-context-' + gud() + '__';\n\n  var Provider =\n  /*#__PURE__*/\n  function (_Component) {\n    _inheritsLoose(Provider, _Component);\n\n    function Provider() {\n      var _this;\n\n      _this = _Component.apply(this, arguments) || this;\n      _this.emitter = createEventEmitter(_this.props.value);\n      return _this;\n    }\n\n    var _proto = Provider.prototype;\n\n    _proto.getChildContext = function getChildContext() {\n      var _ref;\n\n      return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n    };\n\n    _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      if (this.props.value !== nextProps.value) {\n        var oldValue = this.props.value;\n        var newValue = nextProps.value;\n        var changedBits;\n\n        if (objectIs(oldValue, newValue)) {\n          changedBits = 0;\n        } else {\n          changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n          if (process.env.NODE_ENV !== 'production') {\n            warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n          }\n\n          changedBits |= 0;\n\n          if (changedBits !== 0) {\n            this.emitter.set(nextProps.value, changedBits);\n          }\n        }\n      }\n    };\n\n    _proto.render = function render() {\n      return this.props.children;\n    };\n\n    return Provider;\n  }(Component);\n\n  Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n  var Consumer =\n  /*#__PURE__*/\n  function (_Component2) {\n    _inheritsLoose(Consumer, _Component2);\n\n    function Consumer() {\n      var _this2;\n\n      _this2 = _Component2.apply(this, arguments) || this;\n      _this2.state = {\n        value: _this2.getValue()\n      };\n\n      _this2.onUpdate = function (newValue, changedBits) {\n        var observedBits = _this2.observedBits | 0;\n\n        if ((observedBits & changedBits) !== 0) {\n          _this2.setState({\n            value: _this2.getValue()\n          });\n        }\n      };\n\n      return _this2;\n    }\n\n    var _proto2 = Consumer.prototype;\n\n    _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      var observedBits = nextProps.observedBits;\n      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n    };\n\n    _proto2.componentDidMount = function componentDidMount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].on(this.onUpdate);\n      }\n\n      var observedBits = this.props.observedBits;\n      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n    };\n\n    _proto2.componentWillUnmount = function componentWillUnmount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].off(this.onUpdate);\n      }\n    };\n\n    _proto2.getValue = function getValue() {\n      if (this.context[contextProp]) {\n        return this.context[contextProp].get();\n      } else {\n        return defaultValue;\n      }\n    };\n\n    _proto2.render = function render() {\n      return onlyChild(this.props.children)(this.state.value);\n    };\n\n    return Consumer;\n  }(Component);\n\n  Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n  return {\n    Provider: Provider,\n    Consumer: Consumer\n  };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = 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","module.exports = Array.isArray || function (arr) {\n  return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\nvar REACT_STATICS = {\n    childContextTypes: true,\n    contextType: true,\n    contextTypes: true,\n    defaultProps: true,\n    displayName: true,\n    getDefaultProps: true,\n    getDerivedStateFromError: true,\n    getDerivedStateFromProps: true,\n    mixins: true,\n    propTypes: true,\n    type: true\n};\n\nvar KNOWN_STATICS = {\n    name: true,\n    length: true,\n    prototype: true,\n    caller: true,\n    callee: true,\n    arguments: true,\n    arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n    '$$typeof': true,\n    render: true,\n    defaultProps: true,\n    displayName: true,\n    propTypes: true\n};\n\nvar MEMO_STATICS = {\n    '$$typeof': true,\n    compare: true,\n    defaultProps: true,\n    displayName: true,\n    propTypes: true,\n    type: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nfunction getStatics(component) {\n    if (ReactIs.isMemo(component)) {\n        return MEMO_STATICS;\n    }\n    return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n    if (typeof sourceComponent !== 'string') {\n        // don't hoist over string (html) components\n\n        if (objectPrototype) {\n            var inheritedComponent = getPrototypeOf(sourceComponent);\n            if (inheritedComponent && inheritedComponent !== objectPrototype) {\n                hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n            }\n        }\n\n        var keys = getOwnPropertyNames(sourceComponent);\n\n        if (getOwnPropertySymbols) {\n            keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n        }\n\n        var targetStatics = getStatics(targetComponent);\n        var sourceStatics = getStatics(sourceComponent);\n\n        for (var i = 0; i < keys.length; ++i) {\n            var key = keys[i];\n            if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n                var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n                try {\n                    // Avoid failures from read-only properties\n                    defineProperty(targetComponent, key, descriptor);\n                } catch (e) {}\n            }\n        }\n\n        return targetComponent;\n    }\n\n    return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { createMemoryHistory, createLocation, locationsAreEqual, createPath } from 'history';\nimport warning from 'tiny-warning';\nimport createContext from 'mini-create-react-context';\nimport invariant from 'tiny-invariant';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport pathToRegexp from 'path-to-regexp';\nimport { isValidElementType } from 'react-is';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport hoistStatics from 'hoist-non-react-statics';\n\n// TODO: Replace with React.createContext once we can assume React 16+\n\nvar createNamedContext = function createNamedContext(name) {\n  var context = createContext();\n  context.displayName = name;\n  return context;\n};\n\nvar context =\n/*#__PURE__*/\ncreateNamedContext(\"Router\");\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Router, _React$Component);\n\n  Router.computeRootMatch = function computeRootMatch(pathname) {\n    return {\n      path: \"/\",\n      url: \"/\",\n      params: {},\n      isExact: pathname === \"/\"\n    };\n  };\n\n  function Router(props) {\n    var _this;\n\n    _this = _React$Component.call(this, props) || this;\n    _this.state = {\n      location: props.history.location\n    }; // This is a bit of a hack. We have to start listening for location\n    // changes here in the constructor in case there are any <Redirect>s\n    // on the initial render. If there are, they will replace/push when\n    // they mount and since cDM fires in children before parents, we may\n    // get a new location before the <Router> is mounted.\n\n    _this._isMounted = false;\n    _this._pendingLocation = null;\n\n    if (!props.staticContext) {\n      _this.unlisten = props.history.listen(function (location) {\n        if (_this._isMounted) {\n          _this.setState({\n            location: location\n          });\n        } else {\n          _this._pendingLocation = location;\n        }\n      });\n    }\n\n    return _this;\n  }\n\n  var _proto = Router.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this._isMounted = true;\n\n    if (this._pendingLocation) {\n      this.setState({\n        location: this._pendingLocation\n      });\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    if (this.unlisten) this.unlisten();\n  };\n\n  _proto.render = function render() {\n    return React.createElement(context.Provider, {\n      children: this.props.children || null,\n      value: {\n        history: this.props.history,\n        location: this.state.location,\n        match: Router.computeRootMatch(this.state.location.pathname),\n        staticContext: this.props.staticContext\n      }\n    });\n  };\n\n  return Router;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n  Router.propTypes = {\n    children: PropTypes.node,\n    history: PropTypes.object.isRequired,\n    staticContext: PropTypes.object\n  };\n\n  Router.prototype.componentDidUpdate = function (prevProps) {\n    process.env.NODE_ENV !== \"production\" ? warning(prevProps.history === this.props.history, \"You cannot change <Router history>\") : void 0;\n  };\n}\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\n\nvar MemoryRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(MemoryRouter, _React$Component);\n\n  function MemoryRouter() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.history = createMemoryHistory(_this.props);\n    return _this;\n  }\n\n  var _proto = MemoryRouter.prototype;\n\n  _proto.render = function render() {\n    return React.createElement(Router, {\n      history: this.history,\n      children: this.props.children\n    });\n  };\n\n  return MemoryRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n  MemoryRouter.propTypes = {\n    initialEntries: PropTypes.array,\n    initialIndex: PropTypes.number,\n    getUserConfirmation: PropTypes.func,\n    keyLength: PropTypes.number,\n    children: PropTypes.node\n  };\n\n  MemoryRouter.prototype.componentDidMount = function () {\n    process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \"<MemoryRouter> ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\") : void 0;\n  };\n}\n\nvar Lifecycle =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Lifecycle, _React$Component);\n\n  function Lifecycle() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Lifecycle.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    if (this.props.onMount) this.props.onMount.call(this, this);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n  };\n\n  _proto.render = function render() {\n    return null;\n  };\n\n  return Lifecycle;\n}(React.Component);\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\n\nfunction Prompt(_ref) {\n  var message = _ref.message,\n      _ref$when = _ref.when,\n      when = _ref$when === void 0 ? true : _ref$when;\n  return React.createElement(context.Consumer, null, function (context) {\n    !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <Prompt> outside a <Router>\") : invariant(false) : void 0;\n    if (!when || context.staticContext) return null;\n    var method = context.history.block;\n    return React.createElement(Lifecycle, {\n      onMount: function onMount(self) {\n        self.release = method(message);\n      },\n      onUpdate: function onUpdate(self, prevProps) {\n        if (prevProps.message !== message) {\n          self.release();\n          self.release = method(message);\n        }\n      },\n      onUnmount: function onUnmount(self) {\n        self.release();\n      },\n      message: message\n    });\n  });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n  var messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n  Prompt.propTypes = {\n    when: PropTypes.bool,\n    message: messageType.isRequired\n  };\n}\n\nvar cache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nfunction compilePath(path) {\n  if (cache[path]) return cache[path];\n  var generator = pathToRegexp.compile(path);\n\n  if (cacheCount < cacheLimit) {\n    cache[path] = generator;\n    cacheCount++;\n  }\n\n  return generator;\n}\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\n\n\nfunction generatePath(path, params) {\n  if (path === void 0) {\n    path = \"/\";\n  }\n\n  if (params === void 0) {\n    params = {};\n  }\n\n  return path === \"/\" ? path : compilePath(path)(params, {\n    pretty: true\n  });\n}\n\n/**\n * The public API for navigating programmatically with a component.\n */\n\nfunction Redirect(_ref) {\n  var computedMatch = _ref.computedMatch,\n      to = _ref.to,\n      _ref$push = _ref.push,\n      push = _ref$push === void 0 ? false : _ref$push;\n  return React.createElement(context.Consumer, null, function (context) {\n    !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <Redirect> outside a <Router>\") : invariant(false) : void 0;\n    var history = context.history,\n        staticContext = context.staticContext;\n    var method = push ? history.push : history.replace;\n    var location = createLocation(computedMatch ? typeof to === \"string\" ? generatePath(to, computedMatch.params) : _extends({}, to, {\n      pathname: generatePath(to.pathname, computedMatch.params)\n    }) : to); // When rendering in a static context,\n    // set the new location immediately.\n\n    if (staticContext) {\n      method(location);\n      return null;\n    }\n\n    return React.createElement(Lifecycle, {\n      onMount: function onMount() {\n        method(location);\n      },\n      onUpdate: function onUpdate(self, prevProps) {\n        var prevLocation = createLocation(prevProps.to);\n\n        if (!locationsAreEqual(prevLocation, _extends({}, location, {\n          key: prevLocation.key\n        }))) {\n          method(location);\n        }\n      },\n      to: to\n    });\n  });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n  Redirect.propTypes = {\n    push: PropTypes.bool,\n    from: PropTypes.string,\n    to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n  };\n}\n\nvar cache$1 = {};\nvar cacheLimit$1 = 10000;\nvar cacheCount$1 = 0;\n\nfunction compilePath$1(path, options) {\n  var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n  var pathCache = cache$1[cacheKey] || (cache$1[cacheKey] = {});\n  if (pathCache[path]) return pathCache[path];\n  var keys = [];\n  var regexp = pathToRegexp(path, keys, options);\n  var result = {\n    regexp: regexp,\n    keys: keys\n  };\n\n  if (cacheCount$1 < cacheLimit$1) {\n    pathCache[path] = result;\n    cacheCount$1++;\n  }\n\n  return result;\n}\n/**\n * Public API for matching a URL pathname to a path.\n */\n\n\nfunction matchPath(pathname, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  if (typeof options === \"string\" || Array.isArray(options)) {\n    options = {\n      path: options\n    };\n  }\n\n  var _options = options,\n      path = _options.path,\n      _options$exact = _options.exact,\n      exact = _options$exact === void 0 ? false : _options$exact,\n      _options$strict = _options.strict,\n      strict = _options$strict === void 0 ? false : _options$strict,\n      _options$sensitive = _options.sensitive,\n      sensitive = _options$sensitive === void 0 ? false : _options$sensitive;\n  var paths = [].concat(path);\n  return paths.reduce(function (matched, path) {\n    if (!path && path !== \"\") return null;\n    if (matched) return matched;\n\n    var _compilePath = compilePath$1(path, {\n      end: exact,\n      strict: strict,\n      sensitive: sensitive\n    }),\n        regexp = _compilePath.regexp,\n        keys = _compilePath.keys;\n\n    var match = regexp.exec(pathname);\n    if (!match) return null;\n    var url = match[0],\n        values = match.slice(1);\n    var isExact = pathname === url;\n    if (exact && !isExact) return null;\n    return {\n      path: path,\n      // the path used to match\n      url: path === \"/\" && url === \"\" ? \"/\" : url,\n      // the matched portion of the URL\n      isExact: isExact,\n      // whether or not we matched exactly\n      params: keys.reduce(function (memo, key, index) {\n        memo[key.name] = values[index];\n        return memo;\n      }, {})\n    };\n  }, null);\n}\n\nfunction isEmptyChildren(children) {\n  return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n  var value = children(props);\n  process.env.NODE_ENV !== \"production\" ? warning(value !== undefined, \"You returned `undefined` from the `children` function of \" + (\"<Route\" + (path ? \" path=\\\"\" + path + \"\\\"\" : \"\") + \">, but you \") + \"should have returned a React element or `null`\") : void 0;\n  return value || null;\n}\n/**\n * The public API for matching a single path and rendering.\n */\n\n\nvar Route =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Route, _React$Component);\n\n  function Route() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Route.prototype;\n\n  _proto.render = function render() {\n    var _this = this;\n\n    return React.createElement(context.Consumer, null, function (context$1) {\n      !context$1 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <Route> outside a <Router>\") : invariant(false) : void 0;\n      var location = _this.props.location || context$1.location;\n      var match = _this.props.computedMatch ? _this.props.computedMatch // <Switch> already computed the match for us\n      : _this.props.path ? matchPath(location.pathname, _this.props) : context$1.match;\n\n      var props = _extends({}, context$1, {\n        location: location,\n        match: match\n      });\n\n      var _this$props = _this.props,\n          children = _this$props.children,\n          component = _this$props.component,\n          render = _this$props.render; // Preact uses an empty array as children by\n      // default, so use null if that's the case.\n\n      if (Array.isArray(children) && children.length === 0) {\n        children = null;\n      }\n\n      return React.createElement(context.Provider, {\n        value: props\n      }, props.match ? children ? typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : children : component ? React.createElement(component, props) : render ? render(props) : null : typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : null);\n    });\n  };\n\n  return Route;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n  Route.propTypes = {\n    children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n    component: function component(props, propName) {\n      if (props[propName] && !isValidElementType(props[propName])) {\n        return new Error(\"Invalid prop 'component' supplied to 'Route': the prop is not a valid React component\");\n      }\n    },\n    exact: PropTypes.bool,\n    location: PropTypes.object,\n    path: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n    render: PropTypes.func,\n    sensitive: PropTypes.bool,\n    strict: PropTypes.bool\n  };\n\n  Route.prototype.componentDidMount = function () {\n    process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.component), \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\") : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.render), \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\") : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(!(this.props.component && this.props.render), \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\") : void 0;\n  };\n\n  Route.prototype.componentDidUpdate = function (prevProps) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.') : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n  };\n}\n\nfunction addLeadingSlash(path) {\n  return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n  if (!basename) return location;\n  return _extends({}, location, {\n    pathname: addLeadingSlash(basename) + location.pathname\n  });\n}\n\nfunction stripBasename(basename, location) {\n  if (!basename) return location;\n  var base = addLeadingSlash(basename);\n  if (location.pathname.indexOf(base) !== 0) return location;\n  return _extends({}, location, {\n    pathname: location.pathname.substr(base.length)\n  });\n}\n\nfunction createURL(location) {\n  return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n  return function () {\n     process.env.NODE_ENV !== \"production\" ? invariant(false, \"You cannot %s with <StaticRouter>\", methodName) : invariant(false) ;\n  };\n}\n\nfunction noop() {}\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\n\n\nvar StaticRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(StaticRouter, _React$Component);\n\n  function StaticRouter() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _this.handlePush = function (location) {\n      return _this.navigateTo(location, \"PUSH\");\n    };\n\n    _this.handleReplace = function (location) {\n      return _this.navigateTo(location, \"REPLACE\");\n    };\n\n    _this.handleListen = function () {\n      return noop;\n    };\n\n    _this.handleBlock = function () {\n      return noop;\n    };\n\n    return _this;\n  }\n\n  var _proto = StaticRouter.prototype;\n\n  _proto.navigateTo = function navigateTo(location, action) {\n    var _this$props = this.props,\n        _this$props$basename = _this$props.basename,\n        basename = _this$props$basename === void 0 ? \"\" : _this$props$basename,\n        _this$props$context = _this$props.context,\n        context = _this$props$context === void 0 ? {} : _this$props$context;\n    context.action = action;\n    context.location = addBasename(basename, createLocation(location));\n    context.url = createURL(context.location);\n  };\n\n  _proto.render = function render() {\n    var _this$props2 = this.props,\n        _this$props2$basename = _this$props2.basename,\n        basename = _this$props2$basename === void 0 ? \"\" : _this$props2$basename,\n        _this$props2$context = _this$props2.context,\n        context = _this$props2$context === void 0 ? {} : _this$props2$context,\n        _this$props2$location = _this$props2.location,\n        location = _this$props2$location === void 0 ? \"/\" : _this$props2$location,\n        rest = _objectWithoutPropertiesLoose(_this$props2, [\"basename\", \"context\", \"location\"]);\n\n    var history = {\n      createHref: function createHref(path) {\n        return addLeadingSlash(basename + createURL(path));\n      },\n      action: \"POP\",\n      location: stripBasename(basename, createLocation(location)),\n      push: this.handlePush,\n      replace: this.handleReplace,\n      go: staticHandler(\"go\"),\n      goBack: staticHandler(\"goBack\"),\n      goForward: staticHandler(\"goForward\"),\n      listen: this.handleListen,\n      block: this.handleBlock\n    };\n    return React.createElement(Router, _extends({}, rest, {\n      history: history,\n      staticContext: context\n    }));\n  };\n\n  return StaticRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n  StaticRouter.propTypes = {\n    basename: PropTypes.string,\n    context: PropTypes.object,\n    location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n  };\n\n  StaticRouter.prototype.componentDidMount = function () {\n    process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \"<StaticRouter> ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { StaticRouter as Router }`.\") : void 0;\n  };\n}\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\n\nvar Switch =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Switch, _React$Component);\n\n  function Switch() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n\n  var _proto = Switch.prototype;\n\n  _proto.render = function render() {\n    var _this = this;\n\n    return React.createElement(context.Consumer, null, function (context) {\n      !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <Switch> outside a <Router>\") : invariant(false) : void 0;\n      var location = _this.props.location || context.location;\n      var element, match; // We use React.Children.forEach instead of React.Children.toArray().find()\n      // here because toArray adds keys to all child elements and we do not want\n      // to trigger an unmount/remount for two <Route>s that render the same\n      // component at different URLs.\n\n      React.Children.forEach(_this.props.children, function (child) {\n        if (match == null && React.isValidElement(child)) {\n          element = child;\n          var path = child.props.path || child.props.from;\n          match = path ? matchPath(location.pathname, _extends({}, child.props, {\n            path: path\n          })) : context.match;\n        }\n      });\n      return match ? React.cloneElement(element, {\n        location: location,\n        computedMatch: match\n      }) : null;\n    });\n  };\n\n  return Switch;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n  Switch.propTypes = {\n    children: PropTypes.node,\n    location: PropTypes.object\n  };\n\n  Switch.prototype.componentDidUpdate = function (prevProps) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.') : void 0;\n    process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n  };\n}\n\n/**\n * A public higher-order component to access the imperative API\n */\n\nfunction withRouter(Component) {\n  var displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n\n  var C = function C(props) {\n    var wrappedComponentRef = props.wrappedComponentRef,\n        remainingProps = _objectWithoutPropertiesLoose(props, [\"wrappedComponentRef\"]);\n\n    return React.createElement(context.Consumer, null, function (context) {\n      !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <\" + displayName + \" /> outside a <Router>\") : invariant(false) : void 0;\n      return React.createElement(Component, _extends({}, remainingProps, context, {\n        ref: wrappedComponentRef\n      }));\n    });\n  };\n\n  C.displayName = displayName;\n  C.WrappedComponent = Component;\n\n  if (process.env.NODE_ENV !== \"production\") {\n    C.propTypes = {\n      wrappedComponentRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.object])\n    };\n  }\n\n  return hoistStatics(C, Component);\n}\n\nvar useContext = React.useContext;\nfunction useHistory() {\n  if (process.env.NODE_ENV !== \"production\") {\n    !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useHistory()\") : invariant(false) : void 0;\n  }\n\n  return useContext(context).history;\n}\nfunction useLocation() {\n  if (process.env.NODE_ENV !== \"production\") {\n    !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useLocation()\") : invariant(false) : void 0;\n  }\n\n  return useContext(context).location;\n}\nfunction useParams() {\n  if (process.env.NODE_ENV !== \"production\") {\n    !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useParams()\") : invariant(false) : void 0;\n  }\n\n  var match = useContext(context).match;\n  return match ? match.params : {};\n}\nfunction useRouteMatch(path) {\n  if (process.env.NODE_ENV !== \"production\") {\n    !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useRouteMatch()\") : invariant(false) : void 0;\n  }\n\n  return path ? matchPath(useLocation().pathname, path) : useContext(context).match;\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n  if (typeof window !== \"undefined\") {\n    var global = window;\n    var key = \"__react_router_build__\";\n    var buildNames = {\n      cjs: \"CommonJS\",\n      esm: \"ES modules\",\n      umd: \"UMD\"\n    };\n\n    if (global[key] && global[key] !== \"esm\") {\n      var initialBuildName = buildNames[global[key]];\n      var secondaryBuildName = buildNames[\"esm\"]; // TODO: Add link to article that explains in detail how to avoid\n      // loading 2 different builds.\n\n      throw new Error(\"You are loading the \" + secondaryBuildName + \" build of React Router \" + (\"on a page that is already running the \" + initialBuildName + \" \") + \"build, so things won't work right.\");\n    }\n\n    global[key] = \"esm\";\n  }\n}\n\nexport { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, context as __RouterContext, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter };\n//# sourceMappingURL=react-router.js.map\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n  typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n  return typeof to === \"string\"\n    ? createLocation(to, null, null, currentLocation)\n    : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport { resolveToLocation, normalizeToLocation } from \"./utils/locationUtils\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n  forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n  (\n    {\n      innerRef, // TODO: deprecate\n      navigate,\n      onClick,\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    const { target } = rest;\n\n    let props = {\n      ...rest,\n      onClick: event => {\n        try {\n          if (onClick) onClick(event);\n        } catch (ex) {\n          event.preventDefault();\n          throw ex;\n        }\n\n        if (\n          !event.defaultPrevented && // onClick prevented default\n          event.button === 0 && // ignore everything but left clicks\n          (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n          !isModifiedEvent(event) // ignore clicks with modifier keys\n        ) {\n          event.preventDefault();\n          navigate();\n        }\n      }\n    };\n\n    // React 15 compat\n    if (forwardRefShim !== forwardRef) {\n      props.ref = forwardedRef || innerRef;\n    } else {\n      props.ref = innerRef;\n    }\n\n    return <a {...props} />;\n  }\n);\n\nif (__DEV__) {\n  LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nconst Link = forwardRef(\n  (\n    {\n      component = LinkAnchor,\n      replace,\n      to,\n      innerRef, // TODO: deprecate\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <Link> outside a <Router>\");\n\n          const { history } = context;\n\n          const location = normalizeToLocation(\n            resolveToLocation(to, context.location),\n            context.location\n          );\n\n          const href = location ? history.createHref(location) : \"\";\n          const props = {\n            ...rest,\n            href,\n            navigate() {\n              const location = resolveToLocation(to, context.location);\n              const method = replace ? history.replace : history.push;\n\n              method(location);\n            }\n          };\n\n          // React 15 compat\n          if (forwardRefShim !== forwardRef) {\n            props.ref = forwardedRef || innerRef;\n          } else {\n            props.innerRef = innerRef;\n          }\n\n          return React.createElement(component, props);\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n);\n\nif (__DEV__) {\n  const toType = PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.object,\n    PropTypes.func\n  ]);\n  const refType = PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.func,\n    PropTypes.shape({ current: PropTypes.any })\n  ]);\n\n  Link.displayName = \"Link\";\n\n  Link.propTypes = {\n    innerRef: refType,\n    onClick: PropTypes.func,\n    replace: PropTypes.bool,\n    target: PropTypes.string,\n    to: toType.isRequired\n  };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n  history = createHistory(this.props);\n\n  render() {\n    return <Router history={this.history} children={this.props.children} />;\n  }\n}\n\nif (__DEV__) {\n  BrowserRouter.propTypes = {\n    basename: PropTypes.string,\n    children: PropTypes.node,\n    forceRefresh: PropTypes.bool,\n    getUserConfirmation: PropTypes.func,\n    keyLength: PropTypes.number\n  };\n\n  BrowserRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<BrowserRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n    );\n  };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n  history = createHistory(this.props);\n\n  render() {\n    return <Router history={this.history} children={this.props.children} />;\n  }\n}\n\nif (__DEV__) {\n  HashRouter.propTypes = {\n    basename: PropTypes.string,\n    children: PropTypes.node,\n    getUserConfirmation: PropTypes.func,\n    hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n  };\n\n  HashRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<HashRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n    );\n  };\n}\n\nexport default HashRouter;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link\";\nimport { resolveToLocation, normalizeToLocation } from \"./utils/locationUtils\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n  forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n  return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n  (\n    {\n      \"aria-current\": ariaCurrent = \"page\",\n      activeClassName = \"active\",\n      activeStyle,\n      className: classNameProp,\n      exact,\n      isActive: isActiveProp,\n      location: locationProp,\n      strict,\n      style: styleProp,\n      to,\n      innerRef, // TODO: deprecate\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <NavLink> outside a <Router>\");\n\n          const currentLocation = locationProp || context.location;\n          const toLocation = normalizeToLocation(\n            resolveToLocation(to, currentLocation),\n            currentLocation\n          );\n          const { pathname: path } = toLocation;\n          // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n          const escapedPath =\n            path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n          const match = escapedPath\n            ? matchPath(currentLocation.pathname, {\n                path: escapedPath,\n                exact,\n                strict\n              })\n            : null;\n          const isActive = !!(isActiveProp\n            ? isActiveProp(match, currentLocation)\n            : match);\n\n          const className = isActive\n            ? joinClassnames(classNameProp, activeClassName)\n            : classNameProp;\n          const style = isActive ? { ...styleProp, ...activeStyle } : styleProp;\n\n          const props = {\n            \"aria-current\": (isActive && ariaCurrent) || null,\n            className,\n            style,\n            to: toLocation,\n            ...rest\n          };\n\n          // React 15 compat\n          if (forwardRefShim !== forwardRef) {\n            props.ref = forwardedRef || innerRef;\n          } else {\n            props.innerRef = innerRef;\n          }\n\n          return <Link {...props} />;\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n);\n\nif (__DEV__) {\n  NavLink.displayName = \"NavLink\";\n\n  const ariaCurrentType = PropTypes.oneOf([\n    \"page\",\n    \"step\",\n    \"location\",\n    \"date\",\n    \"time\",\n    \"true\"\n  ]);\n\n  NavLink.propTypes = {\n    ...Link.propTypes,\n    \"aria-current\": ariaCurrentType,\n    activeClassName: PropTypes.string,\n    activeStyle: PropTypes.object,\n    className: PropTypes.string,\n    exact: PropTypes.bool,\n    isActive: PropTypes.func,\n    location: PropTypes.object,\n    strict: PropTypes.bool,\n    style: PropTypes.object\n  };\n}\n\nexport default NavLink;\n"],"names":["_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","__proto__","defineProperty","exports","value","b","Symbol","for","c","d","e","f","g","h","k","l","m","n","p","q","r","t","v","w","x","a","u","$$typeof","type","y","module","require$$0","getOwnPropertySymbols","hasOwnProperty","propIsEnumerable","propertyIsEnumerable","assign","test1","String","getOwnPropertyNames","test2","i","fromCharCode","map","join","test3","split","forEach","letter","keys","err","shouldUseNative","Function","call","bind","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","Error","name","getShim","ReactPropTypes","array","isRequired","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","require$$2","_extends","target","arguments","length","source","key","apply","this","isAbsolute","pathname","charAt","spliceOne","list","index","pop","_typeof","iterator","obj","prefix","invariant","condition","addLeadingSlash","path","stripLeadingSlash","substr","stripBasename","RegExp","test","hasBasename","stripTrailingSlash","slice","createPath","search","hash","createLocation","state","currentLocation","hashIndex","indexOf","searchIndex","parsePath","undefined","decodeURI","URIError","to","from","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","concat","hasTrailingSlash","last","up","part","unshift","result","resolvePathname","locationsAreEqual","valueEqual","Array","isArray","every","item","aType","aValue","valueOf","bValue","aKeys","bKeys","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","action","getUserConfirmation","callback","appendListener","fn","isActive","listener","push","filter","notifyListeners","_len","args","_key","canUseDOM","window","document","createElement","getConfirmation","message","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","globalHistory","canUseHistory","ua","navigator","userAgent","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_ref","_window$location","createKey","Math","random","toString","transitionManager","setState","nextState","handlePopState","event","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toLocation","toIndex","allKeys","fromIndex","delta","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","addEventListener","removeEventListener","isBlocked","href","pushState","prevIndex","nextKeys","replace","replaceState","goBack","goForward","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","getHashPath","substring","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","lastIndexOf","pushHashPath","nextPaths","clamp","lowerBound","upperBound","min","max","MAX_SIGNED_31_BIT_INT","str","options","tokensToFunction","parse","React","createContext","defaultValue","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","global","Provider","_Component","_this","emitter","handlers","on","handler","off","get","set","newValue","changedBits","createEventEmitter","_proto","getChildContext","componentWillReceiveProps","nextProps","oldValue","objectIs","render","children","Component","childContextTypes","Consumer","_Component2","_this2","getValue","onUpdate","observedBits","_proto2","componentDidMount","context","componentWillUnmount","onlyChild","contextTypes","arr","pathToRegexp","tokensToRegExp","PATH_REGEXP","res","group","tokens","defaultDelimiter","delimiter","exec","escaped","offset","next","capture","modifier","asterisk","partial","repeat","optional","pattern","escapeString","encodeURIComponentPretty","encodeURI","charCodeAt","toUpperCase","matches","opts","data","encode","pretty","encodeURIComponent","token","segment","TypeError","isarray","JSON","stringify","j","attachKeys","re","flags","sensitive","strict","end","route","endsWithDelimiter","groups","match","regexpToRegexp","parts","arrayToRegexp","stringToRegexp","_objectWithoutPropertiesLoose","excluded","sourceKeys","REACT_STATICS","contextType","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","ReactIs","isMemo","ForwardRef","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","createNamedContext","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entries","entry","nextIndex","nextEntries","splice","canGo","resolveToLocation","normalizeToLocation","forwardRefShim","C","BrowserRouter","createHistory","Router","HashRouter","forwardRef","LinkAnchor","forwardedRef","innerRef","navigate","onClick","rest","ex","preventDefault","defaultPrevented","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","ref","Link","RouterContext","NavLink","ariaCurrent","activeClassName","activeStyle","classNameProp","className","isActiveProp","locationProp","styleProp","style","escapedPath","matchPath","classnames","joinClassnames"],"mappings":"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"}
(4-4/4)