{"version":3,"sources":["webpack://lcb-research-about/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://lcb-research-about/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://lcb-research-about/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://lcb-research-about/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://lcb-research-about/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://lcb-research-about/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://lcb-research-about/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://lcb-research-about/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://lcb-research-about/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://lcb-research-about/./node_modules/@babel/runtime/helpers/extends.js","webpack://lcb-research-about/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://lcb-research-about/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://lcb-research-about/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://lcb-research-about/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://lcb-research-about/./node_modules/@gatsbyjs/reach-router/lib/history.js","webpack://lcb-research-about/./node_modules/@gatsbyjs/reach-router/lib/utils.js","webpack://lcb-research-about/./node_modules/charenc/charenc.js","webpack://lcb-research-about/./node_modules/crypt/crypt.js","webpack://lcb-research-about/./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js","webpack://lcb-research-about/./node_modules/lodash.omit/index.js","webpack://lcb-research-about/./node_modules/md5/md5.js","webpack://lcb-research-about/./node_modules/md5/node_modules/is-buffer/index.js","webpack://lcb-research-about/./node_modules/gatsby-link/index.js","webpack://lcb-research-about/./node_modules/gatsby-link/parse-path.js","webpack://lcb-research-about/./node_modules/gatsby-react-router-scroll/index.js","webpack://lcb-research-about/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://lcb-research-about/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://lcb-research-about/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://lcb-research-about/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://lcb-research-about/./.cache/api-runner-browser-plugins.js","webpack://lcb-research-about/./.cache/api-runner-browser.js","webpack://lcb-research-about/./node_modules/mitt/dist/mitt.es.js","webpack://lcb-research-about/./.cache/emitter.js","webpack://lcb-research-about/./.cache/normalize-page-path.js","webpack://lcb-research-about/./.cache/find-path.js","webpack://lcb-research-about/./.cache/gatsby-browser-entry.js","webpack://lcb-research-about/./.cache/prefetch.js","webpack://lcb-research-about/./.cache/loader.js","webpack://lcb-research-about/./.cache/page-renderer.js","webpack://lcb-research-about/./.cache/route-announcer-props.js","webpack://lcb-research-about/./.cache/navigation.js","webpack://lcb-research-about/./node_modules/shallow-compare/es/index.js","webpack://lcb-research-about/./.cache/ensure-resources.js","webpack://lcb-research-about/./.cache/production-app.js","webpack://lcb-research-about/./.cache/public-page-renderer-prod.js","webpack://lcb-research-about/./.cache/public-page-renderer.js","webpack://lcb-research-about/./.cache/react-lifecycles-compat.js","webpack://lcb-research-about/./.cache/redirect-utils.js","webpack://lcb-research-about/./.cache/register-service-worker.js","webpack://lcb-research-about/./.cache/strip-prefix.js","webpack://lcb-research-about/./gatsby-browser.js","webpack://lcb-research-about/./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack://lcb-research-about/./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack://lcb-research-about/./node_modules/gatsby-plugin-matomo/gatsby-browser.js","webpack://lcb-research-about/./node_modules/gatsby-plugin-offline/gatsby-browser.js","webpack://lcb-research-about/../src/gatsby-browser.ts","webpack://lcb-research-about/./node_modules/gatsby-source-prismic/gatsby-browser.js","webpack://lcb-research-about/./node_modules/@gatsbyjs/reach-router/es/lib/utils.js","webpack://lcb-research-about/./node_modules/@gatsbyjs/reach-router/es/lib/history.js","webpack://lcb-research-about/./node_modules/@gatsbyjs/reach-router/es/index.js","webpack://lcb-research-about/./node_modules/invariant/browser.js"],"names":["module","exports","self","ReferenceError","__esModule","_arrayLikeToArray","arr","len","length","i","arr2","Array","_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_toConsumableArray","isArray","arrayLikeToArray","iter","Symbol","iterator","from","unsupportedIterableToArray","TypeError","_unsupportedIterableToArray","minLen","n","toString","call","slice","name","test","_extends","assign","target","arguments","source","key","hasOwnProperty","apply","this","obj","excluded","sourceKeys","keys","indexOf","getLocation","_source$location","location","search","hash","href","origin","protocol","host","hostname","port","pathname","canUseDOM","URL","encodeURI","decodeURI","state","history","createHistory","options","listeners","transitioning","resolveTransition","_onTransitionComplete","listen","listener","push","popstateListener","action","addEventListener","removeEventListener","filter","fn","navigate","to","_ref","undefined","_ref$replace","replace","go","Date","now","replaceState","pushState","e","transition","Promise","res","forEach","createMemorySource","initialPath","searchIndex","initialLocation","substr","index","stack","states","_","uri","_uri$split","split","_uri$split$","_uri$split2","_uri$split2$","newIndex","window","document","createElement","globalHistory","shallowCompare","validateRedirect","insertParams","resolve","match","pick","startsWith","_invariant","_invariant2","default","string","routes","default_","uriPathname","uriSegments","segmentize","isRootUri","ranked","rankRoutes","l","missed","route","params","routeSegments","path","max","Math","routeSegment","uriSegment","isSplat","map","decodeURIComponent","join","dynamicMatch","paramRe","exec","reservedNames","value","isDynamic","segment","rankRoute","score","reduce","isRootSegment","SEGMENT_POINTS","sort","a","b","addQuery","_len","query","_key","q","base","_to$split","toPathname","toQuery","basePathname","toSegments","baseSegments","concat","allSegments","segments","pop","_path$split","pathBase","_path$split$","constructedPath","_params$location","_params$location$sear","searchSplit","obj1","obj2","obj1Keys","every","charenc","utf8","stringToBytes","str","bin","unescape","encodeURIComponent","bytesToString","bytes","escape","charCodeAt","String","fromCharCode","base64map","crypt","rotl","rotr","endian","Number","randomBytes","floor","random","bytesToWords","words","wordsToBytes","bytesToHex","hex","hexToBytes","c","parseInt","bytesToBase64","base64","triplet","j","charAt","base64ToBytes","imod4","pow","HASH_UNDEFINED","MAX_SAFE_INTEGER","symbolTag","reIsHostCtor","reIsUint","freeGlobal","g","freeSelf","root","Function","func","thisArg","args","arrayIncludes","array","fromIndex","predicate","fromRight","baseFindIndex","baseIsNaN","baseIndexOf","arrayIncludesWith","comparator","arrayMap","iteratee","result","arrayPush","values","offset","cacheHas","cache","has","overArg","transform","arg","uid","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","IE_PROTO","funcToString","objectToString","reIsNative","RegExp","getPrototype","getPrototypeOf","propertyIsEnumerable","splice","spreadableSymbol","isConcatSpreadable","nativeGetSymbols","getOwnPropertySymbols","nativeMax","Map","getNative","nativeCreate","Hash","entries","clear","entry","set","ListCache","MapCache","SetCache","__data__","add","arrayLikeKeys","inherited","isArguments","baseTimes","skipIndexes","isIndex","assocIndexOf","other","baseFlatten","depth","isStrict","isFlattenable","baseIsNative","isObject","isFunction","isHostObject","toSource","baseKeysIn","object","nativeKeysIn","Ctor","proto","isProto","getAllKeysIn","keysFunc","symbolsFunc","baseGetAllKeys","keysIn","getSymbolsIn","getMapData","type","data","getValue","get","getSymbols","stubArray","toKey","isObjectLike","isSymbol","isArrayLike","isArrayLikeObject","isLength","tag","start","omit","props","basePickBy","basePick","includes","isCommon","valuesLength","outer","computed","valuesIndex","baseDifference","otherArgs","isBuffer","md5","message","encoding","Uint8Array","m","d","FF","_ff","GG","_gg","HH","_hh","II","_ii","aa","bb","cc","dd","x","s","t","_blocksize","_digestsize","Error","digestbytes","asBytes","asString","readFloatLE","isSlowBuffer","_isBuffer","_interopRequireDefault","withPrefix","getGlobalPathPrefix","_objectWithoutPropertiesLoose2","_assertThisInitialized2","_inheritsLoose2","_extends2","_propTypes","_react","_reachRouter","_utils","_parsePath","parsePath","_excluded","isAbsolutePath","prefix","_prefix","getGlobalBasePrefix","isLocalLink","endsWith","rewriteLinkPath","relativeTo","current","absolutify","NavLinkPropTypes","activeClassName","activeStyle","partiallyActive","bool","GatsbyLinkLocationWrapper","Location","_ref2","GatsbyLink","_location","_React$Component","_this","defaultGetProps","_ref3","isPartiallyCurrent","isCurrent","className","Boolean","style","IOSupported","IntersectionObserver","handleRef","bind","_proto","_prefetch","currentPath","rewrittenPath","newPathName","___loader","enqueue","componentDidUpdate","prevProps","prevState","componentDidMount","componentWillUnmount","io","_this$io","instance","el","unobserve","disconnect","ref","cb","_this2","innerRef","isIntersecting","intersectionRatio","observe","render","_this3","_this$props","_this$props$getProps","getProps","_onClick","onClick","_onMouseEnter","onMouseEnter","rest","prefixedTo","Link","hovering","button","defaultPrevented","metaKey","altKey","ctrlKey","shiftKey","preventDefault","shouldReplace","___navigate","Component","propTypes","isRequired","_default","forwardRef","hashIndex","_scrollHandler","ScrollHandler","_useScrollRestoration","useScrollRestoration","ScrollContext","React","nodeInterop","_getRequireWildcardCache","newObj","hasPropertyDescriptor","defineProperty","getOwnPropertyDescriptor","desc","_interopRequireWildcard","_sessionStorage","WeakMap","cacheBabelInterop","cacheNodeInterop","createContext","SessionStorage","displayName","_stateStorage","_isTicking","_latestKnownScrollY","scrollListener","scrollY","requestAnimationFrame","_saveScroll","windowScroll","position","shouldUpdateScroll","scrollTo","scrollToHash","node","getElementById","substring","scrollIntoView","prevRouterProps","routerProps","save","scrollPosition","_this$props$location","read","_this$props$location2","Provider","children","element","GATSBY_ROUTER_SCROLL_STATE","stateKey","getStateKey","sessionStorage","getItem","JSON","parse","storedValue","stringify","setItem","stateKeyBase","identifier","useLocation","useContext","useRef","useLayoutEffect","onScroll","scrollTop","components","plugin","require","plugins","getResourceURLsForPathname","loadPage","loadPageSync","api","defaultReturn","argTransform","results","previous","next","then","all","on","handler","off","emit","evt","mitt","pathCache","matchPaths","trimPathname","rawPathname","stripPrefix","__BASE_PATH__","setMatchPaths","findMatchPath","trimmedPathname","cleanPath","pickPaths","matchPath","originalPath","normalizePagePath","grabMatchParams","findPath","redirect","maybeGetBrowserRedirect","toPath","foundPath","prefetchPathname","loader","StaticQueryContext","StaticQueryDataRenderer","staticQueryData","finalData","StaticQuery","Consumer","useStaticQuery","context","isNaN","graphql","supportedPrefetchStrategy","feature","fakeLink","relList","supports","err","support","url","reject","link","setAttribute","onload","onerror","getElementsByTagName","getElementsByName","parentNode","appendChild","req","XMLHttpRequest","open","status","send","preFetched","catch","PageResourceStatus","Success","preferDefault","createPageDataUrl","__PATH_PREFIX__","doFetch","method","onreadystatechange","readyState","toPageResources","pageData","component","page","componentChunkName","webpackCompilationHash","staticQueryHashes","json","BaseLoader","loadComponent","inFlightNetworkRequests","pageDb","inFlightDb","staticQueryDb","pageDataDb","prefetchTriggered","Set","prefetchCompleted","memoizedGet","inFlightPromise","response","delete","setApiRunner","apiRunner","prefetchDisabled","some","fetchPageDataJson","loadObj","pagePath","retries","responseText","jsonPayload","payload","notFound","loadPageDataJson","rawPath","error","loadAppData","allData","finalResult","componentChunkPromise","pageResources","createdAt","staticQueryBatchPromise","staticQueryHash","staticQueryResults","staticQueryResultsMap","emitter","withErrorDetails","shouldPrefetch","navigator","connection","effectiveType","saveData","doesConnectionSupportPrefetch","prefetch","realPath","doPrefetch","pageDataUrl","prefetchHelper","crossOrigin","as","createComponentUrls","isPageNotFound","appData","___chunkMapping","chunk","ProdLoader","asyncRequires","chunkName","componentUrls","setLoader","_loader","publicLoader","getStaticQueryResults","PageRenderer","pageContext","__params","pageElement","RouteAnnouncerProps","id","top","width","height","padding","overflow","clip","whiteSpace","border","maybeRedirect","___replace","onPreRouteUpdate","prevLocation","onRouteUpdate","___swUpdated","timeoutId","setTimeout","clearTimeout","___webpackCompilationHash","serviceWorker","controller","postMessage","gatsbyApi","reachNavigate","getSavedScrollPosition","RouteAnnouncer","announcementRef","nextProps","pageName","title","pageHeadings","querySelectorAll","textContent","newAnnouncement","innerText","compareLocationProps","nextLocation","RouteUpdates","shouldComponentUpdate","shallowDiffers","_i","getDerivedStateFromProps","loadResources","setState","nextState","___emitter","___push","apiRunnerAsync","RouteHandler","BaseContext","baseuri","basepath","DataContext","GatsbyRoot","LocationHandler","Router","browserLoc","console","SiteRoot","App","onClientEntryRanRef","performance","mark","renderer","ReactDOM","runRender","rootElement","doc","documentElement","doScroll","InternalPageRenderer","redirectMap","redirectIgnoreCaseMap","toLowerCase","redirects","ignoreCase","fromPath","register","reg","installingWorker","installing","log","___failedResources","reload","onServiceWorkerUpdateReady","confirm","localizedManifests","defaultFilename","localizedManifest","find","app","start_url","lang","first","pluginOptions","_paq","difference","_window","dev","prevUrl","_pluginOptions$trackL","trackLoad","delay","debug","getTime","registerServiceWorker","process","GATSBY_IS_PREVIEW","whiteListLinkRels","prefetchedPathnames","setPathResources","resources","onServiceWorkerActive","active","nodes","headerResources","tagName","getAttribute","src","prefetchedResources","resource","rel","remove","head","onPostPrefetchPathname","_gatsbyContext","prismicToolbar","prismic","endpoint","repositoryName","schemasDigest","schemas","_objectWithoutProperties","_classCallCheck","Constructor","_possibleConstructorReturn","_inherits","enumerable","writable","configurable","createNamedContext","defaultValue","Ctx","LocationContext","LocationProvider","_temp","getContext","refs","unlisten","_props$history","componentDidCatch","info","isRedirect","_navigate","unmounted","defaultProps","ServerLocation","baseContext","locationContext","RouterImpl","_React$PureComponent","_props","_navigate2","primary","_props$component","domProps","child","createRoute","clone","FocusWrapper","FocusHandler","wrapperProps","FocusContext","requestFocus","FocusHandlerImpl","initialRender","focusHandlerCount","_React$Component2","_temp2","_this4","_len2","_key2","shouldFocus","focus","myURIChanged","navigatedUpToMe","contains","activeElement","_this5","_props2","_props2$component","Comp","outline","tabIndex","k","C","_ref4","_ref5","_ref6","_props$getProps","anchorProps","encodedHref","event","shouldNavigate","_location$state","restState","RedirectRequest","redirectTo","RedirectImpl","_React$Component3","_props3","_props3$replace","noThrow","resolvedTo","_props4","Redirect","_ref7","Match","_ref8","_ref9","_ref10","resolvedPath","useNavigate","useParams","useMatch","stripSlashes","elementPath","condition","format","f","argIndex","framesToPop"],"mappings":"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","file":"app-75bee19ee221cb55cc8a.js","sourcesContent":["function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","function _extends() {\n module.exports = _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 module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inheritsLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","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}\n\nmodule.exports = _objectWithoutPropertiesLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"use strict\";\n\nexports.__esModule = true;\n\nvar _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\nvar getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\n\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n\n var resolveTransition = function resolveTransition() {};\n\n return {\n get location() {\n return location;\n },\n\n get transitioning() {\n return transitioning;\n },\n\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({\n location: location,\n action: \"POP\"\n });\n };\n\n source.addEventListener(\"popstate\", popstateListener);\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, {\n key: Date.now() + \"\"\n }); // try...catch iOS Safari limits to 100 pushState calls\n\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({\n location: location,\n action: \"PUSH\"\n });\n });\n return transition;\n }\n };\n}; ////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\n\n\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n return {\n get location() {\n return stack[index];\n },\n\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n history: {\n get entries() {\n return stack;\n },\n\n get index() {\n return index;\n },\n\n get state() {\n return states[index];\n },\n\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n\n index++;\n stack.push({\n pathname: pathname,\n search: search.length ? \"?\" + search : search\n });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n\n stack[index] = {\n pathname: pathname,\n search: search\n };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n\n index = newIndex;\n }\n }\n };\n}; ////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\n\n\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate; ////////////////////////////////////////////////////////////////////////////////\n\nexports.globalHistory = globalHistory;\nexports.navigate = navigate;\nexports.createHistory = createHistory;\nexports.createMemorySource = createMemorySource;","\"use strict\";\n\nexports.__esModule = true;\nexports.shallowCompare = exports.validateRedirect = exports.insertParams = exports.resolve = exports.match = exports.pick = exports.startsWith = undefined;\n\nvar _invariant = require(\"invariant\");\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n} ////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\n\n\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n}; ////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\n\n\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n\n var dynamicMatch = paramRe.exec(routeSegment);\n\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? (0, _invariant2.default)(false, \" dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : (0, _invariant2.default)(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n\n return match || default_ || null;\n}; ////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\n\n\nvar match = function match(path, uri) {\n return pick([{\n path: path\n }], uri);\n}; ////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// \n// // instead of\n// \n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\n\n\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname); // ?a=b, /users?b=c => /users?a=b\n\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n } // profile, /users/789 => /users/789/profile\n\n\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n } // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n\n\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n}; ////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\n\nvar insertParams = function insertParams(path, params) {\n var _path$split = path.split(\"?\"),\n pathBase = _path$split[0],\n _path$split$ = _path$split[1],\n query = _path$split$ === undefined ? \"\" : _path$split$;\n\n var segments = segmentize(pathBase);\n var constructedPath = \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n var _params$location = params.location;\n _params$location = _params$location === undefined ? {} : _params$location;\n var _params$location$sear = _params$location.search,\n search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n var searchSplit = search.split(\"?\")[1] || \"\";\n constructedPath = addQuery(constructedPath, query, searchSplit);\n return constructedPath;\n};\n\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n}; ////////////////////////////////////////////////////////////////////////////////\n// Junk\n\n\nvar paramRe = /^:(.+)/;\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\n\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\n\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\n\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return {\n route: route,\n score: score,\n index: index\n };\n};\n\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\n\nvar segmentize = function segmentize(uri) {\n return uri // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\n\nvar addQuery = function addQuery(pathname) {\n for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n query[_key - 1] = arguments[_key];\n }\n\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"];\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\n\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n}; ////////////////////////////////////////////////////////////////////////////////\n\n\nexports.startsWith = startsWith;\nexports.pick = pick;\nexports.match = match;\nexports.resolve = resolve;\nexports.insertParams = insertParams;\nexports.validateRedirect = validateRedirect;\nexports.shallowCompare = shallowCompare;","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function stringToBytes(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n // Convert a byte array to a string\n bytesToString: function bytesToString(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function stringToBytes(str) {\n for (var bytes = [], i = 0; i < str.length; i++) {\n bytes.push(str.charCodeAt(i) & 0xFF);\n }\n\n return bytes;\n },\n // Convert a byte array to a string\n bytesToString: function bytesToString(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++) {\n str.push(String.fromCharCode(bytes[i]));\n }\n\n return str.join('');\n }\n }\n};\nmodule.exports = charenc;","(function () {\n var base64map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n crypt = {\n // Bit-wise rotation left\n rotl: function rotl(n, b) {\n return n << b | n >>> 32 - b;\n },\n // Bit-wise rotation right\n rotr: function rotr(n, b) {\n return n << 32 - b | n >>> b;\n },\n // Swap big-endian to little-endian and vice versa\n endian: function endian(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n } // Else, assume array and swap all items\n\n\n for (var i = 0; i < n.length; i++) {\n n[i] = crypt.endian(n[i]);\n }\n\n return n;\n },\n // Generate an array of any length of random bytes\n randomBytes: function randomBytes(n) {\n for (var bytes = []; n > 0; n--) {\n bytes.push(Math.floor(Math.random() * 256));\n }\n\n return bytes;\n },\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function bytesToWords(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8) {\n words[b >>> 5] |= bytes[i] << 24 - b % 32;\n }\n\n return words;\n },\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function wordsToBytes(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8) {\n bytes.push(words[b >>> 5] >>> 24 - b % 32 & 0xFF);\n }\n\n return bytes;\n },\n // Convert a byte array to a hex string\n bytesToHex: function bytesToHex(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n\n return hex.join('');\n },\n // Convert a hex string to a byte array\n hexToBytes: function hexToBytes(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2) {\n bytes.push(parseInt(hex.substr(c, 2), 16));\n }\n\n return bytes;\n },\n // Convert a byte array to a base-64 string\n bytesToBase64: function bytesToBase64(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = bytes[i] << 16 | bytes[i + 1] << 8 | bytes[i + 2];\n\n for (var j = 0; j < 4; j++) {\n if (i * 8 + j * 6 <= bytes.length * 8) base64.push(base64map.charAt(triplet >>> 6 * (3 - j) & 0x3F));else base64.push('=');\n }\n }\n\n return base64.join('');\n },\n // Convert a base-64 string to a byte array\n base64ToBytes: function base64ToBytes(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length; imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push((base64map.indexOf(base64.charAt(i - 1)) & Math.pow(2, -2 * imod4 + 8) - 1) << imod4 * 2 | base64map.indexOf(base64.charAt(i)) >>> 6 - imod4 * 2);\n }\n\n return bytes;\n }\n };\n module.exports = crypt;\n})();","\"use strict\";\n\nmodule.exports = Object.assign;","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n/** Used to stand-in for `undefined` hash values. */\n\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/** Used as references for various `Number` constants. */\n\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n symbolTag = '[object Symbol]';\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n/** Used to detect host constructors (Safari). */\n\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n/** Used to detect unsigned integer values. */\n\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n/** Detect free variable `global` from Node.js. */\n\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n/** Detect free variable `self`. */\n\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function('return this')();\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0:\n return func.call(thisArg);\n\n case 1:\n return func.call(thisArg, args[0]);\n\n case 2:\n return func.call(thisArg, args[0], args[1]);\n\n case 3:\n return func.call(thisArg, args[0], args[1], args[2]);\n }\n\n return func.apply(thisArg, args);\n}\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n\n\nfunction arrayIncludes(array, value) {\n var length = array ? array.length : 0;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n\n\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n\n return false;\n}\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n\n\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n\n return result;\n}\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n\n\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n\n return array;\n}\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while (fromRight ? index-- : ++index < length) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n\n return -1;\n}\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n\n return -1;\n}\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n\n\nfunction baseIsNaN(value) {\n return value !== value;\n}\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n\n\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n\n return result;\n}\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n\n\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n/**\n * Checks if a cache value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n\n\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\n\n\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n\n return result;\n}\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n\n\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n}\n/** Used for built-in method references. */\n\n\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n/** Used to detect overreaching core-js shims. */\n\nvar coreJsData = root['__core-js_shared__'];\n/** Used to detect methods masquerading as native. */\n\nvar maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\n}();\n/** Used to resolve the decompiled source of functions. */\n\n\nvar funcToString = funcProto.toString;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/** Used to detect if a method is native. */\n\nvar reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n/** Built-in value references. */\n\nvar Symbol = root.Symbol,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeMax = Math.max;\n/* Built-in method references that are verified to be native. */\n\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n\n\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction hashGet(key) {\n var data = this.__data__;\n\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n\n\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;\n return this;\n} // Add methods to `Hash`.\n\n\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n\n\nfunction listCacheClear() {\n this.__data__ = [];\n}\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n\n var lastIndex = data.length - 1;\n\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n\n return true;\n}\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n return index < 0 ? undefined : data[index][1];\n}\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n\n\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n\n return this;\n} // Add methods to `ListCache`.\n\n\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n\n\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash(),\n 'map': new (Map || ListCache)(),\n 'string': new Hash()\n };\n}\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n\n\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n} // Add methods to `MapCache`.\n\n\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n this.__data__ = new MapCache();\n\n while (++index < length) {\n this.add(values[index]);\n }\n}\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n\n\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n\n return this;\n}\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n\n\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n} // Add methods to `SetCache`.\n\n\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : [];\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n\n return result;\n}\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\nfunction assocIndexOf(array, key) {\n var length = array.length;\n\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n\n return -1;\n}\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n\n\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n } else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n\n outer: while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n value = comparator || value !== 0 ? value : 0;\n\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n\n result.push(value);\n } else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n\n return result;\n}\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n\n\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n\n return result;\n}\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n\n\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n\n\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n\n var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\n\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n\n return result;\n}\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick.\n * @returns {Object} Returns the new object.\n */\n\n\nfunction basePick(object, props) {\n object = Object(object);\n return basePickBy(object, props, function (value, key) {\n return key in object;\n });\n}\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick from.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n\n\nfunction basePickBy(object, props, predicate) {\n var index = -1,\n length = props.length,\n result = {};\n\n while (++index < length) {\n var key = props[index],\n value = object[key];\n\n if (predicate(value, key)) {\n result[key] = value;\n }\n }\n\n return result;\n}\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n\n\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? func.length - 1 : start, 0);\n return function () {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n\n index = -1;\n var otherArgs = Array(start + 1);\n\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n\n\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n\n\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n}\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n\n\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n\n\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n/**\n * Creates an array of the own and inherited enumerable symbol properties\n * of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function (object) {\n var result = [];\n\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n\n return result;\n};\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n\n\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n}\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n\n\nfunction isKeyable(value) {\n var type = typeof value;\n return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n}\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n\n\nfunction isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n}\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n\n\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n return value === proto;\n}\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\n\nfunction nativeKeysIn(object) {\n var result = [];\n\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n\n return result;\n}\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n\n\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\n\n\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n\n try {\n return func + '';\n } catch (e) {}\n }\n\n return '';\n}\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n\n\nfunction eq(value, other) {\n return value === other || value !== value && other !== other;\n}\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n\n\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n\n\nvar isArray = Array.isArray;\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n\n\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n\n\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n\n\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\n\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\n\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n\n\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n\n\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable string keyed properties of `object` that are\n * not omitted.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [props] The property identifiers to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n\n\nvar omit = baseRest(function (object, props) {\n if (object == null) {\n return {};\n }\n\n props = arrayMap(baseFlatten(props, 1), toKey);\n return basePick(object, baseDifference(getAllKeysIn(object), props));\n});\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = omit;","(function () {\n var crypt = require('crypt'),\n utf8 = require('charenc').utf8,\n isBuffer = require('is-buffer'),\n bin = require('charenc').bin,\n // The core\n md5 = function md5(message, options) {\n // Convert to byte array\n if (message.constructor == String) {\n if (options && options.encoding === 'binary') message = bin.stringToBytes(message);else message = utf8.stringToBytes(message);\n } else if (isBuffer(message)) message = Array.prototype.slice.call(message, 0);else if (!Array.isArray(message) && message.constructor !== Uint8Array) message = message.toString(); // else, assume byte array already\n\n var m = crypt.bytesToWords(message),\n l = message.length * 8,\n a = 1732584193,\n b = -271733879,\n c = -1732584194,\n d = 271733878; // Swap endian\n\n for (var i = 0; i < m.length; i++) {\n m[i] = (m[i] << 8 | m[i] >>> 24) & 0x00FF00FF | (m[i] << 24 | m[i] >>> 8) & 0xFF00FF00;\n } // Padding\n\n\n m[l >>> 5] |= 0x80 << l % 32;\n m[(l + 64 >>> 9 << 4) + 14] = l; // Method shortcuts\n\n var FF = md5._ff,\n GG = md5._gg,\n HH = md5._hh,\n II = md5._ii;\n\n for (var i = 0; i < m.length; i += 16) {\n var aa = a,\n bb = b,\n cc = c,\n dd = d;\n a = FF(a, b, c, d, m[i + 0], 7, -680876936);\n d = FF(d, a, b, c, m[i + 1], 12, -389564586);\n c = FF(c, d, a, b, m[i + 2], 17, 606105819);\n b = FF(b, c, d, a, m[i + 3], 22, -1044525330);\n a = FF(a, b, c, d, m[i + 4], 7, -176418897);\n d = FF(d, a, b, c, m[i + 5], 12, 1200080426);\n c = FF(c, d, a, b, m[i + 6], 17, -1473231341);\n b = FF(b, c, d, a, m[i + 7], 22, -45705983);\n a = FF(a, b, c, d, m[i + 8], 7, 1770035416);\n d = FF(d, a, b, c, m[i + 9], 12, -1958414417);\n c = FF(c, d, a, b, m[i + 10], 17, -42063);\n b = FF(b, c, d, a, m[i + 11], 22, -1990404162);\n a = FF(a, b, c, d, m[i + 12], 7, 1804603682);\n d = FF(d, a, b, c, m[i + 13], 12, -40341101);\n c = FF(c, d, a, b, m[i + 14], 17, -1502002290);\n b = FF(b, c, d, a, m[i + 15], 22, 1236535329);\n a = GG(a, b, c, d, m[i + 1], 5, -165796510);\n d = GG(d, a, b, c, m[i + 6], 9, -1069501632);\n c = GG(c, d, a, b, m[i + 11], 14, 643717713);\n b = GG(b, c, d, a, m[i + 0], 20, -373897302);\n a = GG(a, b, c, d, m[i + 5], 5, -701558691);\n d = GG(d, a, b, c, m[i + 10], 9, 38016083);\n c = GG(c, d, a, b, m[i + 15], 14, -660478335);\n b = GG(b, c, d, a, m[i + 4], 20, -405537848);\n a = GG(a, b, c, d, m[i + 9], 5, 568446438);\n d = GG(d, a, b, c, m[i + 14], 9, -1019803690);\n c = GG(c, d, a, b, m[i + 3], 14, -187363961);\n b = GG(b, c, d, a, m[i + 8], 20, 1163531501);\n a = GG(a, b, c, d, m[i + 13], 5, -1444681467);\n d = GG(d, a, b, c, m[i + 2], 9, -51403784);\n c = GG(c, d, a, b, m[i + 7], 14, 1735328473);\n b = GG(b, c, d, a, m[i + 12], 20, -1926607734);\n a = HH(a, b, c, d, m[i + 5], 4, -378558);\n d = HH(d, a, b, c, m[i + 8], 11, -2022574463);\n c = HH(c, d, a, b, m[i + 11], 16, 1839030562);\n b = HH(b, c, d, a, m[i + 14], 23, -35309556);\n a = HH(a, b, c, d, m[i + 1], 4, -1530992060);\n d = HH(d, a, b, c, m[i + 4], 11, 1272893353);\n c = HH(c, d, a, b, m[i + 7], 16, -155497632);\n b = HH(b, c, d, a, m[i + 10], 23, -1094730640);\n a = HH(a, b, c, d, m[i + 13], 4, 681279174);\n d = HH(d, a, b, c, m[i + 0], 11, -358537222);\n c = HH(c, d, a, b, m[i + 3], 16, -722521979);\n b = HH(b, c, d, a, m[i + 6], 23, 76029189);\n a = HH(a, b, c, d, m[i + 9], 4, -640364487);\n d = HH(d, a, b, c, m[i + 12], 11, -421815835);\n c = HH(c, d, a, b, m[i + 15], 16, 530742520);\n b = HH(b, c, d, a, m[i + 2], 23, -995338651);\n a = II(a, b, c, d, m[i + 0], 6, -198630844);\n d = II(d, a, b, c, m[i + 7], 10, 1126891415);\n c = II(c, d, a, b, m[i + 14], 15, -1416354905);\n b = II(b, c, d, a, m[i + 5], 21, -57434055);\n a = II(a, b, c, d, m[i + 12], 6, 1700485571);\n d = II(d, a, b, c, m[i + 3], 10, -1894986606);\n c = II(c, d, a, b, m[i + 10], 15, -1051523);\n b = II(b, c, d, a, m[i + 1], 21, -2054922799);\n a = II(a, b, c, d, m[i + 8], 6, 1873313359);\n d = II(d, a, b, c, m[i + 15], 10, -30611744);\n c = II(c, d, a, b, m[i + 6], 15, -1560198380);\n b = II(b, c, d, a, m[i + 13], 21, 1309151649);\n a = II(a, b, c, d, m[i + 4], 6, -145523070);\n d = II(d, a, b, c, m[i + 11], 10, -1120210379);\n c = II(c, d, a, b, m[i + 2], 15, 718787259);\n b = II(b, c, d, a, m[i + 9], 21, -343485551);\n a = a + aa >>> 0;\n b = b + bb >>> 0;\n c = c + cc >>> 0;\n d = d + dd >>> 0;\n }\n\n return crypt.endian([a, b, c, d]);\n }; // Auxiliary functions\n\n\n md5._ff = function (a, b, c, d, x, s, t) {\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\n return (n << s | n >>> 32 - s) + b;\n };\n\n md5._gg = function (a, b, c, d, x, s, t) {\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\n return (n << s | n >>> 32 - s) + b;\n };\n\n md5._hh = function (a, b, c, d, x, s, t) {\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\n return (n << s | n >>> 32 - s) + b;\n };\n\n md5._ii = function (a, b, c, d, x, s, t) {\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\n return (n << s | n >>> 32 - s) + b;\n }; // Package private blocksize\n\n\n md5._blocksize = 16;\n md5._digestsize = 16;\n\n module.exports = function (message, options) {\n if (message === undefined || message === null) throw new Error('Illegal argument ' + message);\n var digestbytes = crypt.wordsToBytes(md5(message, options));\n return options && options.asBytes ? digestbytes : options && options.asString ? bin.bytesToString(digestbytes) : crypt.bytesToHex(digestbytes);\n };\n})();","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer);\n};\n\nfunction isBuffer(obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj);\n} // For Node v0.10 support. Remove this eventually.\n\n\nfunction isSlowBuffer(obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0));\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.withPrefix = withPrefix;\nexports.withAssetPrefix = withAssetPrefix;\nexports.navigate = exports.default = void 0;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\n\nvar _utils = require(\"@gatsbyjs/reach-router/lib/utils\");\n\nvar _parsePath = require(\"./parse-path\");\n\nexports.parsePath = _parsePath.parsePath;\nvar _excluded = [\"to\", \"getProps\", \"onClick\", \"onMouseEnter\", \"activeClassName\", \"activeStyle\", \"innerRef\", \"partiallyActive\", \"state\", \"replace\", \"_location\"];\n\nvar isAbsolutePath = function isAbsolutePath(path) {\n return path === null || path === void 0 ? void 0 : path.startsWith(\"/\");\n};\n\nfunction withPrefix(path, prefix) {\n var _ref, _prefix;\n\n if (prefix === void 0) {\n prefix = getGlobalBasePrefix();\n }\n\n if (!isLocalLink(path)) {\n return path;\n }\n\n if (path.startsWith(\"./\") || path.startsWith(\"../\")) {\n return path;\n }\n\n var base = (_ref = (_prefix = prefix) !== null && _prefix !== void 0 ? _prefix : getGlobalPathPrefix()) !== null && _ref !== void 0 ? _ref : \"/\";\n return \"\" + (base !== null && base !== void 0 && base.endsWith(\"/\") ? base.slice(0, -1) : base) + (path.startsWith(\"/\") ? path : \"/\" + path);\n} // These global values are wrapped in typeof clauses to ensure the values exist.\n// This is especially problematic in unit testing of this component.\n\n\nvar getGlobalPathPrefix = function getGlobalPathPrefix() {\n return process.env.NODE_ENV !== \"production\" ? typeof __PATH_PREFIX__ !== \"undefined\" ? __PATH_PREFIX__ : undefined : __PATH_PREFIX__;\n};\n\nvar getGlobalBasePrefix = function getGlobalBasePrefix() {\n return process.env.NODE_ENV !== \"production\" ? typeof __BASE_PATH__ !== \"undefined\" ? __BASE_PATH__ : undefined : __BASE_PATH__;\n};\n\nvar isLocalLink = function isLocalLink(path) {\n return path && !path.startsWith(\"http://\") && !path.startsWith(\"https://\") && !path.startsWith(\"//\");\n};\n\nfunction withAssetPrefix(path) {\n return withPrefix(path, getGlobalPathPrefix());\n}\n\nfunction absolutify(path, current) {\n // If it's already absolute, return as-is\n if (isAbsolutePath(path)) {\n return path;\n }\n\n return (0, _utils.resolve)(path, current);\n}\n\nvar rewriteLinkPath = function rewriteLinkPath(path, relativeTo) {\n if (typeof path === \"number\") {\n return path;\n }\n\n if (!isLocalLink(path)) {\n return path;\n }\n\n return isAbsolutePath(path) ? withPrefix(path) : absolutify(path, relativeTo);\n};\n\nvar NavLinkPropTypes = {\n activeClassName: _propTypes.default.string,\n activeStyle: _propTypes.default.object,\n partiallyActive: _propTypes.default.bool\n}; // Set up IntersectionObserver\n\nvar createIntersectionObserver = function createIntersectionObserver(el, cb) {\n var io = new window.IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n if (el === entry.target) {\n // Check if element is within viewport, remove listener, destroy observer, and run link callback.\n // MSEdge doesn't currently support isIntersecting, so also test for an intersectionRatio > 0\n if (entry.isIntersecting || entry.intersectionRatio > 0) {\n io.unobserve(el);\n io.disconnect();\n cb();\n }\n }\n });\n }); // Add element to the observer\n\n io.observe(el);\n return {\n instance: io,\n el: el\n };\n};\n\nfunction GatsbyLinkLocationWrapper(props) {\n return /*#__PURE__*/_react.default.createElement(_reachRouter.Location, null, function (_ref2) {\n var location = _ref2.location;\n return /*#__PURE__*/_react.default.createElement(GatsbyLink, (0, _extends2.default)({}, props, {\n _location: location\n }));\n });\n}\n\nvar GatsbyLink = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(GatsbyLink, _React$Component);\n\n function GatsbyLink(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this; // Default to no support for IntersectionObserver\n\n _this.defaultGetProps = function (_ref3) {\n var isPartiallyCurrent = _ref3.isPartiallyCurrent,\n isCurrent = _ref3.isCurrent;\n\n if (_this.props.partiallyActive ? isPartiallyCurrent : isCurrent) {\n return {\n className: [_this.props.className, _this.props.activeClassName].filter(Boolean).join(\" \"),\n style: (0, _extends2.default)({}, _this.props.style, _this.props.activeStyle)\n };\n }\n\n return null;\n };\n\n var IOSupported = false;\n\n if (typeof window !== \"undefined\" && window.IntersectionObserver) {\n IOSupported = true;\n }\n\n _this.state = {\n IOSupported: IOSupported\n };\n _this.handleRef = _this.handleRef.bind((0, _assertThisInitialized2.default)(_this));\n return _this;\n }\n\n var _proto = GatsbyLink.prototype;\n\n _proto._prefetch = function _prefetch() {\n var currentPath = window.location.pathname; // reach router should have the correct state\n\n if (this.props._location && this.props._location.pathname) {\n currentPath = this.props._location.pathname;\n }\n\n var rewrittenPath = rewriteLinkPath(this.props.to, currentPath);\n var newPathName = (0, _parsePath.parsePath)(rewrittenPath).pathname; // Prefech is used to speed up next navigations. When you use it on the current navigation,\n // there could be a race-condition where Chrome uses the stale data instead of waiting for the network to complete\n\n if (currentPath !== newPathName) {\n ___loader.enqueue(newPathName);\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // Preserve non IO functionality if no support\n if (this.props.to !== prevProps.to && !this.state.IOSupported) {\n this._prefetch();\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n // Preserve non IO functionality if no support\n if (!this.state.IOSupported) {\n this._prefetch();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (!this.io) {\n return;\n }\n\n var _this$io = this.io,\n instance = _this$io.instance,\n el = _this$io.el;\n instance.unobserve(el);\n instance.disconnect();\n };\n\n _proto.handleRef = function handleRef(ref) {\n var _this2 = this;\n\n if (this.props.innerRef && this.props.innerRef.hasOwnProperty(\"current\")) {\n this.props.innerRef.current = ref;\n } else if (this.props.innerRef) {\n this.props.innerRef(ref);\n }\n\n if (this.state.IOSupported && ref) {\n // If IO supported and element reference found, setup Observer functionality\n this.io = createIntersectionObserver(ref, function () {\n _this2._prefetch();\n });\n }\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _this$props = this.props,\n to = _this$props.to,\n _this$props$getProps = _this$props.getProps,\n getProps = _this$props$getProps === void 0 ? this.defaultGetProps : _this$props$getProps,\n _onClick = _this$props.onClick,\n _onMouseEnter = _this$props.onMouseEnter,\n $activeClassName = _this$props.activeClassName,\n $activeStyle = _this$props.activeStyle,\n $innerRef = _this$props.innerRef,\n partiallyActive = _this$props.partiallyActive,\n state = _this$props.state,\n replace = _this$props.replace,\n _location = _this$props._location,\n rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props, _excluded);\n\n if (process.env.NODE_ENV !== \"production\" && !isLocalLink(to)) {\n console.warn(\"External link \" + to + \" was detected in a Link component. Use the Link component only for internal links. See: https://gatsby.dev/internal-links\");\n }\n\n var prefixedTo = rewriteLinkPath(to, _location.pathname);\n\n if (!isLocalLink(prefixedTo)) {\n return /*#__PURE__*/_react.default.createElement(\"a\", (0, _extends2.default)({\n href: prefixedTo\n }, rest));\n }\n\n return /*#__PURE__*/_react.default.createElement(_reachRouter.Link, (0, _extends2.default)({\n to: prefixedTo,\n state: state,\n getProps: getProps,\n innerRef: this.handleRef,\n onMouseEnter: function onMouseEnter(e) {\n if (_onMouseEnter) {\n _onMouseEnter(e);\n }\n\n ___loader.hovering((0, _parsePath.parsePath)(prefixedTo).pathname);\n },\n onClick: function onClick(e) {\n if (_onClick) {\n _onClick(e);\n }\n\n if (e.button === 0 && // ignore right clicks\n !_this3.props.target && // let browser handle \"target=_blank\"\n !e.defaultPrevented && // onClick prevented default\n !e.metaKey && // ignore clicks with modifier keys...\n !e.altKey && !e.ctrlKey && !e.shiftKey) {\n e.preventDefault();\n var shouldReplace = replace;\n\n var isCurrent = encodeURI(prefixedTo) === _location.pathname;\n\n if (typeof replace !== \"boolean\" && isCurrent) {\n shouldReplace = true;\n } // Make sure the necessary scripts and data are\n // loaded before continuing.\n\n\n window.___navigate(prefixedTo, {\n state: state,\n replace: shouldReplace\n });\n }\n\n return true;\n }\n }, rest));\n };\n\n return GatsbyLink;\n}(_react.default.Component);\n\nGatsbyLink.propTypes = (0, _extends2.default)({}, NavLinkPropTypes, {\n onClick: _propTypes.default.func,\n to: _propTypes.default.string.isRequired,\n replace: _propTypes.default.bool,\n state: _propTypes.default.object\n});\n\nvar _default = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {\n return /*#__PURE__*/_react.default.createElement(GatsbyLinkLocationWrapper, (0, _extends2.default)({\n innerRef: ref\n }, props));\n});\n\nexports.default = _default;\n\nvar navigate = function navigate(to, options) {\n window.___navigate(rewriteLinkPath(to, window.location.pathname), options);\n};\n\nexports.navigate = navigate;","\"use strict\";\n\nexports.__esModule = true;\nexports.parsePath = parsePath;\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}","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = exports.ScrollContext = void 0;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nexports.ScrollContext = _scrollHandler.ScrollHandler;\n\nvar _useScrollRestoration = require(\"./use-scroll-restoration\");\n\nexports.useScrollRestoration = _useScrollRestoration.useScrollRestoration;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.ScrollHandler = exports.ScrollContext = void 0;\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _sessionStorage = require(\"./session-storage\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar ScrollContext = /*#__PURE__*/React.createContext(new _sessionStorage.SessionStorage());\nexports.ScrollContext = ScrollContext;\nScrollContext.displayName = \"GatsbyScrollContext\";\n\nvar ScrollHandler = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollHandler, _React$Component);\n\n function ScrollHandler() {\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._stateStorage = new _sessionStorage.SessionStorage();\n _this._isTicking = false;\n _this._latestKnownScrollY = 0;\n\n _this.scrollListener = function () {\n _this._latestKnownScrollY = window.scrollY;\n\n if (!_this._isTicking) {\n _this._isTicking = true;\n requestAnimationFrame(_this._saveScroll.bind((0, _assertThisInitialized2.default)(_this)));\n }\n };\n\n _this.windowScroll = function (position, prevProps) {\n if (_this.shouldUpdateScroll(prevProps, _this.props)) {\n window.scrollTo(0, position);\n }\n };\n\n _this.scrollToHash = function (hash, prevProps) {\n var node = document.getElementById(hash.substring(1));\n\n if (node && _this.shouldUpdateScroll(prevProps, _this.props)) {\n node.scrollIntoView();\n }\n };\n\n _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n\n if (!shouldUpdateScroll) {\n return true;\n } // Hack to allow accessing this._stateStorage.\n\n\n return shouldUpdateScroll.call((0, _assertThisInitialized2.default)(_this), prevRouterProps, routerProps);\n };\n\n return _this;\n }\n\n var _proto = ScrollHandler.prototype;\n\n _proto._saveScroll = function _saveScroll() {\n var key = this.props.location.key || null;\n\n if (key) {\n this._stateStorage.save(this.props.location, key, this._latestKnownScrollY);\n }\n\n this._isTicking = false;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n window.addEventListener(\"scroll\", this.scrollListener);\n var scrollPosition;\n var _this$props$location = this.props.location,\n key = _this$props$location.key,\n hash = _this$props$location.hash;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n if (scrollPosition) {\n this.windowScroll(scrollPosition, undefined);\n } else if (hash) {\n this.scrollToHash(decodeURI(hash), undefined);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener(\"scroll\", this.scrollListener);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var _this$props$location2 = this.props.location,\n hash = _this$props$location2.hash,\n key = _this$props$location2.key;\n var scrollPosition;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n /** There are two pieces of state: the browser url and\n * history state which keeps track of scroll position\n * Native behaviour prescribes that we ought to restore scroll position\n * when a user navigates back in their browser (this is the `POP` action)\n * Currently, reach router has a bug that prevents this at https://github.com/reach/router/issues/228\n * So we _always_ stick to the url as a source of truth — if the url\n * contains a hash, we scroll to it\n */\n\n\n if (hash) {\n this.scrollToHash(decodeURI(hash), prevProps);\n } else {\n this.windowScroll(scrollPosition, prevProps);\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(ScrollContext.Provider, {\n value: this._stateStorage\n }, this.props.children);\n };\n\n return ScrollHandler;\n}(React.Component);\n\nexports.ScrollHandler = ScrollHandler;\nScrollHandler.propTypes = {\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired,\n location: _propTypes.default.object.isRequired\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.SessionStorage = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\n\nvar SessionStorage = /*#__PURE__*/function () {\n function SessionStorage() {}\n\n var _proto = SessionStorage.prototype;\n\n _proto.read = function read(location, key) {\n var stateKey = this.getStateKey(location, key);\n\n try {\n var value = window.sessionStorage.getItem(stateKey);\n return value ? JSON.parse(value) : 0;\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n }\n\n if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n }\n\n return 0;\n }\n };\n\n _proto.save = function save(location, key, value) {\n var stateKey = this.getStateKey(location, key);\n var storedValue = JSON.stringify(value);\n\n try {\n window.sessionStorage.setItem(stateKey, storedValue);\n } catch (e) {\n if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n } else {\n window[GATSBY_ROUTER_SCROLL_STATE] = {};\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n }\n }\n };\n\n _proto.getStateKey = function getStateKey(location, key) {\n var stateKeyBase = \"\" + STATE_KEY_PREFIX + location.pathname;\n return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n };\n\n return SessionStorage;\n}();\n\nexports.SessionStorage = SessionStorage;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = useScrollRestoration;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nvar _react = require(\"react\");\n\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\n\nfunction useScrollRestoration(identifier) {\n var location = (0, _reachRouter.useLocation)();\n var state = (0, _react.useContext)(_scrollHandler.ScrollContext);\n var ref = (0, _react.useRef)(null);\n (0, _react.useLayoutEffect)(function () {\n if (ref.current) {\n var position = state.read(location, identifier);\n ref.current.scrollTo(0, position || 0);\n }\n }, [location.key]);\n return {\n ref: ref,\n onScroll: function onScroll() {\n if (ref.current) {\n state.save(location, identifier, ref.current.scrollTop);\n }\n }\n };\n}","// prefer default export if available\nconst preferDefault = m => (m && m.default) || m\n\nexports.components = {\n \"component---cache-caches-gatsby-plugin-offline-app-shell-js\": () => import(\"./../../caches/gatsby-plugin-offline/app-shell.js\" /* webpackChunkName: \"component---cache-caches-gatsby-plugin-offline-app-shell-js\" */),\n \"component---src-components-about-index-js\": () => import(\"./../../../src/components/About/index.js\" /* webpackChunkName: \"component---src-components-about-index-js\" */),\n \"component---src-components-contact-index-js\": () => import(\"./../../../src/components/Contact/index.js\" /* webpackChunkName: \"component---src-components-contact-index-js\" */),\n \"component---src-pages-404-js\": () => import(\"./../../../src/pages/404.js\" /* webpackChunkName: \"component---src-pages-404-js\" */)\n}\n\n","module.exports = [{\n plugin: require('../node_modules/gatsby-plugin-matomo/gatsby-browser.js'),\n options: {\"plugins\":[],\"siteId\":\"1\",\"matomoUrl\":\"//webanalytics.leg.state.nv.us/piwik/\",\"siteUrl\":\"https://www.leg.state.nv.us\",\"matomoPhpScript\":\"matomo.php\",\"matomoJsScript\":\"matomo.js\"},\n },{\n plugin: require('../node_modules/gatsby-source-prismic/gatsby-browser.js'),\n options: {\"plugins\":[],\"repositoryName\":\"lcb-research\",\"schemas\":{\"about\":{\"Main\":{\"about_summary\":{\"type\":\"StructuredText\",\"config\":{\"multi\":\"paragraph,strong,em,hyperlink,list-item,o-list-item\",\"label\":\"about_summary\",\"placeholder\":\"General information about the division\"}},\"info_sections\":{\"type\":\"Group\",\"config\":{\"fields\":{\"section_title\":{\"type\":\"Text\",\"config\":{\"label\":\"section title\",\"placeholder\":\"section name\"}},\"section_text\":{\"type\":\"StructuredText\",\"config\":{\"multi\":\"paragraph,strong,em,hyperlink,list-item,o-list-item\",\"label\":\"section_text\",\"placeholder\":\"section text\"}}},\"label\":\"Info sections\"}}},\"Staff\":{\"staff_group\":{\"type\":\"Group\",\"config\":{\"fields\":{\"unit_name\":{\"type\":\"Text\",\"config\":{\"label\":\"unit name\",\"placeholder\":\"Division group/unit name, e.g., Research Library\"}},\"staff_list\":{\"type\":\"StructuredText\",\"config\":{\"multi\":\"paragraph\",\"label\":\"staff list\",\"placeholder\":\"Listing of staff in uni\"}},\"display_column\":{\"type\":\"Select\",\"config\":{\"options\":[\"Left\",\"Right\"],\"label\":\"display column\",\"placeholder\":\"Display in left or right column on page?\"}},\"display_order\":{\"type\":\"Number\",\"config\":{\"label\":\"Display order\",\"placeholder\":\"In what order should this group appear?\"}}},\"label\":\"Staff group\"}}}},\"contact\":{\"Main\":{\"page_summary\":{\"type\":\"StructuredText\",\"config\":{\"single\":\"paragraph,strong,em,hyperlink,list-item,o-list-item\",\"label\":\"page summary\"}},\"frequently_accessed_resources\":{\"type\":\"StructuredText\",\"config\":{\"multi\":\"paragraph,strong,em,hyperlink,list-item,o-list-item\",\"label\":\"frequently_accessed_resources\",\"placeholder\":\"Resources folks are commonly referred to\"}},\"categories\":{\"type\":\"Group\",\"config\":{\"fields\":{\"short_name\":{\"type\":\"Text\",\"config\":{\"label\":\"short name\",\"placeholder\":\"Category short name (sent in email subject). Best without spaces\"}},\"long_name\":{\"type\":\"Text\",\"config\":{\"label\":\"long name\",\"placeholder\":\"How option displays in dropdown\"}},\"group_to_email\":{\"type\":\"Select\",\"config\":{\"options\":[\"Research\",\"CSU\",\"Library\"],\"label\":\"group to email\",\"placeholder\":\"Which group will get emails of this category?\"}},\"category_type\":{\"type\":\"Select\",\"config\":{\"options\":[\"Ongoing\",\"Temporary\"],\"label\":\"category type\",\"placeholder\":\"Is this an ongoing category or a temporary one?\"}},\"display_order\":{\"type\":\"Number\",\"config\":{\"label\":\"display_order\",\"placeholder\":\"What place in the list should this option appear? (number)\"}},\"is_active\":{\"type\":\"Boolean\",\"config\":{\"placeholder_false\":\"no\",\"placeholder_true\":\"yes\",\"default_value\":false,\"label\":\"is active\"}}},\"label\":\"categories\"}},\"building_open\":{\"type\":\"Boolean\",\"config\":{\"placeholder_false\":\"no\",\"placeholder_true\":\"yes\",\"default_value\":false,\"label\":\"building open\"}},\"building_closure_text\":{\"type\":\"StructuredText\",\"config\":{\"multi\":\"paragraph,strong,em,hyperlink\",\"label\":\"building closure text\",\"placeholder\":\"Message to display when the building is closed\"}},\"building_open_text\":{\"type\":\"StructuredText\",\"config\":{\"multi\":\"paragraph,strong,em,hyperlink,list-item,o-list-item\",\"label\":\"building open text\",\"placeholder\":\"Message or info to display when building is open\"}},\"mailing_address\":{\"type\":\"StructuredText\",\"config\":{\"multi\":\"paragraph,strong,em,hyperlink\",\"label\":\"mailing address\"}},\"email_and_phone\":{\"type\":\"StructuredText\",\"config\":{\"multi\":\"paragraph,strong,em,list-item\",\"label\":\"email and phone\"}}}}}},\n },{\n plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n options: {\"plugins\":[],\"name\":\"Legislative Counsel Bureau Research Division About\",\"short_name\":\"LCB Research Division About\",\"start_url\":\"/\",\"background_color\":\"#f0f0f0\",\"theme_color\":\"#30415b\",\"display\":\"standalone\",\"icon\":\"src/images/icon.png\",\"icon_options\":{\"purpose\":\"maskable\"},\"legacy\":true,\"theme_color_in_head\":true,\"cache_busting_mode\":\"query\",\"crossOrigin\":\"anonymous\",\"include_favicon\":true,\"cacheDigest\":\"ca25395aa6403490a623ab2a4978db8d\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-offline/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../gatsby-browser.js'),\n options: {\"plugins\":[]},\n }]\n","const plugins = require(`./api-runner-browser-plugins`)\nconst {\n getResourceURLsForPathname,\n loadPage,\n loadPageSync,\n} = require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n // Hooks for gatsby-cypress's API handler\n if (process.env.CYPRESS_SUPPORT) {\n if (window.___apiHandler) {\n window.___apiHandler(api)\n } else if (window.___resolvedAPIs) {\n window.___resolvedAPIs.push(api)\n } else {\n window.___resolvedAPIs = [api]\n }\n }\n\n let results = plugins.map(plugin => {\n if (!plugin.plugin[api]) {\n return undefined\n }\n\n args.getResourceURLsForPathname = getResourceURLsForPathname\n args.loadPage = loadPage\n args.loadPageSync = loadPageSync\n\n const result = plugin.plugin[api](args, plugin.options)\n if (result && argTransform) {\n args = argTransform({ args, result, plugin })\n }\n return result\n })\n\n // Filter out undefined results.\n results = results.filter(result => typeof result !== `undefined`)\n\n if (results.length > 0) {\n return results\n } else if (defaultReturn) {\n return [defaultReturn]\n } else {\n return []\n }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n plugins.reduce(\n (previous, next) =>\n next.plugin[api]\n ? previous.then(() => next.plugin[api](args, next.options))\n : previous,\n Promise.resolve()\n )\n","// \n// An event handler can take an optional event argument\n// and should not return a value\n \n \n\n// An array of all currently registered event handlers for a type\n \n \n// A map of event types and their corresponding event handlers.\n \n \n \n \n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nfunction mitt(all ) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type , handler ) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type , handler ) {\n\t\t\tif (all[type]) {\n\t\t\t\tall[type].splice(all[type].indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * @param {String} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit: function emit(type , evt ) {\n\t\t\t(all[type] || []).slice().map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).slice().map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\nexport default mitt;\n//# sourceMappingURL=mitt.es.js.map\n","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","export default path => {\n if (path === undefined) {\n return path\n }\n if (path === `/`) {\n return `/`\n }\n if (path.charAt(path.length - 1) === `/`) {\n return path.slice(0, -1)\n }\n return path\n}\n","import { pick } from \"@gatsbyjs/reach-router/lib/utils\"\nimport stripPrefix from \"./strip-prefix\"\nimport normalizePagePath from \"./normalize-page-path\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\n\nconst pathCache = new Map()\nlet matchPaths = []\n\nconst trimPathname = rawPathname => {\n const pathname = decodeURIComponent(rawPathname)\n // Remove the pathPrefix from the pathname.\n const trimmedPathname = stripPrefix(\n pathname,\n decodeURIComponent(__BASE_PATH__)\n )\n // Remove any hashfragment\n .split(`#`)[0]\n // Remove search query\n .split(`?`)[0]\n\n return trimmedPathname\n}\n\nfunction absolutify(path) {\n // If it's already absolute, return as-is\n if (\n path.startsWith(`/`) ||\n path.startsWith(`https://`) ||\n path.startsWith(`http://`)\n ) {\n return path\n }\n // Calculate path relative to current location, adding a trailing slash to\n // match behavior of @reach/router\n return new URL(\n path,\n window.location.href + (window.location.href.endsWith(`/`) ? `` : `/`)\n ).pathname\n}\n\n/**\n * Set list of matchPaths\n *\n * @param {Array<{path: string, matchPath: string}>} value collection of matchPaths\n */\nexport const setMatchPaths = value => {\n matchPaths = value\n}\n\n/**\n * Return a matchpath url\n * if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n * `/foo?bar=far` => `/page1`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string|null}\n */\nexport const findMatchPath = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return normalizePagePath(path.route.originalPath)\n }\n\n return null\n}\n\n/**\n * Return a matchpath params from reach/router rules\n * if `match-paths.json` contains `{ \":bar/*foo\" }`, and the path is /baz/zaz/zoo\n * then it returns\n * { bar: baz, foo: zaz/zoo }\n *\n * @param {string} rawPathname A raw pathname\n * @return {object}\n */\nexport const grabMatchParams = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return path.params\n }\n\n return {}\n}\n\n// Given a raw URL path, returns the cleaned version of it (trim off\n// `#` and query params), or if it matches an entry in\n// `match-paths.json`, its matched path is returned\n//\n// E.g. `/foo?bar=far` => `/foo`\n//\n// Or if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n// `/foo?bar=far` => `/page1`\nexport const findPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n if (pathCache.has(trimmedPathname)) {\n return pathCache.get(trimmedPathname)\n }\n\n const redirect = maybeGetBrowserRedirect(rawPathname)\n if (redirect) {\n return findPath(redirect.toPath)\n }\n\n let foundPath = findMatchPath(trimmedPathname)\n\n if (!foundPath) {\n foundPath = cleanPath(rawPathname)\n }\n\n pathCache.set(trimmedPathname, foundPath)\n\n return foundPath\n}\n\n/**\n * Clean a url and converts /index.html => /\n * E.g. `/foo?bar=far` => `/foo`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string}\n */\nexport const cleanPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n\n let foundPath = trimmedPathname\n if (foundPath === `/index.html`) {\n foundPath = `/`\n }\n\n foundPath = normalizePagePath(foundPath)\n\n return foundPath\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Link, {\n withPrefix,\n withAssetPrefix,\n navigate,\n push,\n replace,\n navigateTo,\n parsePath,\n} from \"gatsby-link\"\nimport { useScrollRestoration } from \"gatsby-react-router-scroll\"\nimport PageRenderer from \"./public-page-renderer\"\nimport loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nconst StaticQueryContext = React.createContext({})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n const finalData = data\n ? data.data\n : staticQueryData[query] && staticQueryData[query].data\n\n return (\n \n {finalData && render(finalData)}\n {!finalData &&
Loading (StaticQuery)
}\n
\n )\n}\n\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n return (\n \n {staticQueryData => (\n \n )}\n \n )\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n const context = React.useContext(StaticQueryContext)\n\n // query is a stringified number like `3303882` when wrapped with graphql, If a user forgets\n // to wrap the query in a grqphql, then casting it to a Number results in `NaN` allowing us to\n // catch the misuse of the API and give proper direction\n if (isNaN(Number(query))) {\n throw new Error(`useStaticQuery was called with a string but expects to be called using \\`graphql\\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\\`${query}\\`);\n`)\n }\n\n if (context[query]?.data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nfunction graphql() {\n throw new Error(\n `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n `are supposed to only be evaluated at compile time, and then compiled away. ` +\n `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n )\n}\n\nexport {\n Link,\n withAssetPrefix,\n withPrefix,\n graphql,\n parsePath,\n navigate,\n useScrollRestoration,\n StaticQueryContext,\n StaticQuery,\n PageRenderer,\n useStaticQuery,\n prefetchPathname,\n}\n","const support = function (feature) {\n if (typeof document === `undefined`) {\n return false\n }\n const fakeLink = document.createElement(`link`)\n try {\n if (fakeLink.relList && typeof fakeLink.relList.supports === `function`) {\n return fakeLink.relList.supports(feature)\n }\n } catch (err) {\n return false\n }\n return false\n}\n\nconst linkPrefetchStrategy = function (url, options) {\n return new Promise((resolve, reject) => {\n if (typeof document === `undefined`) {\n reject()\n return\n }\n\n const link = document.createElement(`link`)\n link.setAttribute(`rel`, `prefetch`)\n link.setAttribute(`href`, url)\n\n Object.keys(options).forEach(key => {\n link.setAttribute(key, options[key])\n })\n\n link.onload = resolve\n link.onerror = reject\n\n const parentElement =\n document.getElementsByTagName(`head`)[0] ||\n document.getElementsByName(`script`)[0].parentNode\n parentElement.appendChild(link)\n })\n}\n\nconst xhrPrefetchStrategy = function (url) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(`GET`, url, true)\n\n req.onload = () => {\n if (req.status === 200) {\n resolve()\n } else {\n reject()\n }\n }\n\n req.send(null)\n })\n}\n\nconst supportedPrefetchStrategy = support(`prefetch`)\n ? linkPrefetchStrategy\n : xhrPrefetchStrategy\n\nconst preFetched = {}\n\nconst prefetch = function (url, options) {\n return new Promise(resolve => {\n if (preFetched[url]) {\n resolve()\n return\n }\n\n supportedPrefetchStrategy(url, options)\n .then(() => {\n resolve()\n preFetched[url] = true\n })\n .catch(() => {}) // 404s are logged to the console anyway\n })\n}\n\nexport default prefetch\n","import prefetchHelper from \"./prefetch\"\nimport emitter from \"./emitter\"\nimport { setMatchPaths, findPath, findMatchPath } from \"./find-path\"\n\n/**\n * Available resource loading statuses\n */\nexport const PageResourceStatus = {\n /**\n * At least one of critical resources failed to load\n */\n Error: `error`,\n /**\n * Resources loaded successfully\n */\n Success: `success`,\n}\n\nconst preferDefault = m => (m && m.default) || m\n\nconst stripSurroundingSlashes = s => {\n s = s[0] === `/` ? s.slice(1) : s\n s = s.endsWith(`/`) ? s.slice(0, -1) : s\n return s\n}\n\nconst createPageDataUrl = path => {\n const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json`\n}\n\nfunction doFetch(url, method = `GET`) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(method, url, true)\n req.onreadystatechange = () => {\n if (req.readyState == 4) {\n resolve(req)\n }\n }\n req.send(null)\n })\n}\n\nconst doesConnectionSupportPrefetch = () => {\n if (\n `connection` in navigator &&\n typeof navigator.connection !== `undefined`\n ) {\n if ((navigator.connection.effectiveType || ``).includes(`2g`)) {\n return false\n }\n if (navigator.connection.saveData) {\n return false\n }\n }\n return true\n}\n\nconst toPageResources = (pageData, component = null) => {\n const page = {\n componentChunkName: pageData.componentChunkName,\n path: pageData.path,\n webpackCompilationHash: pageData.webpackCompilationHash,\n matchPath: pageData.matchPath,\n staticQueryHashes: pageData.staticQueryHashes,\n }\n\n return {\n component,\n json: pageData.result,\n page,\n }\n}\n\nexport class BaseLoader {\n constructor(loadComponent, matchPaths) {\n // Map of pagePath -> Page. Where Page is an object with: {\n // status: PageResourceStatus.Success || PageResourceStatus.Error,\n // payload: PageResources, // undefined if PageResourceStatus.Error\n // }\n // PageResources is {\n // component,\n // json: pageData.result,\n // page: {\n // componentChunkName,\n // path,\n // webpackCompilationHash,\n // staticQueryHashes\n // },\n // staticQueryResults\n // }\n this.pageDb = new Map()\n this.inFlightDb = new Map()\n this.staticQueryDb = {}\n this.pageDataDb = new Map()\n this.prefetchTriggered = new Set()\n this.prefetchCompleted = new Set()\n this.loadComponent = loadComponent\n setMatchPaths(matchPaths)\n }\n\n inFlightNetworkRequests = new Map()\n\n memoizedGet(url) {\n let inFlightPromise = this.inFlightNetworkRequests.get(url)\n\n if (!inFlightPromise) {\n inFlightPromise = doFetch(url, `GET`)\n this.inFlightNetworkRequests.set(url, inFlightPromise)\n }\n\n // Prefer duplication with then + catch over .finally to prevent problems in ie11 + firefox\n return inFlightPromise\n .then(response => {\n this.inFlightNetworkRequests.delete(url)\n return response\n })\n .catch(err => {\n this.inFlightNetworkRequests.delete(url)\n throw err\n })\n }\n\n setApiRunner(apiRunner) {\n this.apiRunner = apiRunner\n this.prefetchDisabled = apiRunner(`disableCorePrefetching`).some(a => a)\n }\n\n fetchPageDataJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.path === undefined) {\n throw new Error(`not a valid pageData response`)\n }\n\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: jsonPayload,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404 page and it doesn't exist, we're done\n if (pagePath === `/404.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPageDataJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n loadPageDataJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDataDb.has(pagePath)) {\n const pageData = this.pageDataDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPageDataJson({ pagePath }).then(pageData => {\n this.pageDataDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n findMatchPath(rawPath) {\n return findMatchPath(rawPath)\n }\n\n // TODO check all uses of this and whether they use undefined for page resources not exist\n loadPage(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const page = this.pageDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !page.payload.stale) {\n if (page.error) {\n return {\n error: page.error,\n status: page.status,\n }\n }\n\n return Promise.resolve(page.payload)\n }\n }\n\n if (this.inFlightDb.has(pagePath)) {\n return this.inFlightDb.get(pagePath)\n }\n\n const inFlightPromise = Promise.all([\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n ]).then(allData => {\n const result = allData[1]\n if (result.status === PageResourceStatus.Error) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n let pageData = result.payload\n const { componentChunkName, staticQueryHashes = [] } = pageData\n\n const finalResult = {}\n\n const componentChunkPromise = this.loadComponent(componentChunkName).then(\n component => {\n finalResult.createdAt = new Date()\n let pageResources\n if (!component || component instanceof Error) {\n finalResult.status = PageResourceStatus.Error\n finalResult.error = component\n } else {\n finalResult.status = PageResourceStatus.Success\n if (result.notFound === true) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: allData[0]\n ? allData[0].webpackCompilationHash\n : ``,\n })\n pageResources = toPageResources(pageData, component)\n }\n // undefined if final result is an error\n return pageResources\n }\n )\n\n const staticQueryBatchPromise = Promise.all(\n staticQueryHashes.map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n )\n .then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n .catch(() => {\n throw new Error(\n `We couldn't load \"${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json\"`\n )\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return (\n Promise.all([componentChunkPromise, staticQueryBatchPromise])\n .then(([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = { ...pageResources, staticQueryResults }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n if (finalResult.error) {\n return {\n error: finalResult.error,\n status: finalResult.status,\n }\n }\n\n return payload\n })\n // when static-query fail to load we throw a better error\n .catch(err => {\n return {\n error: err,\n status: PageResourceStatus.Error,\n }\n })\n )\n })\n\n inFlightPromise\n .then(() => {\n this.inFlightDb.delete(pagePath)\n })\n .catch(error => {\n this.inFlightDb.delete(pagePath)\n throw error\n })\n\n this.inFlightDb.set(pagePath, inFlightPromise)\n\n return inFlightPromise\n }\n\n // returns undefined if the page does not exists in cache\n loadPageSync(rawPath, options = {}) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const pageData = this.pageDb.get(pagePath)\n\n if (pageData.payload) {\n return pageData.payload\n }\n\n if (options?.withErrorDetails) {\n return {\n error: pageData.error,\n status: pageData.status,\n }\n }\n }\n return undefined\n }\n\n shouldPrefetch(pagePath) {\n // Skip prefetching if we know user is on slow or constrained connection\n if (!doesConnectionSupportPrefetch()) {\n return false\n }\n\n // Check if the page exists.\n if (this.pageDb.has(pagePath)) {\n return false\n }\n\n return true\n }\n\n prefetch(pagePath) {\n if (!this.shouldPrefetch(pagePath)) {\n return false\n }\n\n // Tell plugins with custom prefetching logic that they should start\n // prefetching this path.\n if (!this.prefetchTriggered.has(pagePath)) {\n this.apiRunner(`onPrefetchPathname`, { pathname: pagePath })\n this.prefetchTriggered.add(pagePath)\n }\n\n // If a plugin has disabled core prefetching, stop now.\n if (this.prefetchDisabled) {\n return false\n }\n\n const realPath = findPath(pagePath)\n // Todo make doPrefetch logic cacheable\n // eslint-disable-next-line consistent-return\n this.doPrefetch(realPath).then(() => {\n if (!this.prefetchCompleted.has(pagePath)) {\n this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n this.prefetchCompleted.add(pagePath)\n }\n })\n\n return true\n }\n\n doPrefetch(pagePath) {\n const pageDataUrl = createPageDataUrl(pagePath)\n return prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n )\n }\n\n hovering(rawPath) {\n this.loadPage(rawPath)\n }\n\n getResourceURLsForPathname(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDataDb.get(pagePath)\n if (page) {\n const pageResources = toPageResources(page.payload)\n\n return [\n ...createComponentUrls(pageResources.page.componentChunkName),\n createPageDataUrl(pagePath),\n ]\n } else {\n return null\n }\n }\n\n isPageNotFound(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDb.get(pagePath)\n return !page || page.notFound\n }\n\n loadAppData(retries = 0) {\n return this.memoizedGet(`${__PATH_PREFIX__}/page-data/app-data.json`).then(\n req => {\n const { status, responseText } = req\n\n let appData\n\n if (status !== 200 && retries < 3) {\n // Retry 3 times incase of non-200 responses\n return this.loadAppData(retries + 1)\n }\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.webpackCompilationHash === undefined) {\n throw new Error(`not a valid app-data response`)\n }\n\n appData = jsonPayload\n } catch (err) {\n // continue regardless of error\n }\n }\n\n return appData\n }\n )\n }\n}\n\nconst createComponentUrls = componentChunkName =>\n (window.___chunkMapping[componentChunkName] || []).map(\n chunk => __PATH_PREFIX__ + chunk\n )\n\nexport class ProdLoader extends BaseLoader {\n constructor(asyncRequires, matchPaths) {\n const loadComponent = chunkName => {\n if (!asyncRequires.components[chunkName]) {\n throw new Error(\n `We couldn't find the correct component chunk with the name ${chunkName}`\n )\n }\n\n return (\n asyncRequires.components[chunkName]()\n .then(preferDefault)\n // loader will handle the case when component is error\n .catch(err => err)\n )\n }\n\n super(loadComponent, matchPaths)\n }\n\n doPrefetch(pagePath) {\n return super.doPrefetch(pagePath).then(result => {\n if (result.status !== PageResourceStatus.Success) {\n return Promise.resolve()\n }\n const pageData = result.payload\n const chunkName = pageData.componentChunkName\n const componentUrls = createComponentUrls(chunkName)\n return Promise.all(componentUrls.map(prefetchHelper)).then(() => pageData)\n })\n }\n\n loadPageDataJson(rawPath) {\n return super.loadPageDataJson(rawPath).then(data => {\n if (data.notFound) {\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n}\n\nlet instance\n\nexport const setLoader = _loader => {\n instance = _loader\n}\n\nexport const publicLoader = {\n enqueue: rawPath => instance.prefetch(rawPath),\n\n // Real methods\n getResourceURLsForPathname: rawPath =>\n instance.getResourceURLsForPathname(rawPath),\n loadPage: rawPath => instance.loadPage(rawPath),\n // TODO add deprecation to v4 so people use withErrorDetails and then we can remove in v5 and change default behaviour\n loadPageSync: (rawPath, options = {}) =>\n instance.loadPageSync(rawPath, options),\n prefetch: rawPath => instance.prefetch(rawPath),\n isPageNotFound: rawPath => instance.isPageNotFound(rawPath),\n hovering: rawPath => instance.hovering(rawPath),\n loadAppData: () => instance.loadAppData(),\n}\n\nexport default publicLoader\n\nexport function getStaticQueryResults() {\n if (instance) {\n return instance.staticQueryDb\n } else {\n return {}\n }\n}\n","import React, { createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport { grabMatchParams } from \"./find-path\"\n\n// Renders page\nclass PageRenderer extends React.Component {\n render() {\n const props = {\n ...this.props,\n params: {\n ...grabMatchParams(this.props.location.pathname),\n ...this.props.pageResources.json.pageContext.__params,\n },\n }\n\n const pageElement = createElement(this.props.pageResources.component, {\n ...props,\n key: this.props.path || this.props.pageResources.page.path,\n })\n\n const wrappedPage = apiRunner(\n `wrapPageElement`,\n { element: pageElement, props },\n pageElement,\n ({ result }) => {\n return { element: result, props }\n }\n ).pop()\n\n return wrappedPage\n }\n}\n\nPageRenderer.propTypes = {\n location: PropTypes.object.isRequired,\n pageResources: PropTypes.object.isRequired,\n data: PropTypes.object,\n pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","// This is extracted to separate module because it's shared\n// between browser and SSR code\nexport const RouteAnnouncerProps = {\n id: `gatsby-announcer`,\n style: {\n position: `absolute`,\n top: 0,\n width: 1,\n height: 1,\n padding: 0,\n overflow: `hidden`,\n clip: `rect(0, 0, 0, 0)`,\n whiteSpace: `nowrap`,\n border: 0,\n },\n \"aria-live\": `assertive`,\n \"aria-atomic\": `true`,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { RouteAnnouncerProps } from \"./route-announcer-props\"\nimport { navigate as reachNavigate } from \"@gatsbyjs/reach-router\"\nimport { globalHistory } from \"@gatsbyjs/reach-router/lib/history\"\nimport { parsePath } from \"gatsby-link\"\n\nfunction maybeRedirect(pathname) {\n const redirect = maybeGetBrowserRedirect(pathname)\n const { hash, search } = window.location\n\n if (redirect != null) {\n window.___replace(redirect.toPath + search + hash)\n return true\n } else {\n return false\n }\n}\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onRouteUpdate`, { location, prevLocation })\n if (\n process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND &&\n process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR === `true`\n ) {\n emitter.emit(`onRouteUpdate`, { location, prevLocation })\n }\n }\n}\n\nconst navigate = (to, options = {}) => {\n // Support forward/backward navigation with numbers\n // navigate(-2) (jumps back 2 history steps)\n // navigate(2) (jumps forward 2 history steps)\n if (typeof to === `number`) {\n globalHistory.navigate(to)\n return\n }\n\n const { pathname, search, hash } = parsePath(to)\n const redirect = maybeGetBrowserRedirect(pathname)\n\n // If we're redirecting, just replace the passed in pathname\n // to the one we want to redirect to.\n if (redirect) {\n to = redirect.toPath + search + hash\n }\n\n // If we had a service worker update, no matter the path, reload window and\n // reset the pathname whitelist\n if (window.___swUpdated) {\n window.location = pathname + search + hash\n return\n }\n\n // Start a timer to wait for a second before transitioning and showing a\n // loader in case resources aren't around yet.\n const timeoutId = setTimeout(() => {\n emitter.emit(`onDelayedLoadPageResources`, { pathname })\n apiRunner(`onRouteUpdateDelayed`, {\n location: window.location,\n })\n }, 1000)\n\n loader.loadPage(pathname).then(pageResources => {\n // If no page resources, then refresh the page\n // Do this, rather than simply `window.location.reload()`, so that\n // pressing the back/forward buttons work - otherwise when pressing\n // back, the browser will just change the URL and expect JS to handle\n // the change, which won't always work since it might not be a Gatsby\n // page.\n if (!pageResources || pageResources.status === PageResourceStatus.Error) {\n window.history.replaceState({}, ``, location.href)\n window.location = pathname\n clearTimeout(timeoutId)\n return\n }\n\n // If the loaded page has a different compilation hash to the\n // window, then a rebuild has occurred on the server. Reload.\n if (process.env.NODE_ENV === `production` && pageResources) {\n if (\n pageResources.page.webpackCompilationHash !==\n window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n window.location = pathname\n }\n }\n reachNavigate(to, options)\n clearTimeout(timeoutId)\n })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n const { pathname, hash } = location\n const results = apiRunner(`shouldUpdateScroll`, {\n prevRouterProps,\n // `pathname` for backwards compatibility\n pathname,\n routerProps: { location },\n getSavedScrollPosition: args => [\n 0,\n // FIXME this is actually a big code smell, we should fix this\n // eslint-disable-next-line @babel/no-invalid-this\n this._stateStorage.read(args, args.key),\n ],\n })\n if (results.length > 0) {\n // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n // @see https://github.com/gatsbyjs/gatsby/issues/12038\n return results[results.length - 1]\n }\n\n if (prevRouterProps) {\n const {\n location: { pathname: oldPathname },\n } = prevRouterProps\n if (oldPathname === pathname) {\n // Scroll to element if it exists, if it doesn't, or no hash is provided,\n // scroll to top.\n return hash ? decodeURI(hash.slice(1)) : [0, 0]\n }\n }\n return true\n}\n\nfunction init() {\n // The \"scroll-behavior\" package expects the \"action\" to be on the location\n // object so let's copy it over.\n globalHistory.listen(args => {\n args.location.action = args.action\n })\n\n window.___push = to => navigate(to, { replace: false })\n window.___replace = to => navigate(to, { replace: true })\n window.___navigate = (to, options) => navigate(to, options)\n\n // Check for initial page-load redirect\n maybeRedirect(window.location.pathname)\n}\n\nclass RouteAnnouncer extends React.Component {\n constructor(props) {\n super(props)\n this.announcementRef = React.createRef()\n }\n\n componentDidUpdate(prevProps, nextProps) {\n requestAnimationFrame(() => {\n let pageName = `new page at ${this.props.location.pathname}`\n if (document.title) {\n pageName = document.title\n }\n const pageHeadings = document.querySelectorAll(`#gatsby-focus-wrapper h1`)\n if (pageHeadings && pageHeadings.length) {\n pageName = pageHeadings[0].textContent\n }\n const newAnnouncement = `Navigated to ${pageName}`\n if (this.announcementRef.current) {\n const oldAnnouncement = this.announcementRef.current.innerText\n if (oldAnnouncement !== newAnnouncement) {\n this.announcementRef.current.innerText = newAnnouncement\n }\n }\n })\n }\n\n render() {\n return
\n }\n}\n\nconst compareLocationProps = (prevLocation, nextLocation) => {\n if (prevLocation.href !== nextLocation.href) {\n return true\n }\n\n if (prevLocation?.state?.key !== nextLocation?.state?.key) {\n return true\n }\n\n return false\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n constructor(props) {\n super(props)\n onPreRouteUpdate(props.location, null)\n }\n\n componentDidMount() {\n onRouteUpdate(this.props.location, null)\n }\n\n shouldComponentUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onPreRouteUpdate(this.props.location, prevProps.location)\n return true\n }\n return false\n }\n\n componentDidUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onRouteUpdate(this.props.location, prevProps.location)\n }\n }\n\n render() {\n return (\n \n {this.props.children}\n \n \n )\n }\n}\n\nRouteUpdates.propTypes = {\n location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates, maybeGetBrowserRedirect }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n for (var i in a) {\n if (!(i in b)) return true;\n }for (var _i in b) {\n if (a[_i] !== b[_i]) return true;\n }return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","import React from \"react\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n constructor(props) {\n super()\n const { location, pageResources } = props\n this.state = {\n location: { ...location },\n pageResources:\n pageResources ||\n loader.loadPageSync(location.pathname, { withErrorDetails: true }),\n }\n }\n\n static getDerivedStateFromProps({ location }, prevState) {\n if (prevState.location.href !== location.href) {\n const pageResources = loader.loadPageSync(location.pathname, {\n withErrorDetails: true,\n })\n\n return {\n pageResources,\n location: { ...location },\n }\n }\n\n return {\n location: { ...location },\n }\n }\n\n loadResources(rawPath) {\n loader.loadPage(rawPath).then(pageResources => {\n if (pageResources && pageResources.status !== PageResourceStatus.Error) {\n this.setState({\n location: { ...window.location },\n pageResources,\n })\n } else {\n window.history.replaceState({}, ``, location.href)\n window.location = rawPath\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // Always return false if we're missing resources.\n if (!nextState.pageResources) {\n this.loadResources(nextProps.location.pathname)\n return false\n }\n\n if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\n this.loadResources(nextProps.location.pathname)\n return false\n }\n\n // Check if the component or json have changed.\n if (this.state.pageResources !== nextState.pageResources) {\n return true\n }\n if (\n this.state.pageResources.component !== nextState.pageResources.component\n ) {\n return true\n }\n\n if (this.state.pageResources.json !== nextState.pageResources.json) {\n return true\n }\n // Check if location has changed on a page using internal routing\n // via matchPath configuration.\n if (\n this.state.location.key !== nextState.location.key &&\n nextState.pageResources.page &&\n (nextState.pageResources.page.matchPath ||\n nextState.pageResources.page.path)\n ) {\n return true\n }\n return shallowCompare(this, nextProps, nextState)\n }\n\n render() {\n if (\n process.env.NODE_ENV !== `production` &&\n (!this.state.pageResources ||\n this.state.pageResources.status === PageResourceStatus.Error)\n ) {\n const message = `EnsureResources was not able to find resources for path: \"${this.props.location.pathname}\"\nThis typically means that an issue occurred building components for that path.\nRun \\`gatsby clean\\` to remove any cached elements.`\n if (this.state.pageResources?.error) {\n console.error(message)\n throw this.state.pageResources.error\n }\n\n throw new Error(message)\n }\n\n return this.props.children(this.state)\n }\n}\n\nexport default EnsureResources\n","import { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Router, navigate, Location, BaseContext } from \"@gatsbyjs/reach-router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport { StaticQueryContext } from \"gatsby\"\nimport {\n shouldUpdateScroll,\n init as navigationInit,\n RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"$virtual/async-requires\"\nimport {\n setLoader,\n ProdLoader,\n publicLoader,\n PageResourceStatus,\n getStaticQueryResults,\n} from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"$virtual/match-paths.json\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\napiRunnerAsync(`onClientEntry`).then(() => {\n // Let plugins register a service worker. The plugin just needs\n // to return true.\n if (apiRunner(`registerServiceWorker`).filter(Boolean).length > 0) {\n require(`./register-service-worker`)\n }\n\n // In gatsby v2 if Router is used in page using matchPaths\n // paths need to contain full path.\n // For example:\n // - page have `/app/*` matchPath\n // - inside template user needs to use `/app/xyz` as path\n // Resetting `basepath`/`baseuri` keeps current behaviour\n // to not introduce breaking change.\n // Remove this in v3\n const RouteHandler = props => (\n \n \n \n )\n\n const DataContext = React.createContext({})\n\n class GatsbyRoot extends React.Component {\n render() {\n const { children } = this.props\n return (\n \n {({ location }) => (\n \n {({ pageResources, location }) => {\n const staticQueryResults = getStaticQueryResults()\n return (\n \n \n {children}\n \n \n )\n }}\n \n )}\n \n )\n }\n }\n\n class LocationHandler extends React.Component {\n render() {\n return (\n \n {({ pageResources, location }) => (\n \n \n \n \n
\n \n \n )}\n \n )\n }\n }\n\n const { pagePath, location: browserLoc } = window\n\n // Explicitly call navigate if the canonical path (window.pagePath)\n // is different to the browser path (window.location.pathname). But\n // only if NONE of the following conditions hold:\n //\n // - The url matches a client side route (page.matchPath)\n // - it's a 404 page\n // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n if (\n pagePath &&\n __BASE_PATH__ + pagePath !== browserLoc.pathname &&\n !(\n loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n pagePath === `/404.html` ||\n pagePath.match(/^\\/404\\/?$/) ||\n pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n )\n ) {\n navigate(__BASE_PATH__ + pagePath + browserLoc.search + browserLoc.hash, {\n replace: true,\n })\n }\n\n publicLoader.loadPage(browserLoc.pathname).then(page => {\n if (!page || page.status === PageResourceStatus.Error) {\n const message = `page resources for ${browserLoc.pathname} not found. Not rendering React`\n\n // if the chunk throws an error we want to capture the real error\n // This should help with https://github.com/gatsbyjs/gatsby/issues/19618\n if (page && page.error) {\n console.error(message)\n throw page.error\n }\n\n throw new Error(message)\n }\n\n window.___webpackCompilationHash = page.page.webpackCompilationHash\n\n const SiteRoot = apiRunner(\n `wrapRootElement`,\n { element: },\n ,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n const App = function App() {\n const onClientEntryRanRef = React.useRef(false)\n\n React.useEffect(() => {\n if (!onClientEntryRanRef.current) {\n onClientEntryRanRef.current = true\n performance.mark(`onInitialClientRender`)\n\n apiRunner(`onInitialClientRender`)\n }\n }, [])\n\n return {SiteRoot}\n }\n\n const renderer = apiRunner(\n `replaceHydrateFunction`,\n undefined,\n ReactDOM.hydrateRoot ? ReactDOM.hydrateRoot : ReactDOM.hydrate\n )[0]\n\n function runRender() {\n const rootElement =\n typeof window !== `undefined`\n ? document.getElementById(`___gatsby`)\n : null\n\n if (renderer === ReactDOM.hydrateRoot) {\n renderer(rootElement, )\n } else {\n renderer(, rootElement)\n }\n }\n\n // https://github.com/madrobby/zepto/blob/b5ed8d607f67724788ec9ff492be297f64d47dfc/src/zepto.js#L439-L450\n // TODO remove IE 10 support\n const doc = document\n if (\n doc.readyState === `complete` ||\n (doc.readyState !== `loading` && !doc.documentElement.doScroll)\n ) {\n setTimeout(function () {\n runRender()\n }, 0)\n } else {\n const handler = function () {\n doc.removeEventListener(`DOMContentLoaded`, handler, false)\n window.removeEventListener(`load`, handler, false)\n\n runRender()\n }\n\n doc.addEventListener(`DOMContentLoaded`, handler, false)\n window.addEventListener(`load`, handler, false)\n }\n })\n})\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport loader from \"./loader\"\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location }) => {\n const pageResources = loader.loadPageSync(location.pathname)\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","exports.polyfill = Component => Component\n","import redirects from \"./redirects.json\"\n\n// Convert to a map for faster lookup in maybeRedirect()\n\nconst redirectMap = new Map()\nconst redirectIgnoreCaseMap = new Map()\n\nredirects.forEach(redirect => {\n if (redirect.ignoreCase) {\n redirectIgnoreCaseMap.set(redirect.fromPath, redirect)\n } else {\n redirectMap.set(redirect.fromPath, redirect)\n }\n})\n\nexport function maybeGetBrowserRedirect(pathname) {\n let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\n return redirect\n}\n","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n window.location.protocol !== `https:` &&\n window.location.hostname !== `localhost`\n) {\n console.error(\n `Service workers can only be used over HTTPS, or on localhost for development`\n )\n} else if (`serviceWorker` in navigator) {\n navigator.serviceWorker\n .register(`${__BASE_PATH__}/sw.js`)\n .then(function (reg) {\n reg.addEventListener(`updatefound`, () => {\n apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n // The updatefound event implies that reg.installing is set; see\n // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n const installingWorker = reg.installing\n console.log(`installingWorker`, installingWorker)\n installingWorker.addEventListener(`statechange`, () => {\n switch (installingWorker.state) {\n case `installed`:\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and the fresh content will\n // have been added to the cache.\n\n // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n window.___swUpdated = true\n // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n // If resources failed for the current page, reload.\n if (window.___failedResources) {\n console.log(`resources failed, SW updated - reloading`)\n window.location.reload()\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a \"Content is cached for offline use.\" message.\n console.log(`Content is now available offline!`)\n\n // Post to service worker that install is complete.\n // Delay to allow time for the event listener to be added --\n // otherwise fetch is called too soon and resources aren't cached.\n apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n }\n break\n\n case `redundant`:\n console.error(`The installing service worker became redundant.`)\n apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n break\n\n case `activated`:\n apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n break\n }\n })\n })\n })\n .catch(function (e) {\n console.error(`Error during service worker registration:`, e)\n })\n}\n","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default function stripPrefix(str, prefix = ``) {\n if (!prefix) {\n return str\n }\n\n if (str === prefix) {\n return `/`\n }\n\n if (str.startsWith(`${prefix}/`)) {\n return str.slice(prefix.length)\n }\n\n return str\n}\n","export const onServiceWorkerUpdateReady = () => {\r\n const answer = window.confirm(\r\n `This application has been updated. ` +\r\n `Reload to display the latest version?`\r\n )\r\n if (answer === true) {\r\n window.location.reload();\r\n }\r\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _gatsby = require(\"gatsby\");\n\nvar _getManifestPathname = _interopRequireDefault(require(\"./get-manifest-pathname\"));\n\n/* global __MANIFEST_PLUGIN_HAS_LOCALISATION__ */\n// when we don't have localisation in our manifest, we tree shake everything away\nif (__MANIFEST_PLUGIN_HAS_LOCALISATION__) {\n exports.onRouteUpdate = function (_ref, pluginOptions) {\n var location = _ref.location;\n var localize = pluginOptions.localize;\n var manifestFilename = (0, _getManifestPathname.default)(location.pathname, localize);\n var manifestEl = document.head.querySelector(\"link[rel=\\\"manifest\\\"]\");\n\n if (manifestEl) {\n manifestEl.setAttribute(\"href\", (0, _gatsby.withPrefix)(manifestFilename));\n }\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/**\n * Get a manifest filename depending on localized pathname\n *\n * @param {string} pathname\n * @param {Array<{start_url: string, lang: string}>} localizedManifests\n * @return string\n */\nvar _default = function _default(pathname, localizedManifests) {\n var defaultFilename = \"manifest.webmanifest\";\n\n if (!Array.isArray(localizedManifests)) {\n return defaultFilename;\n }\n\n var localizedManifest = localizedManifests.find(function (app) {\n return pathname.startsWith(app.start_url);\n });\n\n if (!localizedManifest) {\n return defaultFilename;\n }\n\n return \"manifest_\" + localizedManifest.lang + \".webmanifest\";\n};\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.onRouteUpdate = void 0;\nvar first = true;\n\nfunction getDuration() {\n var start = window.start || new Date();\n var now = new Date();\n var difference = now.getTime() - start.getTime();\n\n if (difference === 0) {\n return null;\n }\n\n return difference;\n}\n\nvar onRouteUpdate = function onRouteUpdate(_ref, pluginOptions) {\n var location = _ref.location,\n prevLocation = _ref.prevLocation;\n\n if (process.env.NODE_ENV === 'production' || window.dev === true) {\n if (!window._paq) return;\n var _window = window,\n _paq = _window._paq,\n dev = _window.dev;\n var url = location && location.pathname + location.search + location.hash;\n var prevUrl = prevLocation && prevLocation.pathname + prevLocation.search + prevLocation.hash;\n var _pluginOptions$trackL = pluginOptions.trackLoad,\n trackLoad = _pluginOptions$trackL === void 0 ? true : _pluginOptions$trackL; // document.title workaround stolen from:\n // https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-google-analytics/src/gatsby-browser.js\n\n var sendPageView = function sendPageView() {\n var _document = document,\n title = _document.title;\n prevUrl && _paq.push(['setReferrerUrl', prevUrl]);\n\n _paq.push(['setCustomUrl', url]);\n\n _paq.push(['setDocumentTitle', title]);\n\n _paq.push(['trackPageView']);\n\n _paq.push(['enableLinkTracking']);\n\n _paq.push(['trackAllContentImpressions']);\n\n if (dev) {\n console.debug(\"[Matomo] Page view for: \" + url + \" - \" + title);\n }\n }; // Minimum delay for reactHelmet's requestAnimationFrame\n\n\n var delay = Math.max(32, 0);\n setTimeout(sendPageView, delay);\n\n if (first) {\n first = false;\n\n if (trackLoad) {\n _paq.push(['trackEvent', 'javascript', 'load', 'duration', getDuration()]);\n }\n\n if (dev) {\n console.debug(\"[Matomo] Tracking duration for: \" + url);\n }\n }\n }\n\n return null;\n};\n\nexports.onRouteUpdate = onRouteUpdate;","\"use strict\";\n\nexports.registerServiceWorker = function () {\n return process.env.GATSBY_IS_PREVIEW !== \"true\";\n}; // only cache relevant resources for this page\n\n\nvar whiteListLinkRels = /^(stylesheet|preload)$/;\nvar prefetchedPathnames = [];\n\nexports.onServiceWorkerActive = function (_ref) {\n var getResourceURLsForPathname = _ref.getResourceURLsForPathname,\n serviceWorker = _ref.serviceWorker;\n\n if (process.env.GATSBY_IS_PREVIEW === \"true\") {\n return;\n } // if the SW has just updated then clear the path dependencies and don't cache\n // stuff, since we're on the old revision until we navigate to another page\n\n\n if (window.___swUpdated) {\n serviceWorker.active.postMessage({\n gatsbyApi: \"clearPathResources\"\n });\n return;\n } // grab nodes from head of document\n\n\n var nodes = document.querySelectorAll(\"\\n head > script[src],\\n head > link[href],\\n head > style[data-href]\\n \"); // get all resource URLs\n\n var headerResources = [].slice.call(nodes) // don't include preconnect/prefetch/prerender resources\n .filter(function (node) {\n return node.tagName !== \"LINK\" || whiteListLinkRels.test(node.getAttribute(\"rel\"));\n }).map(function (node) {\n return node.src || node.href || node.getAttribute(\"data-href\");\n }); // Loop over prefetched pages and add their resources to an array,\n // plus specify which resources are required for those paths.\n\n var prefetchedResources = [];\n prefetchedPathnames.forEach(function (path) {\n var resources = getResourceURLsForPathname(path);\n prefetchedResources.push.apply(prefetchedResources, resources);\n serviceWorker.active.postMessage({\n gatsbyApi: \"setPathResources\",\n path: path,\n resources: resources\n });\n }); // Loop over all resources and fetch the page component + JSON data\n // to add it to the SW cache.\n\n var resources = [].concat(headerResources, prefetchedResources);\n resources.forEach(function (resource) {\n // Create a prefetch link for each resource, so Workbox runtime-caches them\n var link = document.createElement(\"link\");\n link.rel = \"prefetch\";\n link.href = resource;\n link.onload = link.remove;\n link.onerror = link.remove;\n document.head.appendChild(link);\n });\n};\n\nfunction setPathResources(path, getResourceURLsForPathname) {\n // do nothing if the SW has just updated, since we still have old pages in\n // memory which we don't want to be whitelisted\n if (window.___swUpdated) return;\n\n if (\"serviceWorker\" in navigator) {\n var _navigator = navigator,\n serviceWorker = _navigator.serviceWorker;\n\n if (serviceWorker.controller === null) {\n // if SW is not installed, we need to record any prefetches\n // that happen so we can then add them to SW cache once installed\n prefetchedPathnames.push(path);\n } else {\n var resources = getResourceURLsForPathname(path);\n serviceWorker.controller.postMessage({\n gatsbyApi: \"setPathResources\",\n path: path,\n resources: resources\n });\n }\n }\n}\n\nexports.onRouteUpdate = function (_ref2) {\n var location = _ref2.location,\n getResourceURLsForPathname = _ref2.getResourceURLsForPathname;\n var pathname = location.pathname.replace(__BASE_PATH__, \"\");\n setPathResources(pathname, getResourceURLsForPathname);\n\n if (\"serviceWorker\" in navigator && navigator.serviceWorker.controller !== null) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: \"enableOfflineShell\"\n });\n }\n};\n\nexports.onPostPrefetchPathname = function (_ref3) {\n var pathname = _ref3.pathname,\n getResourceURLsForPathname = _ref3.getResourceURLsForPathname;\n setPathResources(pathname, getResourceURLsForPathname);\n};","import md5 from 'md5'\nimport omit from 'lodash.omit'\n\nimport { BROWSER_STORE_KEY } from './constants'\n\nimport { GatsbyBrowser } from 'gatsby'\nimport { BrowserPluginOptions } from './types'\n\ndeclare global {\n interface Window {\n [BROWSER_STORE_KEY]: BrowserPluginOptionsStore\n // Used for the legacy Prismic Toolbar script.\n prismic?: {\n endpoint?: string\n }\n }\n}\n\nexport interface BrowserPluginOptionsStore {\n [key: string]: {\n pluginOptions: BrowserPluginOptions\n schemasDigest: string\n }\n}\n\nexport const onClientEntry: GatsbyBrowser['onClientEntry'] = (\n _gatsbyContext,\n pluginOptions: BrowserPluginOptions,\n) => {\n if (pluginOptions.prismicToolbar === 'legacy')\n // The legacy Prismic Toolbar script requires setting the endpoint globally\n // to window.\n window.prismic = {\n endpoint: `https://${pluginOptions.repositoryName}.cdn.prismic.io/api/v2`,\n }\n\n window[BROWSER_STORE_KEY] = Object.assign({}, window[BROWSER_STORE_KEY], {\n [pluginOptions.repositoryName]: {\n pluginOptions: omit(pluginOptions, ['schemas', 'plugins']),\n schemasDigest: md5(JSON.stringify(pluginOptions.schemas)),\n },\n })\n}\n","module.exports = require('./dist/gatsby-browser')\n","import invariant from \"invariant\"; ////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\n\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n}; ////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\n\n\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n\n var dynamicMatch = paramRe.exec(routeSegment);\n\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : invariant(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n\n return match || default_ || null;\n}; ////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\n\n\nvar match = function match(path, uri) {\n return pick([{\n path: path\n }], uri);\n}; ////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// \n// // instead of\n// \n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\n\n\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname); // ?a=b, /users?b=c => /users?a=b\n\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n } // profile, /users/789 => /users/789/profile\n\n\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n } // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n\n\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n}; ////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\n\nvar insertParams = function insertParams(path, params) {\n var _path$split = path.split(\"?\"),\n pathBase = _path$split[0],\n _path$split$ = _path$split[1],\n query = _path$split$ === undefined ? \"\" : _path$split$;\n\n var segments = segmentize(pathBase);\n var constructedPath = \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n var _params$location = params.location;\n _params$location = _params$location === undefined ? {} : _params$location;\n var _params$location$sear = _params$location.search,\n search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n var searchSplit = search.split(\"?\")[1] || \"\";\n constructedPath = addQuery(constructedPath, query, searchSplit);\n return constructedPath;\n};\n\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n}; ////////////////////////////////////////////////////////////////////////////////\n// Junk\n\n\nvar paramRe = /^:(.+)/;\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\n\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\n\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\n\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return {\n route: route,\n score: score,\n index: index\n };\n};\n\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\n\nvar segmentize = function segmentize(uri) {\n return uri // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\n\nvar addQuery = function addQuery(pathname) {\n for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n query[_key - 1] = arguments[_key];\n }\n\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"];\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\n\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n}; ////////////////////////////////////////////////////////////////////////////////\n\n\nexport { startsWith, pick, match, resolve, insertParams, validateRedirect, shallowCompare };","var _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\nvar getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\n\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n\n var resolveTransition = function resolveTransition() {};\n\n return {\n get location() {\n return location;\n },\n\n get transitioning() {\n return transitioning;\n },\n\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({\n location: location,\n action: \"POP\"\n });\n };\n\n source.addEventListener(\"popstate\", popstateListener);\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, {\n key: Date.now() + \"\"\n }); // try...catch iOS Safari limits to 100 pushState calls\n\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({\n location: location,\n action: \"PUSH\"\n });\n });\n return transition;\n }\n };\n}; ////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\n\n\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n return {\n get location() {\n return stack[index];\n },\n\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n history: {\n get entries() {\n return stack;\n },\n\n get index() {\n return index;\n },\n\n get state() {\n return states[index];\n },\n\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n\n index++;\n stack.push({\n pathname: pathname,\n search: search.length ? \"?\" + search : search\n });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n\n stack[index] = {\n pathname: pathname,\n search: search\n };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n\n index = newIndex;\n }\n }\n };\n}; ////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\n\n\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate; ////////////////////////////////////////////////////////////////////////////////\n\nexport { globalHistory, navigate, createHistory, createMemorySource };","var _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\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n/* eslint-disable jsx-a11y/anchor-has-content */\n\n\nimport React, { useContext, createContext } from \"react\";\nimport invariant from \"invariant\";\nimport { polyfill } from \"react-lifecycles-compat\";\nimport { startsWith, pick, resolve, match, insertParams, validateRedirect, shallowCompare } from \"./lib/utils\";\nimport { globalHistory, navigate, createHistory, createMemorySource } from \"./lib/history\"; ////////////////////////////////////////////////////////////////////////////////\n\nvar createNamedContext = function createNamedContext(name, defaultValue) {\n var Ctx = createContext(defaultValue);\n Ctx.displayName = name;\n return Ctx;\n}; ////////////////////////////////////////////////////////////////////////////////\n// Location Context/Provider\n\n\nvar LocationContext = createNamedContext(\"Location\"); // sets up a listener if there isn't one already so apps don't need to be\n// wrapped in some top level provider\n\nvar Location = function Location(_ref) {\n var children = _ref.children;\n return React.createElement(LocationContext.Consumer, null, function (context) {\n return context ? children(context) : React.createElement(LocationProvider, null, children);\n });\n};\n\nvar LocationProvider = function (_React$Component) {\n _inherits(LocationProvider, _React$Component);\n\n function LocationProvider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, LocationProvider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n context: _this.getContext(),\n refs: {\n unlisten: null\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n LocationProvider.prototype.getContext = function getContext() {\n var _props$history = this.props.history,\n navigate = _props$history.navigate,\n location = _props$history.location;\n return {\n navigate: navigate,\n location: location\n };\n };\n\n LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) {\n if (isRedirect(error)) {\n var _navigate = this.props.history.navigate;\n\n _navigate(error.uri, {\n replace: true\n });\n } else {\n throw error;\n }\n };\n\n LocationProvider.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevState.context.location !== this.state.context.location) {\n this.props.history._onTransitionComplete();\n }\n };\n\n LocationProvider.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n var refs = this.state.refs,\n history = this.props.history;\n\n history._onTransitionComplete();\n\n refs.unlisten = history.listen(function () {\n Promise.resolve().then(function () {\n // TODO: replace rAF with react deferred update API when it's ready https://github.com/facebook/react/issues/13306\n requestAnimationFrame(function () {\n if (!_this2.unmounted) {\n _this2.setState(function () {\n return {\n context: _this2.getContext()\n };\n });\n }\n });\n });\n });\n };\n\n LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n var refs = this.state.refs;\n this.unmounted = true;\n refs.unlisten();\n };\n\n LocationProvider.prototype.render = function render() {\n var context = this.state.context,\n children = this.props.children;\n return React.createElement(LocationContext.Provider, {\n value: context\n }, typeof children === \"function\" ? children(context) : children || null);\n };\n\n return LocationProvider;\n}(React.Component); ////////////////////////////////////////////////////////////////////////////////\n\n\nLocationProvider.defaultProps = {\n history: globalHistory\n};\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\n\nvar ServerLocation = function ServerLocation(_ref2) {\n var url = _ref2.url,\n children = _ref2.children;\n var searchIndex = url.indexOf(\"?\");\n var searchExists = searchIndex > -1;\n var pathname = void 0;\n var search = \"\";\n var hash = \"\";\n\n if (searchExists) {\n pathname = url.substring(0, searchIndex);\n search = url.substring(searchIndex);\n } else {\n pathname = url;\n }\n\n return React.createElement(LocationContext.Provider, {\n value: {\n location: {\n pathname: pathname,\n search: search,\n hash: hash\n },\n navigate: function navigate() {\n throw new Error(\"You can't call navigate on the server.\");\n }\n }\n }, children);\n}; ////////////////////////////////////////////////////////////////////////////////\n// Sets baseuri and basepath for nested routers and links\n\n\nvar BaseContext = createNamedContext(\"Base\", {\n baseuri: \"/\",\n basepath: \"/\",\n navigate: globalHistory.navigate\n}); ////////////////////////////////////////////////////////////////////////////////\n// The main event, welcome to the show everybody.\n\nvar Router = function Router(props) {\n return React.createElement(BaseContext.Consumer, null, function (baseContext) {\n return React.createElement(Location, null, function (locationContext) {\n return React.createElement(RouterImpl, _extends({}, baseContext, locationContext, props));\n });\n });\n};\n\nvar RouterImpl = function (_React$PureComponent) {\n _inherits(RouterImpl, _React$PureComponent);\n\n function RouterImpl() {\n _classCallCheck(this, RouterImpl);\n\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n\n RouterImpl.prototype.render = function render() {\n var _props = this.props,\n location = _props.location,\n _navigate2 = _props.navigate,\n basepath = _props.basepath,\n primary = _props.primary,\n children = _props.children,\n baseuri = _props.baseuri,\n _props$component = _props.component,\n component = _props$component === undefined ? \"div\" : _props$component,\n domProps = _objectWithoutProperties(_props, [\"location\", \"navigate\", \"basepath\", \"primary\", \"children\", \"baseuri\", \"component\"]);\n\n var routes = React.Children.toArray(children).reduce(function (array, child) {\n var routes = createRoute(basepath)(child);\n return array.concat(routes);\n }, []);\n var pathname = location.pathname;\n var match = pick(routes, pathname);\n\n if (match) {\n var params = match.params,\n uri = match.uri,\n route = match.route,\n element = match.route.value; // remove the /* from the end for child routes relative paths\n\n basepath = route.default ? basepath : route.path.replace(/\\*$/, \"\");\n\n var props = _extends({}, params, {\n uri: uri,\n location: location,\n navigate: function navigate(to, options) {\n return _navigate2(resolve(to, uri), options);\n }\n });\n\n var clone = React.cloneElement(element, props, element.props.children ? React.createElement(Router, {\n location: location,\n primary: primary\n }, element.props.children) : undefined); // using 'div' for < 16.3 support\n\n var FocusWrapper = primary ? FocusHandler : component; // don't pass any props to 'div'\n\n var wrapperProps = primary ? _extends({\n uri: uri,\n location: location,\n component: component\n }, domProps) : domProps;\n return React.createElement(BaseContext.Provider, {\n value: {\n baseuri: uri,\n basepath: basepath,\n navigate: props.navigate\n }\n }, React.createElement(FocusWrapper, wrapperProps, clone));\n } else {\n // Not sure if we want this, would require index routes at every level\n // warning(\n // false,\n // `\\n\\nNothing matched:\\n\\t${\n // location.pathname\n // }\\n\\nPaths checked: \\n\\t${routes\n // .map(route => route.path)\n // .join(\n // \"\\n\\t\"\n // )}\\n\\nTo get rid of this warning, add a default NotFound component as child of Router:\n // \\n\\tlet NotFound = () =>
Not Found!
\n // \\n\\t\\n\\t \\n\\t {/* ... */}\\n\\t`\n // );\n return null;\n }\n };\n\n return RouterImpl;\n}(React.PureComponent);\n\nRouterImpl.defaultProps = {\n primary: true\n};\nvar FocusContext = createNamedContext(\"Focus\");\n\nvar FocusHandler = function FocusHandler(_ref3) {\n var uri = _ref3.uri,\n location = _ref3.location,\n component = _ref3.component,\n domProps = _objectWithoutProperties(_ref3, [\"uri\", \"location\", \"component\"]);\n\n return React.createElement(FocusContext.Consumer, null, function (requestFocus) {\n return React.createElement(FocusHandlerImpl, _extends({}, domProps, {\n component: component,\n requestFocus: requestFocus,\n uri: uri,\n location: location\n }));\n });\n}; // don't focus on initial render\n\n\nvar initialRender = true;\nvar focusHandlerCount = 0;\n\nvar FocusHandlerImpl = function (_React$Component2) {\n _inherits(FocusHandlerImpl, _React$Component2);\n\n function FocusHandlerImpl() {\n var _temp2, _this4, _ret2;\n\n _classCallCheck(this, FocusHandlerImpl);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this4 = _possibleConstructorReturn(this, _React$Component2.call.apply(_React$Component2, [this].concat(args))), _this4), _this4.state = {}, _this4.requestFocus = function (node) {\n if (!_this4.state.shouldFocus && node) {\n node.focus();\n }\n }, _temp2), _possibleConstructorReturn(_this4, _ret2);\n }\n\n FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n var initial = prevState.uri == null;\n\n if (initial) {\n return _extends({\n shouldFocus: true\n }, nextProps);\n } else {\n var myURIChanged = nextProps.uri !== prevState.uri;\n var navigatedUpToMe = prevState.location.pathname !== nextProps.location.pathname && nextProps.location.pathname === nextProps.uri;\n return _extends({\n shouldFocus: myURIChanged || navigatedUpToMe\n }, nextProps);\n }\n };\n\n FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() {\n focusHandlerCount++;\n this.focus();\n };\n\n FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() {\n focusHandlerCount--;\n\n if (focusHandlerCount === 0) {\n initialRender = true;\n }\n };\n\n FocusHandlerImpl.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevProps.location !== this.props.location && this.state.shouldFocus) {\n this.focus();\n }\n };\n\n FocusHandlerImpl.prototype.focus = function focus() {\n if (process.env.NODE_ENV === \"test\") {\n // getting cannot read property focus of null in the tests\n // and that bit of global `initialRender` state causes problems\n // should probably figure it out!\n return;\n }\n\n var requestFocus = this.props.requestFocus;\n\n if (requestFocus) {\n requestFocus(this.node);\n } else {\n if (initialRender) {\n initialRender = false;\n } else if (this.node) {\n // React polyfills [autofocus] and it fires earlier than cDM,\n // so we were stealing focus away, this line prevents that.\n if (!this.node.contains(document.activeElement)) {\n this.node.focus();\n }\n }\n }\n };\n\n FocusHandlerImpl.prototype.render = function render() {\n var _this5 = this;\n\n var _props2 = this.props,\n children = _props2.children,\n style = _props2.style,\n requestFocus = _props2.requestFocus,\n _props2$component = _props2.component,\n Comp = _props2$component === undefined ? \"div\" : _props2$component,\n uri = _props2.uri,\n location = _props2.location,\n domProps = _objectWithoutProperties(_props2, [\"children\", \"style\", \"requestFocus\", \"component\", \"uri\", \"location\"]);\n\n return React.createElement(Comp, _extends({\n style: _extends({\n outline: \"none\"\n }, style),\n tabIndex: \"-1\",\n ref: function ref(n) {\n return _this5.node = n;\n }\n }, domProps), React.createElement(FocusContext.Provider, {\n value: this.requestFocus\n }, this.props.children));\n };\n\n return FocusHandlerImpl;\n}(React.Component);\n\npolyfill(FocusHandlerImpl);\n\nvar k = function k() {}; ////////////////////////////////////////////////////////////////////////////////\n\n\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n forwardRef = function forwardRef(C) {\n return C;\n };\n}\n\nvar Link = forwardRef(function (_ref4, ref) {\n var innerRef = _ref4.innerRef,\n props = _objectWithoutProperties(_ref4, [\"innerRef\"]);\n\n return React.createElement(BaseContext.Consumer, null, function (_ref5) {\n var basepath = _ref5.basepath,\n baseuri = _ref5.baseuri;\n return React.createElement(Location, null, function (_ref6) {\n var location = _ref6.location,\n navigate = _ref6.navigate;\n\n var to = props.to,\n state = props.state,\n replace = props.replace,\n _props$getProps = props.getProps,\n getProps = _props$getProps === undefined ? k : _props$getProps,\n anchorProps = _objectWithoutProperties(props, [\"to\", \"state\", \"replace\", \"getProps\"]);\n\n var href = resolve(to, baseuri);\n var encodedHref = encodeURI(href);\n var isCurrent = location.pathname === encodedHref;\n var isPartiallyCurrent = startsWith(location.pathname, encodedHref);\n return React.createElement(\"a\", _extends({\n ref: ref || innerRef,\n \"aria-current\": isCurrent ? \"page\" : undefined\n }, anchorProps, getProps({\n isCurrent: isCurrent,\n isPartiallyCurrent: isPartiallyCurrent,\n href: href,\n location: location\n }), {\n href: href,\n onClick: function onClick(event) {\n if (anchorProps.onClick) anchorProps.onClick(event);\n\n if (shouldNavigate(event)) {\n event.preventDefault();\n var shouldReplace = replace;\n\n if (typeof replace !== \"boolean\" && isCurrent) {\n var _location$state = _extends({}, location.state),\n key = _location$state.key,\n restState = _objectWithoutProperties(_location$state, [\"key\"]);\n\n shouldReplace = shallowCompare(_extends({}, state), restState);\n }\n\n navigate(href, {\n state: state,\n replace: shouldReplace\n });\n }\n }\n }));\n });\n });\n});\nLink.displayName = \"Link\";\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0; ////////////////////////////////////////////////////////////////////////////////\n\nfunction RedirectRequest(uri) {\n this.uri = uri;\n}\n\nvar isRedirect = function isRedirect(o) {\n return o instanceof RedirectRequest;\n};\n\nvar redirectTo = function redirectTo(to) {\n throw new RedirectRequest(to);\n};\n\nvar RedirectImpl = function (_React$Component3) {\n _inherits(RedirectImpl, _React$Component3);\n\n function RedirectImpl() {\n _classCallCheck(this, RedirectImpl);\n\n return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));\n } // Support React < 16 with this hook\n\n\n RedirectImpl.prototype.componentDidMount = function componentDidMount() {\n var _props3 = this.props,\n navigate = _props3.navigate,\n to = _props3.to,\n from = _props3.from,\n _props3$replace = _props3.replace,\n replace = _props3$replace === undefined ? true : _props3$replace,\n state = _props3.state,\n noThrow = _props3.noThrow,\n baseuri = _props3.baseuri,\n props = _objectWithoutProperties(_props3, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n Promise.resolve().then(function () {\n var resolvedTo = resolve(to, baseuri);\n navigate(insertParams(resolvedTo, props), {\n replace: replace,\n state: state\n });\n });\n };\n\n RedirectImpl.prototype.render = function render() {\n var _props4 = this.props,\n navigate = _props4.navigate,\n to = _props4.to,\n from = _props4.from,\n replace = _props4.replace,\n state = _props4.state,\n noThrow = _props4.noThrow,\n baseuri = _props4.baseuri,\n props = _objectWithoutProperties(_props4, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n var resolvedTo = resolve(to, baseuri);\n if (!noThrow) redirectTo(insertParams(resolvedTo, props));\n return null;\n };\n\n return RedirectImpl;\n}(React.Component);\n\nvar Redirect = function Redirect(props) {\n return React.createElement(BaseContext.Consumer, null, function (_ref7) {\n var baseuri = _ref7.baseuri;\n return React.createElement(Location, null, function (locationContext) {\n return React.createElement(RedirectImpl, _extends({}, locationContext, {\n baseuri: baseuri\n }, props));\n });\n });\n};\n\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0; ////////////////////////////////////////////////////////////////////////////////\n\nvar Match = function Match(_ref8) {\n var path = _ref8.path,\n children = _ref8.children;\n return React.createElement(BaseContext.Consumer, null, function (_ref9) {\n var baseuri = _ref9.baseuri;\n return React.createElement(Location, null, function (_ref10) {\n var navigate = _ref10.navigate,\n location = _ref10.location;\n var resolvedPath = resolve(path, baseuri);\n var result = match(resolvedPath, location.pathname);\n return children({\n navigate: navigate,\n location: location,\n match: result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null\n });\n });\n });\n}; ////////////////////////////////////////////////////////////////////////////////\n// Hooks\n\n\nvar useLocation = function useLocation() {\n var context = useContext(LocationContext);\n\n if (!context) {\n throw new Error(\"useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n return context.location;\n};\n\nvar useNavigate = function useNavigate() {\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useNavigate hook was used but a BaseContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n return context.navigate;\n};\n\nvar useParams = function useParams() {\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n var location = useLocation();\n var results = match(context.basepath, location.pathname);\n return results ? results.params : null;\n};\n\nvar useMatch = function useMatch(path) {\n if (!path) {\n throw new Error(\"useMatch(path: string) requires an argument of a string to match against\");\n }\n\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n var location = useLocation();\n var resolvedPath = resolve(path, context.baseuri);\n var result = match(resolvedPath, location.pathname);\n return result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null;\n}; ////////////////////////////////////////////////////////////////////////////////\n// Junk\n\n\nvar stripSlashes = function stripSlashes(str) {\n return str.replace(/(^\\/+|\\/+$)/g, \"\");\n};\n\nvar createRoute = function createRoute(basepath) {\n return function (element) {\n if (!element) {\n return null;\n }\n\n if (element.type === React.Fragment && element.props.children) {\n return React.Children.map(element.props.children, createRoute(basepath));\n }\n\n !(element.props.path || element.props.default || element.type === Redirect) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \": Children of must have a `path` or `default` prop, or be a ``. None found on element type `\" + element.type + \"`\") : invariant(false) : void 0;\n !!(element.type === Redirect && (!element.props.from || !element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" requires both \\\"from\\\" and \\\"to\\\" props when inside a .\") : invariant(false) : void 0;\n !!(element.type === Redirect && !validateRedirect(element.props.from, element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.\") : invariant(false) : void 0;\n\n if (element.props.default) {\n return {\n value: element,\n default: true\n };\n }\n\n var elementPath = element.type === Redirect ? element.props.from : element.props.path;\n var path = elementPath === \"/\" ? basepath : stripSlashes(basepath) + \"/\" + stripSlashes(elementPath);\n return {\n value: element,\n default: element.props.default,\n path: element.props.children ? stripSlashes(path) + \"/*\" : path\n };\n };\n};\n\nvar shouldNavigate = function shouldNavigate(event) {\n return !event.defaultPrevented && event.button === 0 && !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}; ////////////////////////////////////////////////////////////////////////\n\n\nexport { Link, Location, LocationProvider, Match, Redirect, Router, ServerLocation, createHistory, createMemorySource, isRedirect, navigate, redirectTo, globalHistory, match as matchPath, useLocation, useNavigate, useParams, useMatch , BaseContext };","/**\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\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n"],"sourceRoot":""}