text: module.exports =
  /******/ (function(modules) { // webpackBootstrap
  /******/ 	// The module cache
  /******/ 	var installedModules = require('../../../ssr-module-cache.js');
  /******/
  /******/ 	// The require function
  /******/ 	function __webpack_require__(moduleId) {
  /******/
  /******/ 		// Check if module is in cache
  /******/ 		if(installedModules[moduleId]) {
  /******/ 			return installedModules[moduleId].exports;
  /******/ 		}
  /******/ 		// Create a new module (and put it into the cache)
  /******/ 		var module = installedModules[moduleId] = {
  /******/ 			i: moduleId,
  /******/ 			l: false,
  /******/ 			exports: {}
  /******/ 		};
  /******/
  /******/ 		// Execute the module function
  /******/ 		var threw = true;
  /******/ 		try {
  /******/ 			modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  /******/ 			threw = false;
  /******/ 		} finally {
  /******/ 			if(threw) delete installedModules[moduleId];
  /******/ 		}
  /******/
  /******/ 		// Flag the module as loaded
  /******/ 		module.l = true;
  /******/
  /******/ 		// Return the exports of the module
  /******/ 		return module.exports;
  /******/ 	}
  /******/
  /******/
  /******/ 	// expose the modules object (__webpack_modules__)
  /******/ 	__webpack_require__.m = modules;
  /******/
  /******/ 	// expose the module cache
  /******/ 	__webpack_require__.c = installedModules;
  /******/
  /******/ 	// define getter function for harmony exports
  /******/ 	__webpack_require__.d = function(exports, name, getter) {
  /******/ 		if(!__webpack_require__.o(exports, name)) {
  /******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
  /******/ 		}
  /******/ 	};
  /******/
  /******/ 	// define __esModule on exports
  /******/ 	__webpack_require__.r = function(exports) {
  /******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
  /******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
  /******/ 		}
  /******/ 		Object.defineProperty(exports, '__esModule', { value: true });
  /******/ 	};
  /******/
  /******/ 	// create a fake namespace object
  /******/ 	// mode & 1: value is a module id, require it
  /******/ 	// mode & 2: merge all properties of value into the ns
  /******/ 	// mode & 4: return value when already ns object
  /******/ 	// mode & 8|1: behave like require
  /******/ 	__webpack_require__.t = function(value, mode) {
  /******/ 		if(mode & 1) value = __webpack_require__(value);
  /******/ 		if(mode & 8) return value;
  /******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
  /******/ 		var ns = Object.create(null);
  /******/ 		__webpack_require__.r(ns);
  /******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
  /******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
  /******/ 		return ns;
  /******/ 	};
  /******/
  /******/ 	// getDefaultExport function for compatibility with non-harmony modules
  /******/ 	__webpack_require__.n = function(module) {
  /******/ 		var getter = module && module.__esModule ?
  /******/ 			function getDefault() { return module['default']; } :
  /******/ 			function getModuleExports() { return module; };
  /******/ 		__webpack_require__.d(getter, 'a', getter);
  /******/ 		return getter;
  /******/ 	};
  /******/
  /******/ 	// Object.prototype.hasOwnProperty.call
  /******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
  /******/
  /******/ 	// __webpack_public_path__
  /******/ 	__webpack_require__.p = "";
  /******/
  /******/
  /******/ 	// Load entry module and return exports
  /******/ 	return __webpack_require__(__webpack_require__.s = 0);
  /******/ })
  /************************************************************************/
  /******/ ({
  
  /***/ 0:
  /***/ (function(module, exports, __webpack_require__) {
  
  module.exports = __webpack_require__("cha2");
  
  
  /***/ }),
  
  /***/ "2MIm":
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  
  var _interopRequireDefault = __webpack_require__("lpv4");
  
  exports.__esModule = true;
  exports.default = withRouter;
  
  var _extends2 = _interopRequireDefault(__webpack_require__("uFB0"));
  
  var _react = _interopRequireDefault(__webpack_require__("cDcd"));
  
  var _propTypes = _interopRequireDefault(__webpack_require__("rf6O"));
  
  function withRouter(ComposedComponent) {
    class WithRouteWrapper extends _react.default.Component {
      constructor() {
        super(...arguments);
        this.context = void 0;
      }
  
      render() {
        return _react.default.createElement(ComposedComponent, (0, _extends2.default)({
          router: this.context.router
        }, this.props));
      }
  
    }
  
    WithRouteWrapper.displayName = void 0;
    WithRouteWrapper.getInitialProps = void 0;
    WithRouteWrapper.contextTypes = {
      router: _propTypes.default.object
    };
    WithRouteWrapper.getInitialProps = ComposedComponent.getInitialProps // This is needed to allow checking for custom getInitialProps in _app
    ;
    WithRouteWrapper.origGetInitialProps = ComposedComponent.origGetInitialProps;
  
    if (false) {}
  
    return WithRouteWrapper;
  }
  
  /***/ }),
  
  /***/ "5+dE":
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  
  var _Object$defineProperty = __webpack_require__("LcAa");
  
  _Object$defineProperty(exports, "__esModule", {
    value: true
  });
  
  function rewriteUrlForNextExport(url) {
    const [pathname, hash] = url.split('#'); // tslint:disable-next-line
  
    let [path, qs] = pathname.split('?');
    path = path.replace(/\/$/, ''); // Append a trailing slash if this path does not have an extension
  
    if (!/\.[^/]+\/?$/.test(path)) path += `/`;
    if (qs) path += '?' + qs;
    if (hash) path += '#' + hash;
    return path;
  }
  
  exports.rewriteUrlForNextExport = rewriteUrlForNextExport;
  
  /***/ }),
  
  /***/ "5Tpg":
  /***/ (function(module, exports, __webpack_require__) {
  
  var _Object$getOwnPropertyDescriptor = __webpack_require__("FIas");
  
  var _Object$defineProperty = __webpack_require__("LcAa");
  
  function _interopRequireWildcard(obj) {
    if (obj && obj.__esModule) {
      return obj;
    } else {
      var newObj = {};
  
      if (obj != null) {
        for (var key in obj) {
          if (Object.prototype.hasOwnProperty.call(obj, key)) {
            var desc = _Object$defineProperty && _Object$getOwnPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : {};
  
            if (desc.get || desc.set) {
              _Object$defineProperty(newObj, key, desc);
            } else {
              newObj[key] = obj[key];
            }
          }
        }
      }
  
      newObj["default"] = obj;
      return newObj;
    }
  }
  
  module.exports = _interopRequireWildcard;
  
  /***/ }),
  
  /***/ "7xIC":
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  
  var _interopRequireWildcard = __webpack_require__("5Tpg");
  
  var _interopRequireDefault = __webpack_require__("lpv4");
  
  exports.__esModule = true;
  exports.useRouter = useRouter;
  exports.makePublicRouterInstance = makePublicRouterInstance;
  exports.createRouter = exports.withRouter = exports.default = void 0;
  
  var _extends2 = _interopRequireDefault(__webpack_require__("uFB0"));
  
  var _defineProperty = _interopRequireDefault(__webpack_require__("LcAa"));
  
  var _react = _interopRequireDefault(__webpack_require__("cDcd"));
  
  var _router2 = _interopRequireWildcard(__webpack_require__("L9lV"));
  
  exports.Router = _router2.default;
  exports.NextRouter = _router2.NextRouter;
  
  var _routerContext = __webpack_require__("wsRY");
  
  var _withRouter = _interopRequireDefault(__webpack_require__("2MIm"));
  
  exports.withRouter = _withRouter.default;
  /* global window */
  
  const singletonRouter = {
    router: null,
    // holds the actual router instance
    readyCallbacks: [],
  
    ready(cb) {
      if (this.router) return cb();
  
      if (false) {}
    }
  
  }; // Create public properties and methods of the router in the singletonRouter
  
  const urlPropertyFields = ['pathname', 'route', 'query', 'asPath', 'components'];
  const routerEvents = ['routeChangeStart', 'beforeHistoryChange', 'routeChangeComplete', 'routeChangeError', 'hashChangeStart', 'hashChangeComplete'];
  const coreMethodFields = ['push', 'replace', 'reload', 'back', 'prefetch', 'beforePopState']; // Events is a static property on the router, the router doesn't have to be initialized to use it
  
  (0, _defineProperty.default)(singletonRouter, 'events', {
    get() {
      return _router2.default.events;
    }
  
  });
  urlPropertyFields.forEach(field => {
    // Here we need to use Object.defineProperty because, we need to return
    // the property assigned to the actual router
    // The value might get changed as we change routes and this is the
    // proper way to access it
    (0, _defineProperty.default)(singletonRouter, field, {
      get() {
        const router = getRouter();
        return router[field];
      }
  
    });
  });
  coreMethodFields.forEach(field => {
    // We don't really know the types here, so we add them later instead
    ;
  
    singletonRouter[field] = function () {
      const router = getRouter();
      return router[field](...arguments);
    };
  });
  routerEvents.forEach(event => {
    singletonRouter.ready(() => {
      _router2.default.events.on(event, function () {
        const eventField = "on" + event.charAt(0).toUpperCase() + event.substring(1);
        const _singletonRouter = singletonRouter;
  
        if (_singletonRouter[eventField]) {
          try {
            _singletonRouter[eventField](...arguments);
          } catch (err) {
            // tslint:disable-next-line:no-console
            console.error("Error when running the Router event: " + eventField); // tslint:disable-next-line:no-console
  
            console.error(err.message + "\n" + err.stack);
          }
        }
      });
    });
  });
  
  function getRouter() {
    if (!singletonRouter.router) {
      const message = 'No router instance found.\n' + 'You should only use "next/router" inside the client side of your app.\n';
      throw new Error(message);
    }
  
    return singletonRouter.router;
  } // Export the singletonRouter and this is the public API.
  
  
  var _default = singletonRouter; // Reexport the withRoute HOC
  
  exports.default = _default;
  
  function useRouter() {
    return _react.default.useContext(_routerContext.RouterContext);
  } // INTERNAL APIS
  // -------------
  // (do not use following exports inside the app)
  // Create a router and assign it as the singleton instance.
  // This is used in client side when we are initilizing the app.
  // This should **not** use inside the server.
  
  
  const createRouter = function createRouter() {
    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }
  
    singletonRouter.router = new _router2.default(...args);
    singletonRouter.readyCallbacks.forEach(cb => cb());
    singletonRouter.readyCallbacks = [];
    return singletonRouter.router;
  }; // This function is used to create the `withRouter` router instance
  
  
  exports.createRouter = createRouter;
  
  function makePublicRouterInstance(router) {
    const _router = router;
    const instance = {};
  
    for (const property of urlPropertyFields) {
      if (typeof _router[property] === 'object') {
        instance[property] = (0, _extends2.default)({}, _router[property]); // makes sure query is not stateful
  
        continue;
      }
  
      instance[property] = _router[property];
    } // Events is a static property on the router, the router doesn't have to be initialized to use it
  
  
    instance.events = _router2.default.events;
    coreMethodFields.forEach(field => {
      instance[field] = function () {
        return _router[field](...arguments);
      };
    });
    return instance;
  }
  
  /***/ }),
  
  /***/ "AJJM":
  /***/ (function(module, exports) {
  
  module.exports = require("@material-ui/core/CssBaseline");
  
  /***/ }),
  
  /***/ "FIas":
  /***/ (function(module, exports, __webpack_require__) {
  
  module.exports = __webpack_require__("Z6Kq");
  
  /***/ }),
  
  /***/ "HaU7":
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  
  var _interopRequireDefault = __webpack_require__("lpv4");
  
  exports.__esModule = true;
  exports.Container = Container;
  exports.createUrl = createUrl;
  exports.default = void 0;
  
  var _extends2 = _interopRequireDefault(__webpack_require__("uFB0"));
  
  var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("WWUj"));
  
  var _react = _interopRequireDefault(__webpack_require__("cDcd"));
  
  var _propTypes = _interopRequireDefault(__webpack_require__("rf6O"));
  
  var _utils = __webpack_require__("fvxO");
  
  exports.AppInitialProps = _utils.AppInitialProps;
  
  var _router = __webpack_require__("7xIC");
  /**
  * `App` component is used for initialize of pages. It allows for overwriting and full control of the `page` initialization.
  * This allows for keeping state between navigation, custom error handling, injecting additional data.
  */
  
  
  function appGetInitialProps(_x) {
    return _appGetInitialProps.apply(this, arguments);
  }
  
  function _appGetInitialProps() {
    _appGetInitialProps = (0, _asyncToGenerator2.default)(function* (_ref) {
      let {
        Component,
        ctx
      } = _ref;
      const pageProps = yield (0, _utils.loadGetInitialProps)(Component, ctx);
      return {
        pageProps
      };
    });
    return _appGetInitialProps.apply(this, arguments);
  }
  
  class App extends _react.default.Component {
    getChildContext() {
      return {
        router: (0, _router.makePublicRouterInstance)(this.props.router)
      };
    } // Kept here for backwards compatibility.
    // When someone ended App they could call `super.componentDidCatch`.
    // @deprecated This method is no longer needed. Errors are caught at the top level
  
  
    componentDidCatch(error, _errorInfo) {
      throw error;
    }
  
    render() {
      const {
        router,
        Component,
        pageProps
      } = this.props;
      const url = createUrl(router);
      return _react.default.createElement(Component, (0, _extends2.default)({}, pageProps, {
        url: url
      }));
    }
  
  }
  
  exports.default = App;
  App.childContextTypes = {
    router: _propTypes.default.object
  };
  App.origGetInitialProps = appGetInitialProps;
  App.getInitialProps = appGetInitialProps;
  let warnContainer;
  let warnUrl;
  
  if (false) {} // @deprecated noop for now until removal
  
  
  function Container(p) {
    if (false) {}
    return p.children;
  }
  
  function createUrl(router) {
    // This is to make sure we don't references the router object at call time
    const {
      pathname,
      asPath,
      query
    } = router;
    return {
      get query() {
        if (false) {}
        return query;
      },
  
      get pathname() {
        if (false) {}
        return pathname;
      },
  
      get asPath() {
        if (false) {}
        return asPath;
      },
  
      back: () => {
        if (false) {}
        router.back();
      },
      push: (url, as) => {
        if (false) {}
        return router.push(url, as);
      },
      pushTo: (href, as) => {
        if (false) {}
        const pushRoute = as ? href : '';
        const pushUrl = as || href;
        return router.push(pushRoute, pushUrl);
      },
      replace: (url, as) => {
        if (false) {}
        return router.replace(url, as);
      },
      replaceTo: (href, as) => {
        if (false) {}
        const replaceRoute = as ? href : '';
        const replaceUrl = as || href;
        return router.replace(replaceRoute, replaceUrl);
      }
    };
  }
  
  /***/ }),
  
  /***/ "Khd+":
  /***/ (function(module, exports, __webpack_require__) {
  
  module.exports = __webpack_require__("HaU7")
  
  
  /***/ }),
  
  /***/ "L9lV":
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  
  var _Promise = __webpack_require__("Ml6p");
  
  var _Object$assign = __webpack_require__("OCF2");
  
  var _Object$defineProperty = __webpack_require__("LcAa");
  
  var __importDefault = this && this.__importDefault || function (mod) {
    return mod && mod.__esModule ? mod : {
      "default": mod
    };
  };
  
  _Object$defineProperty(exports, "__esModule", {
    value: true
  });
  
  const url_1 = __webpack_require__("bzos");
  
  const mitt_1 = __importDefault(__webpack_require__("YBsB"));
  
  const utils_1 = __webpack_require__("fvxO");
  
  const rewrite_url_for_export_1 = __webpack_require__("5+dE");
  
  const route_matcher_1 = __webpack_require__("TBBy");
  
  const route_regex_1 = __webpack_require__("uChv");
  
  const is_dynamic_1 = __webpack_require__("Lko9");
  
  function toRoute(path) {
    return path.replace(/\/$/, '') || '/';
  }
  
  class Router {
    constructor(pathname, query, as, {
      initialProps,
      pageLoader,
      App,
      wrapApp,
      Component,
      err,
      subscription
    }) {
      this.onPopState = e => {
        if (!e.state) {
          // We get state as undefined for two reasons.
          //  1. With older safari (< 8) and older chrome (< 34)
          //  2. When the URL changed with #
          //
          // In the both cases, we don't need to proceed and change the route.
          // (as it's already changed)
          // But we can simply replace the state with the new changes.
          // Actually, for (1) we don't need to nothing. But it's hard to detect that event.
          // So, doing the following for (1) does no harm.
          const {
            pathname,
            query
          } = this;
          this.changeState('replaceState', utils_1.formatWithValidation({
            pathname,
            query
          }), utils_1.getURL());
          return;
        } // Make sure we don't re-render on initial load,
        // can be caused by navigating back from an external site
  
  
        if (e.state.options && e.state.options.fromExternal) {
          return;
        } // If the downstream application returns falsy, return.
        // They will then be responsible for handling the event.
  
  
        if (this._bps && !this._bps(e.state)) {
          return;
        }
  
        const {
          url,
          as,
          options
        } = e.state;
  
        if (false) {}
  
        this.replace(url, as, options);
      }; // represents the current component key
  
  
      this.route = toRoute(pathname); // set up the component cache (by route keys)
  
      this.components = {}; // We should not keep the cache, if there's an error
      // Otherwise, this cause issues when when going back and
      // come again to the errored page.
  
      if (pathname !== '/_error') {
        this.components[this.route] = {
          Component,
          props: initialProps,
          err
        };
      }
  
      this.components['/_app'] = {
        Component: App
      }; // Backwards compat for Router.router.events
      // TODO: Should be remove the following major version as it was never documented
      // @ts-ignore backwards compatibility
  
      this.events = Router.events;
      this.pageLoader = pageLoader;
      this.pathname = pathname;
      this.query = query; // if auto prerendered and dynamic route wait to update asPath
      // until after mount to prevent hydration mismatch
  
      this.asPath = // @ts-ignore this is temporarily global (attached to window)
      is_dynamic_1.isDynamicRoute(pathname) && __NEXT_DATA__.nextExport ? pathname : as;
      this.sub = subscription;
      this.clc = null;
      this._wrapApp = wrapApp;
  
      if (false) {}
    } // @deprecated backwards compatibility even though it's a private method.
  
  
    static _rewriteUrlForNextExport(url) {
      return rewrite_url_for_export_1.rewriteUrlForNextExport(url);
    }
  
    update(route, mod) {
      const Component = mod.default || mod;
      const data = this.components[route];
  
      if (!data) {
        throw new Error(`Cannot update unavailable route: ${route}`);
      }
  
      const newData = _Object$assign({}, data, {
        Component
      });
  
      this.components[route] = newData; // pages/_app.js updated
  
      if (route === '/_app') {
        this.notify(this.components[this.route]);
        return;
      }
  
      if (route === this.route) {
        this.notify(newData);
      }
    }
  
    reload() {
      window.location.reload();
    }
    /**
     * Go back in history
     */
  
  
    back() {
      window.history.back();
    }
    /**
     * Performs a `pushState` with arguments
     * @param url of the route
     * @param as masks `url` for the browser
     * @param options object you can define `shallow` and other options
     */
  
  
    push(url, as = url, options = {}) {
      return this.change('pushState', url, as, options);
    }
    /**
     * Performs a `replaceState` with arguments
     * @param url of the route
     * @param as masks `url` for the browser
     * @param options object you can define `shallow` and other options
     */
  
  
    replace(url, as = url, options = {}) {
      return this.change('replaceState', url, as, options);
    }
  
    change(method, _url, _as, options) {
      return new _Promise((resolve, reject) => {
        // marking route changes as a navigation start entry
        if (utils_1.SUPPORTS_PERFORMANCE_USER_TIMING) {
          performance.mark('routeChange');
        } // If url and as provided as an object representation,
        // we'll format them into the string version here.
  
  
        const url = typeof _url === 'object' ? utils_1.formatWithValidation(_url) : _url;
        let as = typeof _as === 'object' ? utils_1.formatWithValidation(_as) : _as; // Add the ending slash to the paths. So, we can serve the
        // "<page>/index.html" directly for the SSR page.
  
        if (false) {}
  
        this.abortComponentLoad(as); // If the url change is only related to a hash change
        // We should not proceed. We should only change the state.
        // WARNING: `_h` is an internal option for handing Next.js client-side
        // hydration. Your app should _never_ use this property. It may change at
        // any time without notice.
  
        if (!options._h && this.onlyAHashChange(as)) {
          this.asPath = as;
          Router.events.emit('hashChangeStart', as);
          this.changeState(method, url, as);
          this.scrollToHash(as);
          Router.events.emit('hashChangeComplete', as);
          return resolve(true);
        }
  
        const {
          pathname,
          query,
          protocol
        } = url_1.parse(url, true);
  
        if (!pathname || protocol) {
          if (false) {}
  
          return resolve(false);
        } // If asked to change the current URL we should reload the current page
        // (not location.reload() but reload getInitialProps and other Next.js stuffs)
        // We also need to set the method = replaceState always
        // as this should not go into the history (That's how browsers work)
        // We should compare the new asPath to the current asPath, not the url
  
  
        if (!this.urlIsNew(as)) {
          method = 'replaceState';
        } // @ts-ignore pathname is always a string
  
  
        const route = toRoute(pathname);
        const {
          shallow = false
        } = options;
  
        if (is_dynamic_1.isDynamicRoute(route)) {
          const {
            pathname: asPathname
          } = url_1.parse(as);
          const rr = route_regex_1.getRouteRegex(route);
          const routeMatch = route_matcher_1.getRouteMatcher(rr)(asPathname);
  
          if (!routeMatch) {
            console.error('The provided `as` value is incompatible with the `href` value. This is invalid. https://err.sh/zeit/next.js/incompatible-href-as');
            return resolve(false);
          } // Merge params into `query`, overwriting any specified in search
  
  
          _Object$assign(query, routeMatch);
        }
  
        Router.events.emit('routeChangeStart', as); // If shallow is true and the route exists in the router cache we reuse the previous result
        // @ts-ignore pathname is always a string
  
        this.getRouteInfo(route, pathname, query, as, shallow).then(routeInfo => {
          const {
            error
          } = routeInfo;
  
          if (error && error.cancelled) {
            return resolve(false);
          }
  
          Router.events.emit('beforeHistoryChange', as);
          this.changeState(method, url, as, options);
          const hash = window.location.hash.substring(1);
  
          if (false) {} // @ts-ignore pathname is always defined
  
  
          this.set(route, pathname, query, as, _Object$assign({}, routeInfo, {
            hash
          }));
  
          if (error) {
            Router.events.emit('routeChangeError', error, as);
            throw error;
          }
  
          Router.events.emit('routeChangeComplete', as);
          return resolve(true);
        }, reject);
      });
    }
  
    changeState(method, url, as, options = {}) {
      if (false) {}
  
      if (method !== 'pushState' || utils_1.getURL() !== as) {
        // @ts-ignore method should always exist on history
        window.history[method]({
          url,
          as,
          options
        }, null, as);
      }
    }
  
    getRouteInfo(route, pathname, query, as, shallow = false) {
      const cachedRouteInfo = this.components[route]; // If there is a shallow route transition possible
      // If the route is already rendered on the screen.
  
      if (shallow && cachedRouteInfo && this.route === route) {
        return _Promise.resolve(cachedRouteInfo);
      }
  
      return new _Promise((resolve, reject) => {
        if (cachedRouteInfo) {
          return resolve(cachedRouteInfo);
        }
  
        this.fetchComponent(route).then(Component => resolve({
          Component
        }), reject);
      }).then(routeInfo => {
        const {
          Component
        } = routeInfo;
  
        if (false) {}
  
        return new _Promise((resolve, reject) => {
          // we provide AppTree later so this needs to be `any`
          this.getInitialProps(Component, {
            pathname,
            query,
            asPath: as
          }).then(props => {
            routeInfo.props = props;
            this.components[route] = routeInfo;
            resolve(routeInfo);
          }, reject);
        });
      }).catch(err => {
        return new _Promise(resolve => {
          if (err.code === 'PAGE_LOAD_ERROR') {
            // If we can't load the page it could be one of following reasons
            //  1. Page doesn't exists
            //  2. Page does exist in a different zone
            //  3. Internal error while loading the page
            // So, doing a hard reload is the proper way to deal with this.
            window.location.href = as; // Changing the URL doesn't block executing the current code path.
            // So, we need to mark it as a cancelled error and stop the routing logic.
  
            err.cancelled = true; // @ts-ignore TODO: fix the control flow here
  
            return resolve({
              error: err
            });
          }
  
          if (err.cancelled) {
            // @ts-ignore TODO: fix the control flow here
            return resolve({
              error: err
            });
          }
  
          resolve(this.fetchComponent('/_error').then(Component => {
            const routeInfo = {
              Component,
              err
            };
            return new _Promise(resolve => {
              this.getInitialProps(Component, {
                err,
                pathname,
                query
              }).then(props => {
                routeInfo.props = props;
                routeInfo.error = err;
                resolve(routeInfo);
              }, gipErr => {
                console.error('Error in error page `getInitialProps`: ', gipErr);
                routeInfo.error = err;
                routeInfo.props = {};
                resolve(routeInfo);
              });
            });
          }));
        });
      });
    }
  
    set(route, pathname, query, as, data) {
      this.route = route;
      this.pathname = pathname;
      this.query = query;
      this.asPath = as;
      this.notify(data);
    }
    /**
     * Callback to execute before replacing router state
     * @param cb callback to be executed
     */
  
  
    beforePopState(cb) {
      this._bps = cb;
    }
  
    onlyAHashChange(as) {
      if (!this.asPath) return false;
      const [oldUrlNoHash, oldHash] = this.asPath.split('#');
      const [newUrlNoHash, newHash] = as.split('#'); // Makes sure we scroll to the provided hash if the url/hash are the same
  
      if (newHash && oldUrlNoHash === newUrlNoHash && oldHash === newHash) {
        return true;
      } // If the urls are change, there's more than a hash change
  
  
      if (oldUrlNoHash !== newUrlNoHash) {
        return false;
      } // If the hash has changed, then it's a hash only change.
      // This check is necessary to handle both the enter and
      // leave hash === '' cases. The identity case falls through
      // and is treated as a next reload.
  
  
      return oldHash !== newHash;
    }
  
    scrollToHash(as) {
      const [, hash] = as.split('#'); // Scroll to top if the hash is just `#` with no value
  
      if (hash === '') {
        window.scrollTo(0, 0);
        return;
      } // First we check if the element by id is found
  
  
      const idEl = document.getElementById(hash);
  
      if (idEl) {
        idEl.scrollIntoView();
        return;
      } // If there's no element with the id, we check the `name` property
      // To mirror browsers
  
  
      const nameEl = document.getElementsByName(hash)[0];
  
      if (nameEl) {
        nameEl.scrollIntoView();
      }
    }
  
    urlIsNew(asPath) {
      return this.asPath !== asPath;
    }
    /**
     * Prefetch `page` code, you may wait for the data during `page` rendering.
     * This feature only works in production!
     * @param url of prefetched `page`
     */
  
  
    prefetch(url) {
      return new _Promise((resolve, reject) => {
        const {
          pathname,
          protocol
        } = url_1.parse(url);
  
        if (!pathname || protocol) {
          if (false) {}
  
          return;
        } // Prefetch is not supported in development mode because it would trigger on-demand-entries
  
  
        if (false) {} // @ts-ignore pathname is always defined
  
        const route = toRoute(pathname);
        this.pageLoader.prefetch(route).then(resolve, reject);
      });
    }
  
    async fetchComponent(route) {
      let cancelled = false;
  
      const cancel = this.clc = () => {
        cancelled = true;
      };
  
      const Component = await this.pageLoader.loadPage(route);
  
      if (cancelled) {
        const error = new Error(`Abort fetching component for route: "${route}"`);
        error.cancelled = true;
        throw error;
      }
  
      if (cancel === this.clc) {
        this.clc = null;
      }
  
      return Component;
    }
  
    async getInitialProps(Component, ctx) {
      let cancelled = false;
  
      const cancel = () => {
        cancelled = true;
      };
  
      this.clc = cancel;
      const {
        Component: App
      } = this.components['/_app'];
      let props;
  
      if ( // @ts-ignore workaround for dead-code elimination
      (self.__HAS_SPR || "production" !== 'production') && Component.__NEXT_SPR) {
        let status;
        const {
          pathname
        } = url_1.parse(ctx.asPath || ctx.pathname);
        props = await fetch(`/_next/data${pathname}.json`).then(res => {
          if (!res.ok) {
            status = res.status;
            throw new Error('failed to load prerender data');
          }
  
          return res.json();
        }).catch(err => {
          console.error(`Failed to load data`, status, err);
          window.location.href = pathname;
          return new _Promise(() => {});
        });
      } else {
        const AppTree = this._wrapApp(App);
  
        ctx.AppTree = AppTree;
        props = await utils_1.loadGetInitialProps(App, {
          AppTree,
          Component,
          router: this,
          ctx
        });
      }
  
      if (cancel === this.clc) {
        this.clc = null;
      }
  
      if (cancelled) {
        const err = new Error('Loading initial props cancelled');
        err.cancelled = true;
        throw err;
      }
  
      return props;
    }
  
    abortComponentLoad(as) {
      if (this.clc) {
        const e = new Error('Route Cancelled');
        e.cancelled = true;
        Router.events.emit('routeChangeError', e, as);
        this.clc();
        this.clc = null;
      }
    }
  
    notify(data) {
      this.sub(data, this.components['/_app'].Component);
    }
  
  }
  
  Router.events = mitt_1.default();
  exports.default = Router;
  
  /***/ }),
  
  /***/ "LcAa":
  /***/ (function(module, exports, __webpack_require__) {
  
  module.exports = __webpack_require__("TUA0");
  
  /***/ }),
  
  /***/ "Lko9":
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  
  var _Object$defineProperty = __webpack_require__("LcAa");
  
  _Object$defineProperty(exports, "__esModule", {
    value: true
  }); // Identify /[param]/ in route string
  
  
  const TEST_ROUTE = /\/\[[^\/]+?\](?=\/|$)/;
  
  function isDynamicRoute(route) {
    return TEST_ROUTE.test(route);
  }
  
  exports.isDynamicRoute = isDynamicRoute;
  
  /***/ }),
  
  /***/ "Ml6p":
  /***/ (function(module, exports, __webpack_require__) {
  
  module.exports = __webpack_require__("aC71");
  
  /***/ }),
  
  /***/ "OCF2":
  /***/ (function(module, exports, __webpack_require__) {
  
  module.exports = __webpack_require__("dGr4");
  
  /***/ }),
  
  /***/ "TBBy":
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  
  var _Object$keys = __webpack_require__("TPw6");
  
  var _Object$defineProperty = __webpack_require__("LcAa");
  
  _Object$defineProperty(exports, "__esModule", {
    value: true
  });
  
  function getRouteMatcher(routeRegex) {
    const {
      re,
      groups
    } = routeRegex;
    return pathname => {
      const routeMatch = re.exec(pathname);
  
      if (!routeMatch) {
        return false;
      }
  
      const params = {};
  
      _Object$keys(groups).forEach(slugName => {
        const m = routeMatch[groups[slugName]];
  
        if (m !== undefined) {
          params[slugName] = decodeURIComponent(m);
        }
      });
  
      return params;
    };
  }
  
  exports.getRouteMatcher = getRouteMatcher;
  
  /***/ }),
  
  /***/ "TPw6":
  /***/ (function(module, exports, __webpack_require__) {
  
  module.exports = __webpack_require__("qJj/");
  
  /***/ }),
  
  /***/ "TUA0":
  /***/ (function(module, exports) {
  
  module.exports = require("core-js/library/fn/object/define-property");
  
  /***/ }),
  
  /***/ "Tqks":
  /***/ (function(module, exports, __webpack_require__) {
  
  module.exports = __webpack_require__("o5io");
  
  /***/ }),
  
  /***/ "WWUj":
  /***/ (function(module, exports, __webpack_require__) {
  
  var _Promise = __webpack_require__("Ml6p");
  
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
      var info = gen[key](arg);
      var value = info.value;
    } catch (error) {
      reject(error);
      return;
    }
  
    if (info.done) {
      resolve(value);
    } else {
      _Promise.resolve(value).then(_next, _throw);
    }
  }
  
  function _asyncToGenerator(fn) {
    return function () {
      var self = this,
          args = arguments;
      return new _Promise(function (resolve, reject) {
        var gen = fn.apply(self, args);
  
        function _next(value) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
        }
  
        function _throw(err) {
          asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
        }
  
        _next(undefined);
      });
    };
  }
  
  module.exports = _asyncToGenerator;
  
  /***/ }),
  
  /***/ "YBsB":
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  /*
  MIT License
  
  Copyright (c) Jason Miller (https://jasonformat.com/)
  
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
  
  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
  
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
  
  var _Object$create = __webpack_require__("Tqks");
  
  var _Object$defineProperty = __webpack_require__("LcAa");
  
  _Object$defineProperty(exports, "__esModule", {
    value: true
  });
  
  function mitt() {
    const all = _Object$create(null);
  
    return {
      on(type, handler) {
        ;
        (all[type] || (all[type] = [])).push(handler);
      },
  
      off(type, handler) {
        if (all[type]) {
          // tslint:disable-next-line:no-bitwise
          all[type].splice(all[type].indexOf(handler) >>> 0, 1);
        }
      },
  
      emit(type, ...evts) {
        ;
        (all[type] || []).slice().map(handler => {
          handler(...evts);
        });
      }
  
    };
  }
  
  exports.default = mitt;
  
  /***/ }),
  
  /***/ "Z6Kq":
  /***/ (function(module, exports) {
  
  module.exports = require("core-js/library/fn/object/get-own-property-descriptor");
  
  /***/ }),
  
  /***/ "aC71":
  /***/ (function(module, exports) {
  
  module.exports = require("core-js/library/fn/promise");
  
  /***/ }),
  
  /***/ "bzos":
  /***/ (function(module, exports) {
  
  module.exports = require("url");
  
  /***/ }),
  
  /***/ "cDcd":
  /***/ (function(module, exports) {
  
  module.exports = require("react");
  
  /***/ }),
  
  /***/ "cha2":
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  __webpack_require__.r(__webpack_exports__);
  
  // EXTERNAL MODULE: external "react"
  var external_react_ = __webpack_require__("cDcd");
  var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
  
  // EXTERNAL MODULE: /home/lightsky/skynet-webportal/node_modules/next/app.js
  var app = __webpack_require__("Khd+");
  var app_default = /*#__PURE__*/__webpack_require__.n(app);
  
  // EXTERNAL MODULE: external "@material-ui/core/CssBaseline"
  var CssBaseline_ = __webpack_require__("AJJM");
  var CssBaseline_default = /*#__PURE__*/__webpack_require__.n(CssBaseline_);
  
  // EXTERNAL MODULE: external "theme-ui"
  var external_theme_ui_ = __webpack_require__("zqBN");
  
  // CONCATENATED MODULE: ./theme/theme.ts
  // example theme.js
  const theme = {
    fonts: {
      body: 'system-ui, sans-serif',
      heading: '"Avenir Next", sans-serif',
      monospace: 'Menlo, monospace'
    },
    colors: {
      text: '#000',
      background: '#fff',
      primary: '#33e'
    }
  };
  // CONCATENATED MODULE: ./pages/_app.tsx
  var __jsx = external_react_default.a.createElement;
  
  
  
  
  
  
  class _app_MyApp extends app_default.a {
    // Only uncomment this method if you have blocking data requirements for
    // every single page in your application. This disables the ability to
    // perform automatic static optimization, causing every page in your app to
    // be server-side rendered.
    //
    // static async getInitialProps(appContext) {
    //   // calls page's `getInitialProps` and fills `appProps.pageProps`
    //   const appProps = await App.getInitialProps(appContext);
    //
    //   return { ...appProps }
    // }
    render() {
      const {
        Component,
        pageProps
      } = this.props;
      return __jsx(external_react_default.a.Fragment, null, __jsx(external_theme_ui_["ThemeProvider"], {
        theme: theme
      }, __jsx(CssBaseline_default.a, null), __jsx(Component, pageProps)));
    }
  
  }
  
  /* harmony default export */ var _app = __webpack_exports__["default"] = (_app_MyApp);
  
  /***/ }),
  
  /***/ "dGr4":
  /***/ (function(module, exports) {
  
  module.exports = require("core-js/library/fn/object/assign");
  
  /***/ }),
  
  /***/ "fvxO":
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  
  var _Object$keys = __webpack_require__("TPw6");
  
  var _Object$defineProperty = __webpack_require__("LcAa");
  
  _Object$defineProperty(exports, "__esModule", {
    value: true
  });
  
  const url_1 = __webpack_require__("bzos");
  /**
   * Utils
   */
  
  
  function execOnce(fn) {
    let used = false;
    return (...args) => {
      if (!used) {
        used = true;
        fn.apply(this, args);
      }
    };
  }
  
  exports.execOnce = execOnce;
  
  function getLocationOrigin() {
    const {
      protocol,
      hostname,
      port
    } = window.location;
    return `${protocol}//${hostname}${port ? ':' + port : ''}`;
  }
  
  exports.getLocationOrigin = getLocationOrigin;
  
  function getURL() {
    const {
      href
    } = window.location;
    const origin = getLocationOrigin();
    return href.substring(origin.length);
  }
  
  exports.getURL = getURL;
  
  function getDisplayName(Component) {
    return typeof Component === 'string' ? Component : Component.displayName || Component.name || 'Unknown';
  }
  
  exports.getDisplayName = getDisplayName;
  
  function isResSent(res) {
    return res.finished || res.headersSent;
  }
  
  exports.isResSent = isResSent;
  
  async function loadGetInitialProps(Component, ctx) {
    if (false) {} // when called from _app `ctx` is nested in `ctx`
  
  
    const res = ctx.res || ctx.ctx && ctx.ctx.res;
  
    if (!Component.getInitialProps) {
      return {};
    }
  
    const props = await Component.getInitialProps(ctx);
  
    if (res && isResSent(res)) {
      return props;
    }
  
    if (!props) {
      const message = `"${getDisplayName(Component)}.getInitialProps()" should resolve to an object. But found "${props}" instead.`;
      throw new Error(message);
    }
  
    if (false) {}
  
    return props;
  }
  
  exports.loadGetInitialProps = loadGetInitialProps;
  exports.urlObjectKeys = ['auth', 'hash', 'host', 'hostname', 'href', 'path', 'pathname', 'port', 'protocol', 'query', 'search', 'slashes'];
  
  function formatWithValidation(url, options) {
    if (false) {}
  
    return url_1.format(url, options);
  }
  
  exports.formatWithValidation = formatWithValidation;
  exports.SUPPORTS_PERFORMANCE = typeof performance !== 'undefined';
  exports.SUPPORTS_PERFORMANCE_USER_TIMING = exports.SUPPORTS_PERFORMANCE && typeof performance.mark === 'function' && typeof performance.measure === 'function';
  
  /***/ }),
  
  /***/ "lpv4":
  /***/ (function(module, exports) {
  
  function _interopRequireDefault(obj) {
    return obj && obj.__esModule ? obj : {
      "default": obj
    };
  }
  
  module.exports = _interopRequireDefault;
  
  /***/ }),
  
  /***/ "o5io":
  /***/ (function(module, exports) {
  
  module.exports = require("core-js/library/fn/object/create");
  
  /***/ }),
  
  /***/ "qJj/":
  /***/ (function(module, exports) {
  
  module.exports = require("core-js/library/fn/object/keys");
  
  /***/ }),
  
  /***/ "rf6O":
  /***/ (function(module, exports) {
  
  module.exports = require("prop-types");
  
  /***/ }),
  
  /***/ "uChv":
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  
  var _Object$defineProperty = __webpack_require__("LcAa");
  
  _Object$defineProperty(exports, "__esModule", {
    value: true
  });
  
  function getRouteRegex(normalizedRoute) {
    // Escape all characters that could be considered RegEx
    const escapedRoute = (normalizedRoute.replace(/\/$/, '') || '/').replace(/[|\\{}()[\]^$+*?.-]/g, '\\$&');
    const groups = {};
    let groupIndex = 1;
    const parameterizedRoute = escapedRoute.replace(/\/\\\[([^\/]+?)\\\](?=\/|$)/g, (_, $1) => (groups[$1 // Un-escape key
    .replace(/\\([|\\{}()[\]^$+*?.-])/g, '$1')] = groupIndex++, '/([^/]+?)'));
    return {
      re: new RegExp('^' + parameterizedRoute + '(?:/)?$', 'i'),
      groups
    };
  }
  
  exports.getRouteRegex = getRouteRegex;
  
  /***/ }),
  
  /***/ "uFB0":
  /***/ (function(module, exports, __webpack_require__) {
  
  var _Object$assign = __webpack_require__("OCF2");
  
  function _extends() {
    module.exports = _extends = _Object$assign || function (target) {
      for (var i = 1; i < arguments.length; i++) {
        var source = arguments[i];
  
        for (var key in source) {
          if (Object.prototype.hasOwnProperty.call(source, key)) {
            target[key] = source[key];
          }
        }
      }
  
      return target;
    };
  
    return _extends.apply(this, arguments);
  }
  
  module.exports = _extends;
  
  /***/ }),
  
  /***/ "wsRY":
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  
  var _Object$defineProperty = __webpack_require__("LcAa");
  
  var __importStar = this && this.__importStar || function (mod) {
    if (mod && mod.__esModule) return mod;
    var result = {};
    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
    result["default"] = mod;
    return result;
  };
  
  _Object$defineProperty(exports, "__esModule", {
    value: true
  });
  
  const React = __importStar(__webpack_require__("cDcd"));
  
  exports.RouterContext = React.createContext(null);
  
  /***/ }),
  
  /***/ "zqBN":
  /***/ (function(module, exports) {
  
  module.exports = require("theme-ui");
  
  /***/ })
  
  /******/ });