Skip to content

Commit

Permalink
Revert "Revert "support runtime: edge in api endpoints"" (#37344)
Browse files Browse the repository at this point in the history
Reverts #37337
  • Loading branch information
Schniz committed May 31, 2022
1 parent d153f0d commit db20aa6
Show file tree
Hide file tree
Showing 12 changed files with 271 additions and 35 deletions.
13 changes: 12 additions & 1 deletion packages/next/build/entries.ts
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,15 @@ export function getEdgeServerEntry(opts: {
return `next-middleware-loader?${stringify(loaderParams)}!`
}

if (opts.page.startsWith('/api/')) {
const loaderParams: MiddlewareLoaderOptions = {
absolutePagePath: opts.absolutePagePath,
page: opts.page,
}

return `next-edge-function-loader?${stringify(loaderParams)}!`
}

const loaderParams: MiddlewareSSRLoaderQuery = {
absolute500Path: opts.pages['/500'] || '',
absoluteAppPath: opts.pages['/_app'],
Expand Down Expand Up @@ -409,7 +418,9 @@ export function runDependingOnPageType<T>(params: {
if (params.page === MIDDLEWARE_FILE) {
return [params.onEdgeServer()]
} else if (params.page.match(API_ROUTE)) {
return [params.onServer()]
return params.pageRuntime === 'edge'
? [params.onEdgeServer()]
: [params.onServer()]
} else if (params.page === '/_document') {
return [params.onServer()]
} else if (
Expand Down
6 changes: 1 addition & 5 deletions packages/next/build/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,6 @@ import {
getUnresolvedModuleFromError,
copyTracedFiles,
isReservedPage,
isCustomErrorPage,
isServerComponentPage,
} from './utils'
import getBaseWebpackConfig from './webpack-config'
Expand Down Expand Up @@ -1255,10 +1254,7 @@ export default async function build(
isHybridAmp,
ssgPageRoutes,
initialRevalidateSeconds: false,
runtime:
!isReservedPage(page) && !isCustomErrorPage(page)
? pageRuntime
: undefined,
runtime: pageRuntime,
pageDuration: undefined,
ssgPageDurations: undefined,
})
Expand Down
1 change: 1 addition & 0 deletions packages/next/build/webpack-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1232,6 +1232,7 @@ export default async function getBaseWebpackConfig(
'next-flight-client-entry-loader',
'noop-loader',
'next-middleware-loader',
'next-edge-function-loader',
'next-middleware-ssr-loader',
'next-middleware-wasm-loader',
'next-app-loader',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { webpack5 } from 'next/dist/compiled/webpack/webpack'
export function getModuleBuildInfo(webpackModule: webpack5.Module) {
return webpackModule.buildInfo as {
nextEdgeMiddleware?: EdgeMiddlewareMeta
nextEdgeApiFunction?: EdgeMiddlewareMeta
nextEdgeSSR?: EdgeSSRMeta
nextUsedEnvVars?: Set<string>
nextWasmMiddlewareBinding?: WasmBinding
Expand Down
43 changes: 43 additions & 0 deletions packages/next/build/webpack/loaders/next-edge-function-loader.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import { getModuleBuildInfo } from './get-module-build-info'
import { stringifyRequest } from '../stringify-request'

export type EdgeFunctionLoaderOptions = {
absolutePagePath: string
page: string
}

export default function middlewareLoader(this: any) {
const { absolutePagePath, page }: EdgeFunctionLoaderOptions =
this.getOptions()
const stringifiedPagePath = stringifyRequest(this, absolutePagePath)
const buildInfo = getModuleBuildInfo(this._module)
buildInfo.nextEdgeApiFunction = {
page: page || '/',
}

return `
import { adapter } from 'next/dist/server/web/adapter'
// The condition is true when the "process" module is provided
if (process !== global.process) {
// prefer local process but global.process has correct "env"
process.env = global.process.env;
global.process = process;
}
var mod = require(${stringifiedPagePath})
var handler = mod.middleware || mod.default;
if (typeof handler !== 'function') {
throw new Error('The Edge Function "pages${page}" must export a \`default\` function');
}
export default function (opts) {
return adapter({
...opts,
page: ${JSON.stringify(page)},
handler,
})
}
`
}
40 changes: 27 additions & 13 deletions packages/next/build/webpack/plugins/middleware-plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,24 +14,26 @@ import {
NEXT_CLIENT_SSR_ENTRY_SUFFIX,
} from '../../../shared/lib/constants'

interface EdgeFunctionDefinition {
env: string[]
files: string[]
name: string
page: string
regexp: string
wasm?: WasmBinding[]
}

export interface MiddlewareManifest {
version: 1
sortedMiddleware: string[]
clientInfo: [location: string, isSSR: boolean][]
middleware: {
[page: string]: {
env: string[]
files: string[]
name: string
page: string
regexp: string
wasm?: WasmBinding[]
}
}
middleware: { [page: string]: EdgeFunctionDefinition }
functions: { [page: string]: EdgeFunctionDefinition }
}

interface EntryMetadata {
edgeMiddleware?: EdgeMiddlewareMeta
edgeApiFunction?: EdgeMiddlewareMeta
edgeSSR?: EdgeSSRMeta
env: Set<string>
wasmBindings: Set<WasmBinding>
Expand All @@ -42,6 +44,7 @@ const middlewareManifest: MiddlewareManifest = {
sortedMiddleware: [],
clientInfo: [],
middleware: {},
functions: {},
version: 1,
}

Expand Down Expand Up @@ -310,6 +313,8 @@ function getExtractMetadata(params: {
entryMetadata.edgeSSR = buildInfo.nextEdgeSSR
} else if (buildInfo?.nextEdgeMiddleware) {
entryMetadata.edgeMiddleware = buildInfo.nextEdgeMiddleware
} else if (buildInfo?.nextEdgeApiFunction) {
entryMetadata.edgeApiFunction = buildInfo.nextEdgeApiFunction
}

/**
Expand Down Expand Up @@ -386,23 +391,32 @@ function getCreateAssets(params: {

// There should always be metadata for the entrypoint.
const metadata = metadataByEntry.get(entrypoint.name)
const page = metadata?.edgeMiddleware?.page || metadata?.edgeSSR?.page
const page =
metadata?.edgeMiddleware?.page ||
metadata?.edgeSSR?.page ||
metadata?.edgeApiFunction?.page
if (!page) {
continue
}

const { namedRegex } = getNamedMiddlewareRegex(page, {
catchAll: !metadata.edgeSSR,
catchAll: !metadata.edgeSSR && !metadata.edgeApiFunction,
})

middlewareManifest.middleware[page] = {
const edgeFunctionDefinition: EdgeFunctionDefinition = {
env: Array.from(metadata.env),
files: getEntryFiles(entrypoint.getFiles(), metadata),
name: entrypoint.name,
page: page,
regexp: namedRegex,
wasm: Array.from(metadata.wasmBindings),
}

if (metadata.edgeApiFunction /* || metadata.edgeSSR */) {
middlewareManifest.functions[page] = edgeFunctionDefinition
} else {
middlewareManifest.middleware[page] = edgeFunctionDefinition
}
}

middlewareManifest.sortedMiddleware = getSortedRoutes(
Expand Down
2 changes: 1 addition & 1 deletion packages/next/server/body-streams.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ function requestToBodyStream(request: IncomingMessage): BodyStream {
return transform.readable as unknown as ReadableStream<Uint8Array>
}

function bodyStreamToNodeStream(bodyStream: BodyStream): Readable {
export function bodyStreamToNodeStream(bodyStream: BodyStream): Readable {
const reader = bodyStream.getReader()
return Readable.from(
(async function* () {
Expand Down
4 changes: 3 additions & 1 deletion packages/next/server/dev/next-dev-server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,9 @@ export default class DevServer extends Server {
onClient: () => {},
onServer: () => {},
onEdgeServer: () => {
routedMiddleware.push(pageName)
if (!pageName.startsWith('/api/')) {
routedMiddleware.push(pageName)
}
ssrMiddleware.add(pageName)
},
})
Expand Down
121 changes: 111 additions & 10 deletions packages/next/server/next-server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,9 @@ import { getCustomRoute } from './server-route-utils'
import { urlQueryToSearchParams } from '../shared/lib/router/utils/querystring'
import ResponseCache from '../server/response-cache'
import { removeTrailingSlash } from '../shared/lib/router/utils/remove-trailing-slash'
import { clonableBodyForRequest } from './body-streams'
import { getMiddlewareRegex } from '../shared/lib/router/utils/route-regex'
import { getNextPathnameInfo } from '../shared/lib/router/utils/get-next-pathname-info'
import { getMiddlewareRegex } from '../shared/lib/router/utils/route-regex'
import { bodyStreamToNodeStream, clonableBodyForRequest } from './body-streams'

export * from './base-server'

Expand Down Expand Up @@ -540,6 +540,19 @@ export default class NextNodeServer extends BaseServer {
page: string,
builtPagePath: string
): Promise<boolean> {
const handledAsEdgeFunction = await this.runEdgeFunctionApiEndpoint({
req,
res,
query,
params,
page,
builtPagePath,
})

if (handledAsEdgeFunction) {
return true
}

const pageModule = await require(builtPagePath)
query = { ...query, ...params }

Expand Down Expand Up @@ -1031,11 +1044,15 @@ export default class NextNodeServer extends BaseServer {
}

/**
* Get information for the middleware located in the provided page
* folder. If the middleware info can't be found it will throw
* Get information for the edge function located in the provided page
* folder. If the edge function info can't be found it will throw
* an error.
*/
protected getMiddlewareInfo(page: string) {
protected getEdgeFunctionInfo(params: {
page: string
/** Whether we should look for a middleware or not */
middleware: boolean
}) {
const manifest: MiddlewareManifest = require(join(
this.serverDistDir,
MIDDLEWARE_MANIFEST
Expand All @@ -1044,12 +1061,14 @@ export default class NextNodeServer extends BaseServer {
let foundPage: string

try {
foundPage = denormalizePagePath(normalizePagePath(page))
foundPage = denormalizePagePath(normalizePagePath(params.page))
} catch (err) {
throw pageNotFoundError(page)
throw pageNotFoundError(params.page)
}

let pageInfo = manifest.middleware[foundPage]
let pageInfo = params.middleware
? manifest.middleware[foundPage]
: manifest.functions[foundPage]
if (!pageInfo) {
throw pageNotFoundError(foundPage)
}
Expand All @@ -1075,7 +1094,10 @@ export default class NextNodeServer extends BaseServer {
_isSSR?: boolean
): Promise<boolean> {
try {
return this.getMiddlewareInfo(pathname).paths.length > 0
return (
this.getEdgeFunctionInfo({ page: pathname, middleware: true }).paths
.length > 0
)
} catch (_) {}

return false
Expand Down Expand Up @@ -1142,7 +1164,10 @@ export default class NextNodeServer extends BaseServer {
}

await this.ensureMiddleware(middleware.page, middleware.ssr)
const middlewareInfo = this.getMiddlewareInfo(middleware.page)
const middlewareInfo = this.getEdgeFunctionInfo({
page: middleware.page,
middleware: true,
})

result = await run({
name: middlewareInfo.name,
Expand Down Expand Up @@ -1411,4 +1436,80 @@ export default class NextNodeServer extends BaseServer {
this.warnIfQueryParametersWereDeleted = () => {}
}
}

private async runEdgeFunctionApiEndpoint(params: {
req: NodeNextRequest
res: NodeNextResponse
query: ParsedUrlQuery
params: Params | false
page: string
builtPagePath: string
}): Promise<boolean> {
let middlewareInfo: ReturnType<typeof this.getEdgeFunctionInfo> | undefined

try {
middlewareInfo = this.getEdgeFunctionInfo({
page: params.page,
middleware: false,
})
} catch {
return false
}

// For middleware to "fetch" we must always provide an absolute URL
const url = getRequestMeta(params.req, '__NEXT_INIT_URL')!
if (!url.startsWith('http')) {
throw new Error(
'To use middleware you must provide a `hostname` and `port` to the Next.js Server'
)
}

const result = await run({
name: middlewareInfo.name,
paths: middlewareInfo.paths,
env: middlewareInfo.env,
wasm: middlewareInfo.wasm,
request: {
headers: params.req.headers,
method: params.req.method,
nextConfig: {
basePath: this.nextConfig.basePath,
i18n: this.nextConfig.i18n,
trailingSlash: this.nextConfig.trailingSlash,
},
url,
page: {
name: params.page,
...(params.params && { params: params.params }),
},
// TODO(gal): complete body
// body: originalBody?.cloneBodyStream(),
},
useCache: !this.nextConfig.experimental.runtime,
onWarning: (_warning: Error) => {
// if (params.onWarning) {
// warning.message += ` "./${middlewareInfo.name}"`
// params.onWarning(warning)
// }
},
})

params.res.statusCode = result.response.status
params.res.statusMessage = result.response.statusText

result.response.headers.forEach((value, key) => {
params.res.appendHeader(key, value)
})

if (result.response.body) {
// TODO(gal): not sure that we always need to stream
bodyStreamToNodeStream(result.response.body).pipe(
params.res.originalResponse
)
} else {
params.res.originalResponse.end()
}

return true
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export default (req) => {
return new Response(`Hello from ${req.url}`)
}

export const config = {
runtime: 'edge',
}
Loading

1 comment on commit db20aa6

@ijjk
Copy link
Member

@ijjk ijjk commented on db20aa6 May 31, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stats from current release

Default Build (Increase detected ⚠️)
General Overall decrease ✓
vercel/next.js canary v12.1.6 vercel/next.js refs/heads/canary Change
buildDuration 16.2s 21.3s ⚠️ +5s
buildDurationCached 6.6s 6.8s ⚠️ +196ms
nodeModulesSize 274 MB 260 MB -14.8 MB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary v12.1.6 vercel/next.js refs/heads/canary Change
/ failed reqs 0 0
/ total time (seconds) 3.698 4.191 ⚠️ +0.49
/ avg req/sec 676.02 596.58 ⚠️ -79.44
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.381 1.459 ⚠️ +0.08
/error-in-render avg req/sec 1809.83 1713.83 ⚠️ -96
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canary v12.1.6 vercel/next.js refs/heads/canary Change
437.HASH.js gzip 179 B 179 B
framework-HASH.js gzip 42 kB 42 kB
main-HASH.js gzip 28.7 kB 29.8 kB ⚠️ +1.01 kB
webpack-HASH.js gzip 1.44 kB 1.54 kB ⚠️ +98 B
Overall change 72.4 kB 73.5 kB ⚠️ +1.11 kB
Legacy Client Bundles (polyfills) Overall increase ⚠️
vercel/next.js canary v12.1.6 vercel/next.js refs/heads/canary Change
polyfills-HASH.js gzip 31 kB 31 kB ⚠️ +25 B
Overall change 31 kB 31 kB ⚠️ +25 B
Client Pages Overall decrease ✓
vercel/next.js canary v12.1.6 vercel/next.js refs/heads/canary Change
_app-HASH.js gzip 1.37 kB 1.37 kB ⚠️ +1 B
_error-HASH.js gzip 194 B 194 B
amp-HASH.js gzip 309 B 310 B ⚠️ +1 B
css-HASH.js gzip 328 B 327 B -1 B
dynamic-HASH.js gzip 3.08 kB 2.7 kB -374 B
head-HASH.js gzip 359 B 355 B -4 B
hooks-HASH.js gzip 920 B 919 B -1 B
image-HASH.js gzip 5.71 kB 5.74 kB ⚠️ +27 B
index-HASH.js gzip 263 B 264 B ⚠️ +1 B
link-HASH.js gzip 2.64 kB 2.79 kB ⚠️ +151 B
routerDirect..HASH.js gzip 322 B 321 B -1 B
script-HASH.js gzip 392 B 390 B -2 B
withRouter-HASH.js gzip 320 B 318 B -2 B
85e02e95b279..7e3.css gzip 107 B 107 B
Overall change 16.3 kB 16.1 kB -204 B
Client Build Manifests Overall increase ⚠️
vercel/next.js canary v12.1.6 vercel/next.js refs/heads/canary Change
_buildManifest.js gzip 459 B 460 B ⚠️ +1 B
Overall change 459 B 460 B ⚠️ +1 B
Rendered Page Sizes
vercel/next.js canary v12.1.6 vercel/next.js refs/heads/canary Change
index.html gzip 532 B 532 B
link.html gzip 544 B 545 B ⚠️ +1 B
withRouter.html gzip 527 B 526 B -1 B
Overall change 1.6 kB 1.6 kB

Diffs

Diff for _buildManifest.js
@@ -1,25 +1,25 @@
 self.__BUILD_MANIFEST = {
   __rewrites: { beforeFiles: [], afterFiles: [], fallback: [] },
-  "/": ["static\u002Fchunks\u002Fpages\u002Findex-5d085461d4b7e1ee.js"],
-  "/_error": ["static\u002Fchunks\u002Fpages\u002F_error-48e41d26ff0101f8.js"],
-  "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-a67fe6de8bb61a7a.js"],
+  "/": ["static\u002Fchunks\u002Fpages\u002Findex-71b39a0d29d24c94.js"],
+  "/_error": ["static\u002Fchunks\u002Fpages\u002F_error-f7a25bc135f661fc.js"],
+  "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-ade8b541ba69808a.js"],
   "/css": [
     "static\u002Fcss\u002F94fdbc56eafa2039.css",
-    "static\u002Fchunks\u002Fpages\u002Fcss-6d59dba2fd31bfed.js"
+    "static\u002Fchunks\u002Fpages\u002Fcss-a95e3bc2c5ca8245.js"
   ],
   "/dynamic": [
-    "static\u002Fchunks\u002Fpages\u002Fdynamic-20b15c1c47d4d615.js"
+    "static\u002Fchunks\u002Fpages\u002Fdynamic-672cb693b0ca9d7e.js"
   ],
-  "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-6ece0649d14938b8.js"],
-  "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-e3382ebb932b5bfb.js"],
-  "/image": ["static\u002Fchunks\u002Fpages\u002Fimage-19409da39fdaf4f2.js"],
-  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-5581225b2bbff8ba.js"],
+  "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-e2b7857f2aa86120.js"],
+  "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-a5d0da0f39070d96.js"],
+  "/image": ["static\u002Fchunks\u002Fpages\u002Fimage-a032795453eaeab0.js"],
+  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-64306f3c6f33cf81.js"],
   "/routerDirect": [
-    "static\u002Fchunks\u002Fpages\u002FrouterDirect-9669d5861da5e10b.js"
+    "static\u002Fchunks\u002Fpages\u002FrouterDirect-c2408dd9a1984376.js"
   ],
-  "/script": ["static\u002Fchunks\u002Fpages\u002Fscript-c439c95569fb9033.js"],
+  "/script": ["static\u002Fchunks\u002Fpages\u002Fscript-f309dfc4eea310f4.js"],
   "/withRouter": [
-    "static\u002Fchunks\u002Fpages\u002FwithRouter-8b03818d0ed540a0.js"
+    "static\u002Fchunks\u002Fpages\u002FwithRouter-fb06f1f34bce84ca.js"
   ],
   sortedPages: [
     "\u002F",
Diff for _app-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [888],
   {
-    /***/ 3479: /***/ function(
+    /***/ 122: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/_app",
         function() {
-          return __webpack_require__(3653);
+          return __webpack_require__(539);
         }
       ]);
       if (false) {
@@ -18,14 +18,14 @@
       /***/
     },
 
-    /***/ 3653: /***/ function(
+    /***/ 539: /***/ function(
       __unused_webpack_module,
       exports,
       __webpack_require__
     ) {
       "use strict";
 
-      var _runtimeJs = _interopRequireDefault(__webpack_require__(739));
+      var _runtimeJs = _interopRequireDefault(__webpack_require__(3994));
       function _assertThisInitialized(self) {
         if (self === void 0) {
           throw new ReferenceError(
@@ -153,7 +153,7 @@
       });
       exports["default"] = void 0;
       var _react = _interopRequireDefault1(__webpack_require__(9496));
-      var _utils = __webpack_require__(8030);
+      var _utils = __webpack_require__(9089);
       function asyncGeneratorStep(
         gen,
         resolve,
@@ -282,7 +282,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 179], function() {
-      return __webpack_exec__(3479), __webpack_exec__(7465);
+      return __webpack_exec__(122), __webpack_exec__(1905);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for _error-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [820],
   {
-    /***/ 2929: /***/ function(
+    /***/ 3560: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/_error",
         function() {
-          return __webpack_require__(5590);
+          return __webpack_require__(9733);
         }
       ]);
       if (false) {
@@ -24,7 +24,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 774, 179], function() {
-      return __webpack_exec__(2929);
+      return __webpack_exec__(3560);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for amp-HASH.js
@@ -1,17 +1,17 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [216],
   {
-    /***/ 94: /***/ function(
+    /***/ 7941: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(4634);
+      module.exports = __webpack_require__(79);
 
       /***/
     },
 
-    /***/ 9028: /***/ function(
+    /***/ 8958: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -19,7 +19,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/amp",
         function() {
-          return __webpack_require__(4628);
+          return __webpack_require__(6534);
         }
       ]);
       if (false) {
@@ -28,7 +28,7 @@
       /***/
     },
 
-    /***/ 4628: /***/ function(
+    /***/ 6534: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -45,7 +45,7 @@
         /* harmony export */
       });
       /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
-        94
+        7941
       );
       /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(
         next_amp__WEBPACK_IMPORTED_MODULE_0__
@@ -69,7 +69,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 774, 179], function() {
-      return __webpack_exec__(9028);
+      return __webpack_exec__(8958);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for css-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [706],
   {
-    /***/ 8281: /***/ function(
+    /***/ 9557: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/css",
         function() {
-          return __webpack_require__(1949);
+          return __webpack_require__(4173);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 1949: /***/ function(
+    /***/ 4173: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -29,7 +29,7 @@
         4637
       );
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        1099
+        2467
       );
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(
         _css_module_css__WEBPACK_IMPORTED_MODULE_1__
@@ -48,7 +48,7 @@
       /***/
     },
 
-    /***/ 1099: /***/ function(module) {
+    /***/ 2467: /***/ function(module) {
       // extracted by mini-css-extract-plugin
       module.exports = { helloWorld: "css_helloWorld__qqNwY" };
 
@@ -61,7 +61,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function() {
-      return __webpack_exec__(8281);
+      return __webpack_exec__(9557);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for dynamic-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [739],
   {
-    /***/ 2744: /***/ function(
+    /***/ 5695: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/dynamic",
         function() {
-          return __webpack_require__(1697);
+          return __webpack_require__(7800);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 1926: /***/ function(module, exports, __webpack_require__) {
+    /***/ 7164: /***/ function(module, exports, __webpack_require__) {
       "use strict";
 
       function _defineProperty(obj, key, value) {
@@ -68,7 +68,7 @@
       exports["default"] = dynamic;
       exports.noSSR = noSSR;
       var _react = _interopRequireDefault(__webpack_require__(9496));
-      var _loadable = _interopRequireDefault(__webpack_require__(4596));
+      var _loadable = _interopRequireDefault(__webpack_require__(4398));
       function dynamic(dynamicOptions, options) {
         var loadableFn = _loadable.default;
         var loadableOptions = {
@@ -100,16 +100,12 @@
         }
         // Support for passing options, eg: dynamic(import('../hello-world'), {loading: () => <p>Loading something</p>})
         loadableOptions = _objectSpread({}, loadableOptions, options);
-        var suspenseOptions = loadableOptions;
         // Error if Fizz rendering is not enabled and `suspense` option is set to true
-        if (true && suspenseOptions.suspense) {
+        if (true && loadableOptions.suspense) {
           throw new Error(
             "Invalid suspense option usage in next/dynamic. Read more: https://nextjs.org/docs/messages/invalid-dynamic-suspense"
           );
         }
-        if (suspenseOptions.suspense) {
-          return loadableFn(suspenseOptions);
-        }
         // coming from build/babel/plugins/react-loadable-plugin.js
         if (loadableOptions.loadableGenerated) {
           loadableOptions = _objectSpread(
@@ -119,8 +115,12 @@
           );
           delete loadableOptions.loadableGenerated;
         }
-        // support for disabling server side rendering, eg: dynamic(import('../hello-world'), {ssr: false})
-        if (typeof loadableOptions.ssr === "boolean") {
+        // support for disabling server side rendering, eg: dynamic(import('../hello-world'), {ssr: false}).
+        // skip `ssr` for suspense mode and opt-in React.lazy directly
+        if (
+          typeof loadableOptions.ssr === "boolean" &&
+          !loadableOptions.suspense
+        ) {
           if (!loadableOptions.ssr) {
             delete loadableOptions.ssr;
             return noSSR(loadableFn, loadableOptions);
@@ -157,9 +157,13 @@
         };
       }
       if (
-        typeof exports.default === "function" ||
-        (typeof exports.default === "object" && exports.default !== null)
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
       ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true
+        });
         Object.assign(exports.default, exports);
         module.exports = exports.default;
       } //# sourceMappingURL=dynamic.js.map
@@ -167,7 +171,7 @@
       /***/
     },
 
-    /***/ 7063: /***/ function(
+    /***/ 7484: /***/ function(
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -194,7 +198,7 @@
       /***/
     },
 
-    /***/ 4596: /***/ function(
+    /***/ 4398: /***/ function(
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -255,8 +259,7 @@
       });
       exports["default"] = void 0;
       var _react = _interopRequireDefault(__webpack_require__(9496));
-      var _useSubscription = __webpack_require__(1181);
-      var _loadableContext = __webpack_require__(7063);
+      var _loadableContext = __webpack_require__(7484);
       function _interopRequireDefault(obj) {
         return obj && obj.__esModule
           ? obj
@@ -264,6 +267,8 @@
               default: obj
             };
       }
+      var useSyncExternalStore = (false ? 0 : __webpack_require__(9155))
+        .useSyncExternalStore;
       var ALL_INITIALIZERS = [];
       var READY_INITIALIZERS = [];
       var initialized = false;
@@ -303,12 +308,24 @@
           }
           return subscription.promise();
         };
-        var LoadableImpl = function LoadableImpl(props, ref) {
+        var useLoadableModule = function useLoadableModule() {
           init();
           var context = _react.default.useContext(
             _loadableContext.LoadableContext
           );
-          var state = (0, _useSubscription).useSubscription(subscription);
+          if (context && Array.isArray(opts.modules)) {
+            opts.modules.forEach(function(moduleName) {
+              context(moduleName);
+            });
+          }
+        };
+        var LoadableImpl = function LoadableImpl(props, ref) {
+          useLoadableModule();
+          var state = useSyncExternalStore(
+            subscription.subscribe,
+            subscription.getCurrentValue,
+            subscription.getCurrentValue
+          );
           _react.default.useImperativeHandle(
             ref,
             function() {
@@ -318,11 +335,6 @@
             },
             []
           );
-          if (context && Array.isArray(opts.modules)) {
-            opts.modules.forEach(function(moduleName) {
-              context(moduleName);
-            });
-          }
           return _react.default.useMemo(
             function() {
               if (state.loading || state.error) {
@@ -346,6 +358,7 @@
           );
         };
         var LazyImpl = function LazyImpl(props, ref) {
+          useLoadableModule();
           return _react.default.createElement(
             opts.lazy,
             _objectSpread({}, props, {
@@ -368,12 +381,12 @@
         if (opts.suspense) {
           opts.lazy = _react.default.lazy(opts.loader);
         }
-        var subscription = null;
+        /** @type LoadableSubscription */ var subscription = null;
         // Server only
         if (false) {
         }
         // Client only
-        if (!initialized && "object" !== "undefined" && !opts.suspense) {
+        if (!initialized && "object" !== "undefined") {
           // require.resolveWeak check is needed for environments that don't have it available like Jest
           var moduleIds =
             opts.webpack && "function" === "function"
@@ -415,7 +428,7 @@
         }
         var LoadableComponent = opts.suspense ? LazyImpl : LoadableImpl;
         LoadableComponent.preload = function() {
-          return !opts.suspense && init();
+          return init();
         };
         LoadableComponent.displayName = "LoadableComponent";
         return _react.default.forwardRef(LoadableComponent);
@@ -569,7 +582,7 @@
       /***/
     },
 
-    /***/ 1697: /***/ function(
+    /***/ 7800: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -586,7 +599,7 @@
         4637
       );
       /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        1605
+        2123
       );
       /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(
         next_dynamic__WEBPACK_IMPORTED_MODULE_1__
@@ -595,13 +608,13 @@
       var DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
         function() {
           return __webpack_require__
-            .e(/* import() */ 437)
-            .then(__webpack_require__.bind(__webpack_require__, 7437));
+            .e(/* import() */ 181)
+            .then(__webpack_require__.bind(__webpack_require__, 1181));
         },
         {
           loadableGenerated: {
             webpack: function() {
-              return [/*require.resolve*/ 7437];
+              return [/*require.resolve*/ 1181];
             }
           }
         }
@@ -631,195 +644,103 @@
       /***/
     },
 
-    /***/ 1181: /***/ function(
+    /***/ 2123: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      var __dirname = "/";
-      (function() {
-        "use strict";
-        var e = {
-          800: function(e) {
-            /*
-object-assign
-(c) Sindre Sorhus
-@license MIT
-*/
-            var r = Object.getOwnPropertySymbols;
-            var t = Object.prototype.hasOwnProperty;
-            var u = Object.prototype.propertyIsEnumerable;
-            function toObject(e) {
-              if (e === null || e === undefined) {
-                throw new TypeError(
-                  "Object.assign cannot be called with null or undefined"
-                );
-              }
-              return Object(e);
-            }
-            function shouldUseNative() {
-              try {
-                if (!Object.assign) {
-                  return false;
-                }
-                var e = new String("abc");
-                e[5] = "de";
-                if (Object.getOwnPropertyNames(e)[0] === "5") {
-                  return false;
-                }
-                var r = {};
-                for (var t = 0; t < 10; t++) {
-                  r["_" + String.fromCharCode(t)] = t;
-                }
-                var u = Object.getOwnPropertyNames(r).map(function(e) {
-                  return r[e];
-                });
-                if (u.join("") !== "0123456789") {
-                  return false;
-                }
-                var n = {};
-                "abcdefghijklmnopqrst".split("").forEach(function(e) {
-                  n[e] = e;
-                });
-                if (
-                  Object.keys(Object.assign({}, n)).join("") !==
-                  "abcdefghijklmnopqrst"
-                ) {
-                  return false;
-                }
-                return true;
-              } catch (e) {
-                return false;
-              }
-            }
-            e.exports = shouldUseNative()
-              ? Object.assign
-              : function(e, n) {
-                  var a;
-                  var i = toObject(e);
-                  var s;
-                  for (var c = 1; c < arguments.length; c++) {
-                    a = Object(arguments[c]);
-                    for (var o in a) {
-                      if (t.call(a, o)) {
-                        i[o] = a[o];
-                      }
-                    }
-                    if (r) {
-                      s = r(a);
-                      for (var f = 0; f < s.length; f++) {
-                        if (u.call(a, s[f])) {
-                          i[s[f]] = a[s[f]];
-                        }
-                      }
-                    }
-                  }
-                  return i;
-                };
-          },
-          569: function(e, r, t) {
-            /** @license React vundefined
-             * use-subscription.development.js
-             *
-             * Copyright (c) Facebook, Inc. and its affiliates.
-             *
-             * This source code is licensed under the MIT license found in the
-             * LICENSE file in the root directory of this source tree.
-             */
-            if (false) {
-            }
-          },
-          403: function(e, r, t) {
-            /** @license React vundefined
-             * use-subscription.production.min.js
-             *
-             * Copyright (c) Facebook, Inc. and its affiliates.
-             *
-             * This source code is licensed under the MIT license found in the
-             * LICENSE file in the root directory of this source tree.
-             */
-            var u = t(800),
-              n = t(522);
-            r.useSubscription = function(e) {
-              var r = e.getCurrentValue,
-                t = e.subscribe,
-                a = n.useState(function() {
-                  return { getCurrentValue: r, subscribe: t, value: r() };
-                });
-              e = a[0];
-              var i = a[1];
-              a = e.value;
-              if (e.getCurrentValue !== r || e.subscribe !== t)
-                (a = r()), i({ getCurrentValue: r, subscribe: t, value: a });
-              n.useDebugValue(a);
-              n.useEffect(
-                function() {
-                  function b() {
-                    if (!e) {
-                      var n = r();
-                      i(function(e) {
-                        return e.getCurrentValue !== r ||
-                          e.subscribe !== t ||
-                          e.value === n
-                          ? e
-                          : u({}, e, { value: n });
-                      });
-                    }
-                  }
-                  var e = !1,
-                    n = t(b);
-                  b();
-                  return function() {
-                    e = !0;
-                    n();
-                  };
-                },
-                [r, t]
-              );
-              return a;
-            };
+      module.exports = __webpack_require__(7164);
+
+      /***/
+    },
+
+    /***/ 9364: /***/ function(
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) {
+      "use strict";
+      /**
+       * @license React
+       * use-sync-external-store-shim.production.min.js
+       *
+       * Copyright (c) Facebook, Inc. and its affiliates.
+       *
+       * This source code is licensed under the MIT license found in the
+       * LICENSE file in the root directory of this source tree.
+       */
+      var e = __webpack_require__(9496);
+      function h(a, b) {
+        return (
+          (a === b && (0 !== a || 1 / a === 1 / b)) || (a !== a && b !== b)
+        );
+      }
+      var k = "function" === typeof Object.is ? Object.is : h,
+        l = e.useState,
+        m = e.useEffect,
+        n = e.useLayoutEffect,
+        p = e.useDebugValue;
+      function q(a, b) {
+        var d = b(),
+          f = l({ inst: { value: d, getSnapshot: b } }),
+          c = f[0].inst,
+          g = f[1];
+        n(
+          function() {
+            c.value = d;
+            c.getSnapshot = b;
+            r(c) && g({ inst: c });
           },
-          138: function(e, r, t) {
-            if (true) {
-              e.exports = t(403);
-            } else {
-            }
+          [a, d, b]
+        );
+        m(
+          function() {
+            r(c) && g({ inst: c });
+            return a(function() {
+              r(c) && g({ inst: c });
+            });
           },
-          522: function(e) {
-            e.exports = __webpack_require__(9496);
-          }
-        };
-        var r = {};
-        function __nccwpck_require__(t) {
-          var u = r[t];
-          if (u !== undefined) {
-            return u.exports;
-          }
-          var n = (r[t] = { exports: {} });
-          var a = true;
-          try {
-            e[t](n, n.exports, __nccwpck_require__);
-            a = false;
-          } finally {
-            if (a) delete r[t];
-          }
-          return n.exports;
+          [a]
+        );
+        p(d);
+        return d;
+      }
+      function r(a) {
+        var b = a.getSnapshot;
+        a = a.value;
+        try {
+          var d = b();
+          return !k(a, d);
+        } catch (f) {
+          return !0;
         }
-        if (typeof __nccwpck_require__ !== "undefined")
-          __nccwpck_require__.ab = __dirname + "/";
-        var t = __nccwpck_require__(138);
-        module.exports = t;
-      })();
+      }
+      function t(a, b) {
+        return b();
+      }
+      var u =
+        "undefined" === typeof window ||
+        "undefined" === typeof window.document ||
+        "undefined" === typeof window.document.createElement
+          ? t
+          : q;
+      exports.useSyncExternalStore =
+        void 0 !== e.useSyncExternalStore ? e.useSyncExternalStore : u;
 
       /***/
     },
 
-    /***/ 1605: /***/ function(
+    /***/ 9155: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(1926);
+      "use strict";
+
+      if (true) {
+        module.exports = __webpack_require__(9364);
+      } else {
+      }
 
       /***/
     }
@@ -830,7 +751,7 @@ object-assign
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function() {
-      return __webpack_exec__(2744);
+      return __webpack_exec__(5695);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for head-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [645],
   {
-    /***/ 4337: /***/ function(
+    /***/ 7148: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/head",
         function() {
-          return __webpack_require__(848);
+          return __webpack_require__(6179);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 848: /***/ function(
+    /***/ 6179: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -35,7 +35,7 @@
         4637
       );
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        8915
+        4616
       );
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(
         next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -71,12 +71,12 @@
       /***/
     },
 
-    /***/ 8915: /***/ function(
+    /***/ 4616: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(4828);
+      module.exports = __webpack_require__(5222);
 
       /***/
     }
@@ -87,7 +87,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function() {
-      return __webpack_exec__(4337);
+      return __webpack_exec__(7148);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for hooks-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [757],
   {
-    /***/ 4853: /***/ function(
+    /***/ 3515: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/hooks",
         function() {
-          return __webpack_require__(7084);
+          return __webpack_require__(856);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 7084: /***/ function(
+    /***/ 856: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -158,7 +158,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function() {
-      return __webpack_exec__(4853);
+      return __webpack_exec__(3515);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for image-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [358],
   {
-    /***/ 7570: /***/ function(
+    /***/ 1487: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/image",
         function() {
-          return __webpack_require__(3918);
+          return __webpack_require__(2330);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 2185: /***/ function(module, exports, __webpack_require__) {
+    /***/ 5239: /***/ function(module, exports, __webpack_require__) {
       "use strict";
 
       function _arrayLikeToArray(arr, len) {
@@ -123,12 +123,12 @@
       });
       exports["default"] = Image;
       var _react = _interopRequireWildcard(__webpack_require__(9496));
-      var _head = _interopRequireDefault(__webpack_require__(4828));
-      var _imageConfig = __webpack_require__(2204);
-      var _useIntersection = __webpack_require__(6363);
-      var _imageConfigContext = __webpack_require__(1958);
-      var _utils = __webpack_require__(8030);
-      var _normalizeTrailingSlash = __webpack_require__(1872);
+      var _head = _interopRequireDefault(__webpack_require__(5222));
+      var _imageConfig = __webpack_require__(5466);
+      var _useIntersection = __webpack_require__(1311);
+      var _imageConfigContext = __webpack_require__(1801);
+      var _utils = __webpack_require__(9089);
+      var _normalizeTrailingSlash = __webpack_require__(2800);
       function Image(_param) {
         var src = _param.src,
           sizes = _param.sizes,
@@ -139,8 +139,7 @@
           loading = _param.loading,
           _lazyRoot = _param.lazyRoot,
           lazyRoot = _lazyRoot === void 0 ? null : _lazyRoot,
-          _lazyBoundary = _param.lazyBoundary,
-          lazyBoundary = _lazyBoundary === void 0 ? "200px" : _lazyBoundary,
+          lazyBoundary = _param.lazyBoundary,
           className = _param.className,
           quality = _param.quality,
           width = _param.width,
@@ -263,7 +262,7 @@
         var ref1 = _slicedToArray(
             (0, _useIntersection).useIntersection({
               rootRef: lazyRoot,
-              rootMargin: lazyBoundary,
+              rootMargin: lazyBoundary || "200px",
               disabled: !isLazy
             }),
             3
@@ -271,7 +270,7 @@
           setIntersection = ref1[0],
           isIntersected = ref1[1],
           resetIntersected = ref1[2];
-        var isVisible = !isLazy || isIntersected;
+        var isVisible = !isLazy || isIntersected || layout === "raw";
         var wrapperStyle = {
           boxSizing: "border-box",
           display: "block",
@@ -450,7 +449,8 @@
             onLoadingCompleteRef: onLoadingCompleteRef,
             setBlurComplete: setBlurComplete,
             setIntersection: setIntersection,
-            isVisible: isVisible
+            isVisible: isVisible,
+            noscriptSizes: sizes
           },
           rest
         );
@@ -619,17 +619,22 @@
         }
         return target;
       }
-      var ref;
-      var experimentalLayoutRaw =
-        (ref = {
-          deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
-          imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
-          path: "/_next/image",
-          loader: "default",
-          experimentalLayoutRaw: false
-        }) === null || ref === void 0
-          ? void 0
-          : ref.experimentalLayoutRaw;
+      var ref =
+          {
+            deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
+            imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
+            path: "/_next/image",
+            loader: "default",
+            experimentalLayoutRaw: false
+          } || {},
+        _experimentalLayoutRaw = ref.experimentalLayoutRaw,
+        experimentalLayoutRaw =
+          _experimentalLayoutRaw === void 0 ? false : _experimentalLayoutRaw,
+        _experimentalRemotePatterns = ref.experimentalRemotePatterns,
+        experimentalRemotePatterns =
+          _experimentalRemotePatterns === void 0
+            ? []
+            : _experimentalRemotePatterns;
       var configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
         imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
@@ -756,9 +761,9 @@
             sizes: undefined
           };
         }
-        var ref3 = getWidths(config, width, layout, sizes),
-          widths = ref3.widths,
-          kind = ref3.kind;
+        var ref4 = getWidths(config, width, layout, sizes),
+          widths = ref4.widths,
+          kind = ref4.kind;
         var last = widths.length - 1;
         return {
           sizes: !sizes && kind === "w" ? "100vw" : sizes,
@@ -802,11 +807,11 @@
         return undefined;
       }
       function defaultImageLoader(loaderProps) {
-        var ref2;
+        var ref5;
         var loaderKey =
-          ((ref2 = loaderProps.config) === null || ref2 === void 0
+          ((ref5 = loaderProps.config) === null || ref5 === void 0
             ? void 0
-            : ref2.loader) || "default";
+            : ref5.loader) || "default";
         var load = loaders.get(loaderKey);
         if (load) {
           return load(loaderProps);
@@ -864,7 +869,7 @@
             });
           }
           if (false) {
-            var parent, widthModified, heightModified, ref3;
+            var parent, widthModified, heightModified, ref6;
           }
         });
       }
@@ -879,7 +884,8 @@
           blurStyle = _param.blurStyle,
           isLazy = _param.isLazy,
           placeholder = _param.placeholder,
-          loading = _param.loading,
+          _loading = _param.loading,
+          loading = _loading === void 0 ? "lazy" : _loading,
           srcString = _param.srcString,
           config = _param.config,
           unoptimized = _param.unoptimized,
@@ -890,6 +896,7 @@
           onLoad = _param.onLoad,
           onError = _param.onError,
           isVisible = _param.isVisible,
+          noscriptSizes = _param.noscriptSizes,
           rest = _objectWithoutProperties(_param, [
             "imgAttributes",
             "heightInt",
@@ -911,7 +918,8 @@
             "setIntersection",
             "onLoad",
             "onError",
-            "isVisible"
+            "isVisible",
+            "noscriptSizes"
           ]);
         return /*#__PURE__*/ _react.default.createElement(
           _react.default.Fragment,
@@ -932,6 +940,8 @@
                 decoding: "async",
                 "data-nimg": layout,
                 className: className,
+                // @ts-ignore - TODO: upgrade to `@types/react@17`
+                loading: layout === "raw" ? loading : undefined,
                 style: _objectSpread({}, imgStyle, blurStyle),
                 ref: (0, _react).useCallback(
                   function(img) {
@@ -1000,7 +1010,7 @@
                     layout: layout,
                     width: widthInt,
                     quality: qualityInt,
-                    sizes: imgAttributes.sizes,
+                    sizes: noscriptSizes,
                     loader: loader
                   }),
                   layout === "raw"
@@ -1015,7 +1025,7 @@
                     style: imgStyle,
                     className: className,
                     // @ts-ignore - TODO: upgrade to `@types/react@17`
-                    loading: loading || "lazy"
+                    loading: loading
                   }
                 )
               )
@@ -1081,7 +1091,7 @@
           width = param.width,
           quality = param.quality;
         if (false) {
-          var parsedSrc, missingValues;
+          var hasMatch, parsedSrc, missingValues;
         }
         if (src.endsWith(".svg") && !config.dangerouslyAllowSVG) {
           // Special case to make svg serve as-is to avoid proxying
@@ -1100,9 +1110,13 @@
           .concat(quality || 75);
       }
       if (
-        typeof exports.default === "function" ||
-        (typeof exports.default === "object" && exports.default !== null)
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
       ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true
+        });
         Object.assign(exports.default, exports);
         module.exports = exports.default;
       } //# sourceMappingURL=image.js.map
@@ -1110,7 +1124,7 @@
       /***/
     },
 
-    /***/ 6363: /***/ function(module, exports, __webpack_require__) {
+    /***/ 1311: /***/ function(module, exports, __webpack_require__) {
       "use strict";
 
       function _arrayLikeToArray(arr, len) {
@@ -1179,7 +1193,7 @@
       });
       exports.useIntersection = useIntersection;
       var _react = __webpack_require__(9496);
-      var _requestIdleCallback = __webpack_require__(7808);
+      var _requestIdleCallback = __webpack_require__(7307);
       var hasIntersectionObserver = typeof IntersectionObserver !== "undefined";
       function useIntersection(param) {
         var rootRef = param.rootRef,
@@ -1311,9 +1325,13 @@
         return instance;
       }
       if (
-        typeof exports.default === "function" ||
-        (typeof exports.default === "object" && exports.default !== null)
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
       ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true
+        });
         Object.assign(exports.default, exports);
         module.exports = exports.default;
       } //# sourceMappingURL=use-intersection.js.map
@@ -1321,7 +1339,7 @@
       /***/
     },
 
-    /***/ 3918: /***/ function(
+    /***/ 2330: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -1342,8 +1360,8 @@
 
       // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/jsx-runtime.js
       var jsx_runtime = __webpack_require__(4637);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_sfoxds7t5ydpegc3knd667wn6m/node_modules/next/image.js
-      var next_image = __webpack_require__(8114);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_sfoxds7t5ydpegc3knd667wn6m/node_modules/next/image.js
+      var next_image = __webpack_require__(4033);
       var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // CONCATENATED MODULE: ./pages/nextjs.png
       /* harmony default export */ var nextjs = {
         src: "/_next/static/media/nextjs.cae0b805.png",
@@ -1371,12 +1389,12 @@
       /***/
     },
 
-    /***/ 8114: /***/ function(
+    /***/ 4033: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(2185);
+      module.exports = __webpack_require__(5239);
 
       /***/
     }
@@ -1387,7 +1405,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function() {
-      return __webpack_exec__(7570);
+      return __webpack_exec__(1487);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for index-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [405],
   {
-    /***/ 4786: /***/ function(
+    /***/ 6967: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/",
         function() {
-          return __webpack_require__(7245);
+          return __webpack_require__(9257);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 7245: /***/ function(
+    /***/ 9257: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -46,7 +46,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 774, 179], function() {
-      return __webpack_exec__(4786);
+      return __webpack_exec__(6967);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for link-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [644],
   {
-    /***/ 2783: /***/ function(
+    /***/ 9367: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/link",
         function() {
-          return __webpack_require__(3122);
+          return __webpack_require__(7178);
         }
       ]);
       if (false) {
@@ -18,7 +18,43 @@
       /***/
     },
 
-    /***/ 7160: /***/ function(module, exports, __webpack_require__) {
+    /***/ 7280: /***/ function(module, exports) {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true
+      });
+      exports.getDomainLocale = getDomainLocale;
+      var basePath =
+        /* unused pure expression or super */ null && (false || "");
+      function getDomainLocale(path, locale, locales, domainLocales) {
+        if (false) {
+          var finalLocale,
+            proto,
+            domain,
+            target,
+            detectDomainLocale,
+            normalizeLocalePath;
+        } else {
+          return false;
+        }
+      }
+      if (
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
+      ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true
+        });
+        Object.assign(exports.default, exports);
+        module.exports = exports.default;
+      } //# sourceMappingURL=get-domain-locale.js.map
+
+      /***/
+    },
+
+    /***/ 3952: /***/ function(module, exports, __webpack_require__) {
       "use strict";
 
       function _arrayLikeToArray(arr, len) {
@@ -95,9 +131,13 @@
       });
       exports["default"] = void 0;
       var _react = _interopRequireDefault(__webpack_require__(9496));
-      var _router = __webpack_require__(1368);
-      var _router1 = __webpack_require__(7465);
-      var _useIntersection = __webpack_require__(6363);
+      var _router = __webpack_require__(5920);
+      var _addLocale = __webpack_require__(4841);
+      var _routerContext = __webpack_require__(8940);
+      var _appRouterContext = __webpack_require__(2587);
+      var _useIntersection = __webpack_require__(1311);
+      var _getDomainLocale = __webpack_require__(7280);
+      var _addBasePath = __webpack_require__(9154);
       function _interopRequireDefault(obj) {
         return obj && obj.__esModule
           ? obj
@@ -191,15 +231,10 @@
           scroll: scroll
         });
       }
-      var Link = /*#__PURE__*/ _react.default.forwardRef(function(
+      var Link = /*#__PURE__*/ _react.default.forwardRef(function LinkComponent(
         props,
         forwardedRef
       ) {
-        var _legacyBehavior = props.legacyBehavior,
-          legacyBehavior =
-            _legacyBehavior === void 0
-              ? Boolean(false) !== true
-              : _legacyBehavior;
         if (false) {
           var hasWarned,
             optionalProps,
@@ -220,6 +255,11 @@
           locale = props.locale,
           onClick = props.onClick,
           onMouseEnter = props.onMouseEnter,
+          _legacyBehavior = props.legacyBehavior,
+          legacyBehavior =
+            _legacyBehavior === void 0
+              ? Boolean(false) !== true
+              : _legacyBehavior,
           restProps = _objectWithoutProperties(props, [
             "href",
             "as",
@@ -231,7 +271,8 @@
             "scroll",
             "locale",
             "onClick",
-            "onMouseEnter"
+            "onMouseEnter",
+            "legacyBehavior"
           ]);
         children = childrenProp;
         if (legacyBehavior && typeof children === "string") {
@@ -242,7 +283,13 @@
           );
         }
         var p = prefetchProp !== false;
-        var router = (0, _router1).useRouter();
+        var router = _react.default.useContext(_routerContext.RouterContext);
+        var appRouter = _react.default.useContext(
+          _appRouterContext.AppRouterContext
+        );
+        if (appRouter) {
+          router = appRouter;
+        }
         var ref2 = _react.default.useMemo(
             function() {
               var ref = _slicedToArray(
@@ -378,16 +425,16 @@
           var localeDomain =
             router &&
             router.isLocaleDomain &&
-            (0, _router).getDomainLocale(
+            (0, _getDomainLocale).getDomainLocale(
               as,
               curLocale1,
-              router && router.locales,
-              router && router.domainLocales
+              router.locales,
+              router.domainLocales
             );
           childProps.href =
             localeDomain ||
-            (0, _router).addBasePath(
-              (0, _router).addLocale(
+            (0, _addBasePath).addBasePath(
+              (0, _addLocale).addLocale(
                 as,
                 curLocale1,
                 router && router.defaultLocale
@@ -405,9 +452,13 @@
       var _default = Link;
       exports["default"] = _default;
       if (
-        typeof exports.default === "function" ||
-        (typeof exports.default === "object" && exports.default !== null)
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
       ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true
+        });
         Object.assign(exports.default, exports);
         module.exports = exports.default;
       } //# sourceMappingURL=link.js.map
@@ -415,7 +466,7 @@
       /***/
     },
 
-    /***/ 6363: /***/ function(module, exports, __webpack_require__) {
+    /***/ 1311: /***/ function(module, exports, __webpack_require__) {
       "use strict";
 
       function _arrayLikeToArray(arr, len) {
@@ -484,7 +535,7 @@
       });
       exports.useIntersection = useIntersection;
       var _react = __webpack_require__(9496);
-      var _requestIdleCallback = __webpack_require__(7808);
+      var _requestIdleCallback = __webpack_require__(7307);
       var hasIntersectionObserver = typeof IntersectionObserver !== "undefined";
       function useIntersection(param) {
         var rootRef = param.rootRef,
@@ -616,9 +667,13 @@
         return instance;
       }
       if (
-        typeof exports.default === "function" ||
-        (typeof exports.default === "object" && exports.default !== null)
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
       ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true
+        });
         Object.assign(exports.default, exports);
         module.exports = exports.default;
       } //# sourceMappingURL=use-intersection.js.map
@@ -626,7 +681,34 @@
       /***/
     },
 
-    /***/ 3122: /***/ function(
+    /***/ 2587: /***/ function(
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true
+      });
+      exports.AppRouterContext = void 0;
+      var _react = _interopRequireDefault(__webpack_require__(9496));
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+      var AppRouterContext = _react.default.createContext(null);
+      exports.AppRouterContext = AppRouterContext;
+      if (false) {
+      } //# sourceMappingURL=app-router-context.js.map
+
+      /***/
+    },
+
+    /***/ 7178: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -643,7 +725,7 @@
         4637
       );
       /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        8168
+        8728
       );
       /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(
         next_link__WEBPACK_IMPORTED_MODULE_1__
@@ -674,12 +756,12 @@
       /***/
     },
 
-    /***/ 8168: /***/ function(
+    /***/ 8728: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(7160);
+      module.exports = __webpack_require__(3952);
 
       /***/
     }
@@ -690,7 +772,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function() {
-      return __webpack_exec__(2783);
+      return __webpack_exec__(9367);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for routerDirect-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [58],
   {
-    /***/ 5863: /***/ function(
+    /***/ 4538: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/routerDirect",
         function() {
-          return __webpack_require__(2550);
+          return __webpack_require__(8080);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 2550: /***/ function(
+    /***/ 8080: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -35,7 +35,7 @@
         4637
       );
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        9393
+        7084
       );
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(
         next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -57,12 +57,12 @@
       /***/
     },
 
-    /***/ 9393: /***/ function(
+    /***/ 7084: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(7465);
+      module.exports = __webpack_require__(1905);
 
       /***/
     }
@@ -73,7 +73,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function() {
-      return __webpack_exec__(5863);
+      return __webpack_exec__(4538);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for script-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [797],
   {
-    /***/ 581: /***/ function(
+    /***/ 2644: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/script",
         function() {
-          return __webpack_require__(6436);
+          return __webpack_require__(9689);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 6436: /***/ function(
+    /***/ 9689: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -35,7 +35,7 @@
         4637
       );
       /* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        2311
+        7635
       );
       /* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(
         next_script__WEBPACK_IMPORTED_MODULE_1__
@@ -70,12 +70,12 @@
       /***/
     },
 
-    /***/ 2311: /***/ function(
+    /***/ 7635: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(5031);
+      module.exports = __webpack_require__(736);
 
       /***/
     }
@@ -86,7 +86,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function() {
-      return __webpack_exec__(581);
+      return __webpack_exec__(2644);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for withRouter-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [807],
   {
-    /***/ 4573: /***/ function(
+    /***/ 5577: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/withRouter",
         function() {
-          return __webpack_require__(5526);
+          return __webpack_require__(237);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 5526: /***/ function(
+    /***/ 237: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -35,7 +35,7 @@
         4637
       );
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        9393
+        7084
       );
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(
         next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -54,12 +54,12 @@
       /***/
     },
 
-    /***/ 9393: /***/ function(
+    /***/ 7084: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(7465);
+      module.exports = __webpack_require__(1905);
 
       /***/
     }
@@ -70,7 +70,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function() {
-      return __webpack_exec__(4573);
+      return __webpack_exec__(5577);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for 437.HASH.js
@@ -1,8 +1,8 @@
 "use strict";
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
-  [437],
+  [181],
   {
-    /***/ 7437: /***/ function(
+    /***/ 1181: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
Diff for framework-HASH.js
@@ -19,7 +19,7 @@
  Modernizr 3.0.0pre (Custom Build) | MIT
 */
       var aa = __webpack_require__(9496),
-        m = __webpack_require__(9260),
+        m = __webpack_require__(2048),
         r = __webpack_require__(8051);
       function y(a) {
         for (
@@ -7895,7 +7895,7 @@
        * This source code is licensed under the MIT license found in the
        * LICENSE file in the root directory of this source tree.
        */
-      __webpack_require__(9260);
+      __webpack_require__(2048);
       var f = __webpack_require__(9496),
         g = 60103;
       exports.Fragment = 60107;
@@ -7948,7 +7948,7 @@
        * This source code is licensed under the MIT license found in the
        * LICENSE file in the root directory of this source tree.
        */
-      var l = __webpack_require__(9260),
+      var l = __webpack_require__(2048),
         n = 60103,
         p = 60106;
       exports.Fragment = 60107;
Diff for main-HASH.js

Diff too large to display

Diff for polyfills-HASH.js

Diff too large to display

Diff for webpack-HASH.js
@@ -159,7 +159,7 @@
     /******/ __webpack_require__.u = function(chunkId) {
       /******/ // return url for filenames based on template
       /******/ return (
-        "static/chunks/" + chunkId + "." + "b72a55e4a5d30197" + ".js"
+        "static/chunks/" + chunkId + "." + "040ce93ea5ad99f5" + ".js"
       );
       /******/
     };
@@ -227,7 +227,7 @@
           /******/
         }
         /******/ script.setAttribute("data-webpack", dataWebpackPrefix + key);
-        /******/ script.src = url;
+        /******/ script.src = __webpack_require__.tu(url);
         /******/
       }
       /******/ inProgress[url] = [done];
@@ -274,6 +274,41 @@
       /******/
     };
     /******/
+  })(); /* webpack/runtime/trusted types policy */
+  /******/
+
+  /******/ /******/ !(function() {
+    /******/ var policy;
+    /******/ __webpack_require__.tt = function() {
+      /******/ // Create Trusted Type policy if Trusted Types are available and the policy doesn't exist yet.
+      /******/ if (policy === undefined) {
+        /******/ policy = {
+          /******/ createScriptURL: function(url) {
+            return url;
+          }
+          /******/
+        };
+        /******/ if (
+          typeof trustedTypes !== "undefined" &&
+          trustedTypes.createPolicy
+        ) {
+          /******/ policy = trustedTypes.createPolicy("nextjs#bundler", policy);
+          /******/
+        }
+        /******/
+      }
+      /******/ return policy;
+      /******/
+    };
+    /******/
+  })(); /* webpack/runtime/trusted types script url */
+  /******/
+
+  /******/ /******/ !(function() {
+    /******/ __webpack_require__.tu = function(url) {
+      return __webpack_require__.tt().createScriptURL(url);
+    };
+    /******/
   })(); /* webpack/runtime/publicPath */
   /******/
Diff for index.html
@@ -8,26 +8,26 @@
     <script
       defer=""
       nomodule=""
-      src="/_next/static/chunks/polyfills-5cd94c89d3acac5f.js"
+      src="/_next/static/chunks/polyfills-0d1b80a048d4787e.js"
     ></script>
     <script
-      src="/_next/static/chunks/webpack-9302553dec9dd6bd.js"
+      src="/_next/static/chunks/webpack-61aca3a754613535.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/framework-8755e6e713f733ae.js"
+      src="/_next/static/chunks/framework-044d557c64574856.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-785a6ec3072fda78.js"
+      src="/_next/static/chunks/main-105f6bcb89deb73a.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/_app-794663ada552fbca.js"
+      src="/_next/static/chunks/pages/_app-0f0eb226e227af04.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/index-5d085461d4b7e1ee.js"
+      src="/_next/static/chunks/pages/index-71b39a0d29d24c94.js"
       defer=""
     ></script>
     <script src="/_next/static/BUILD_ID/_buildManifest.js" defer=""></script>
Diff for link.html
@@ -8,26 +8,26 @@
     <script
       defer=""
       nomodule=""
-      src="/_next/static/chunks/polyfills-5cd94c89d3acac5f.js"
+      src="/_next/static/chunks/polyfills-0d1b80a048d4787e.js"
     ></script>
     <script
-      src="/_next/static/chunks/webpack-9302553dec9dd6bd.js"
+      src="/_next/static/chunks/webpack-61aca3a754613535.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/framework-8755e6e713f733ae.js"
+      src="/_next/static/chunks/framework-044d557c64574856.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-785a6ec3072fda78.js"
+      src="/_next/static/chunks/main-105f6bcb89deb73a.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/_app-794663ada552fbca.js"
+      src="/_next/static/chunks/pages/_app-0f0eb226e227af04.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/link-5581225b2bbff8ba.js"
+      src="/_next/static/chunks/pages/link-64306f3c6f33cf81.js"
       defer=""
     ></script>
     <script src="/_next/static/BUILD_ID/_buildManifest.js" defer=""></script>
Diff for withRouter.html
@@ -8,26 +8,26 @@
     <script
       defer=""
       nomodule=""
-      src="/_next/static/chunks/polyfills-5cd94c89d3acac5f.js"
+      src="/_next/static/chunks/polyfills-0d1b80a048d4787e.js"
     ></script>
     <script
-      src="/_next/static/chunks/webpack-9302553dec9dd6bd.js"
+      src="/_next/static/chunks/webpack-61aca3a754613535.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/framework-8755e6e713f733ae.js"
+      src="/_next/static/chunks/framework-044d557c64574856.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-785a6ec3072fda78.js"
+      src="/_next/static/chunks/main-105f6bcb89deb73a.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/_app-794663ada552fbca.js"
+      src="/_next/static/chunks/pages/_app-0f0eb226e227af04.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/withRouter-8b03818d0ed540a0.js"
+      src="/_next/static/chunks/pages/withRouter-fb06f1f34bce84ca.js"
       defer=""
     ></script>
     <script src="/_next/static/BUILD_ID/_buildManifest.js" defer=""></script>

Default Build with SWC (Increase detected ⚠️)
General Overall decrease ✓
vercel/next.js canary v12.1.6 vercel/next.js refs/heads/canary Change
buildDuration 13s 13.8s ⚠️ +818ms
buildDurationCached 6.8s 6.9s ⚠️ +172ms
nodeModulesSize 274 MB 260 MB -14.8 MB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary v12.1.6 vercel/next.js refs/heads/canary Change
/ failed reqs 0 0
/ total time (seconds) 3.719 4.122 ⚠️ +0.4
/ avg req/sec 672.17 606.51 ⚠️ -65.66
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.403 1.411 ⚠️ +0.01
/error-in-render avg req/sec 1782.5 1772.18 ⚠️ -10.32
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canary v12.1.6 vercel/next.js refs/heads/canary Change
437.HASH.js gzip 178 B 178 B
framework-HASH.js gzip 42.7 kB 42.7 kB
main-HASH.js gzip 29.2 kB 30.3 kB ⚠️ +1.11 kB
webpack-HASH.js gzip 1.45 kB 1.54 kB ⚠️ +95 B
Overall change 73.5 kB 74.7 kB ⚠️ +1.2 kB
Legacy Client Bundles (polyfills) Overall increase ⚠️
vercel/next.js canary v12.1.6 vercel/next.js refs/heads/canary Change
polyfills-HASH.js gzip 31 kB 31 kB ⚠️ +25 B
Overall change 31 kB 31 kB ⚠️ +25 B
Client Pages Overall decrease ✓
vercel/next.js canary v12.1.6 vercel/next.js refs/heads/canary Change
_app-HASH.js gzip 1.35 kB 1.35 kB -2 B
_error-HASH.js gzip 180 B 181 B ⚠️ +1 B
amp-HASH.js gzip 307 B 309 B ⚠️ +2 B
css-HASH.js gzip 326 B 325 B -1 B
dynamic-HASH.js gzip 3.27 kB 2.9 kB -373 B
head-HASH.js gzip 358 B 357 B -1 B
hooks-HASH.js gzip 920 B 919 B -1 B
image-HASH.js gzip 5.77 kB 5.83 kB ⚠️ +66 B
index-HASH.js gzip 262 B 262 B
link-HASH.js gzip 2.77 kB 2.93 kB ⚠️ +162 B
routerDirect..HASH.js gzip 323 B 321 B -2 B
script-HASH.js gzip 393 B 392 B -1 B
withRouter-HASH.js gzip 319 B 317 B -2 B
85e02e95b279..7e3.css gzip 107 B 107 B
Overall change 16.7 kB 16.5 kB -152 B
Client Build Manifests Overall decrease ✓
vercel/next.js canary v12.1.6 vercel/next.js refs/heads/canary Change
_buildManifest.js gzip 459 B 458 B -1 B
Overall change 459 B 458 B -1 B
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary v12.1.6 vercel/next.js refs/heads/canary Change
index.html gzip 529 B 534 B ⚠️ +5 B
link.html gzip 543 B 546 B ⚠️ +3 B
withRouter.html gzip 525 B 528 B ⚠️ +3 B
Overall change 1.6 kB 1.61 kB ⚠️ +11 B

Diffs

Diff for _buildManifest.js
@@ -1,25 +1,25 @@
 self.__BUILD_MANIFEST = {
   __rewrites: { beforeFiles: [], afterFiles: [], fallback: [] },
-  "/": ["static\u002Fchunks\u002Fpages\u002Findex-5d085461d4b7e1ee.js"],
-  "/_error": ["static\u002Fchunks\u002Fpages\u002F_error-48e41d26ff0101f8.js"],
-  "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-a67fe6de8bb61a7a.js"],
+  "/": ["static\u002Fchunks\u002Fpages\u002Findex-71b39a0d29d24c94.js"],
+  "/_error": ["static\u002Fchunks\u002Fpages\u002F_error-f7a25bc135f661fc.js"],
+  "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-ade8b541ba69808a.js"],
   "/css": [
     "static\u002Fcss\u002F94fdbc56eafa2039.css",
-    "static\u002Fchunks\u002Fpages\u002Fcss-6d59dba2fd31bfed.js"
+    "static\u002Fchunks\u002Fpages\u002Fcss-a95e3bc2c5ca8245.js"
   ],
   "/dynamic": [
-    "static\u002Fchunks\u002Fpages\u002Fdynamic-20b15c1c47d4d615.js"
+    "static\u002Fchunks\u002Fpages\u002Fdynamic-672cb693b0ca9d7e.js"
   ],
-  "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-6ece0649d14938b8.js"],
-  "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-e3382ebb932b5bfb.js"],
-  "/image": ["static\u002Fchunks\u002Fpages\u002Fimage-19409da39fdaf4f2.js"],
-  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-5581225b2bbff8ba.js"],
+  "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-e2b7857f2aa86120.js"],
+  "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-a5d0da0f39070d96.js"],
+  "/image": ["static\u002Fchunks\u002Fpages\u002Fimage-a032795453eaeab0.js"],
+  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-64306f3c6f33cf81.js"],
   "/routerDirect": [
-    "static\u002Fchunks\u002Fpages\u002FrouterDirect-9669d5861da5e10b.js"
+    "static\u002Fchunks\u002Fpages\u002FrouterDirect-c2408dd9a1984376.js"
   ],
-  "/script": ["static\u002Fchunks\u002Fpages\u002Fscript-c439c95569fb9033.js"],
+  "/script": ["static\u002Fchunks\u002Fpages\u002Fscript-f309dfc4eea310f4.js"],
   "/withRouter": [
-    "static\u002Fchunks\u002Fpages\u002FwithRouter-8b03818d0ed540a0.js"
+    "static\u002Fchunks\u002Fpages\u002FwithRouter-fb06f1f34bce84ca.js"
   ],
   sortedPages: [
     "\u002F",
Diff for _app-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [888],
   {
-    /***/ 3479: /***/ function(
+    /***/ 122: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/_app",
         function() {
-          return __webpack_require__(3653);
+          return __webpack_require__(539);
         }
       ]);
       if (false) {
@@ -18,14 +18,14 @@
       /***/
     },
 
-    /***/ 3653: /***/ function(
+    /***/ 539: /***/ function(
       __unused_webpack_module,
       exports,
       __webpack_require__
     ) {
       "use strict";
 
-      var _runtimeJs = _interopRequireDefault(__webpack_require__(739));
+      var _runtimeJs = _interopRequireDefault(__webpack_require__(3994));
       function _assertThisInitialized(self) {
         if (self === void 0) {
           throw new ReferenceError(
@@ -153,7 +153,7 @@
       });
       exports["default"] = void 0;
       var _react = _interopRequireDefault1(__webpack_require__(9496));
-      var _utils = __webpack_require__(8030);
+      var _utils = __webpack_require__(9089);
       function asyncGeneratorStep(
         gen,
         resolve,
@@ -282,7 +282,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 179], function() {
-      return __webpack_exec__(3479), __webpack_exec__(7465);
+      return __webpack_exec__(122), __webpack_exec__(1905);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for _error-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [820],
   {
-    /***/ 2929: /***/ function(
+    /***/ 3560: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/_error",
         function() {
-          return __webpack_require__(5590);
+          return __webpack_require__(9733);
         }
       ]);
       if (false) {
@@ -24,7 +24,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 774, 179], function() {
-      return __webpack_exec__(2929);
+      return __webpack_exec__(3560);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for amp-HASH.js
@@ -1,17 +1,17 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [216],
   {
-    /***/ 94: /***/ function(
+    /***/ 7941: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(4634);
+      module.exports = __webpack_require__(79);
 
       /***/
     },
 
-    /***/ 9028: /***/ function(
+    /***/ 8958: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -19,7 +19,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/amp",
         function() {
-          return __webpack_require__(4628);
+          return __webpack_require__(6534);
         }
       ]);
       if (false) {
@@ -28,7 +28,7 @@
       /***/
     },
 
-    /***/ 4628: /***/ function(
+    /***/ 6534: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -45,7 +45,7 @@
         /* harmony export */
       });
       /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
-        94
+        7941
       );
       /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(
         next_amp__WEBPACK_IMPORTED_MODULE_0__
@@ -69,7 +69,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 774, 179], function() {
-      return __webpack_exec__(9028);
+      return __webpack_exec__(8958);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for css-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [706],
   {
-    /***/ 8281: /***/ function(
+    /***/ 9557: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/css",
         function() {
-          return __webpack_require__(1949);
+          return __webpack_require__(4173);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 1949: /***/ function(
+    /***/ 4173: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -29,7 +29,7 @@
         4637
       );
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        1099
+        2467
       );
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(
         _css_module_css__WEBPACK_IMPORTED_MODULE_1__
@@ -48,7 +48,7 @@
       /***/
     },
 
-    /***/ 1099: /***/ function(module) {
+    /***/ 2467: /***/ function(module) {
       // extracted by mini-css-extract-plugin
       module.exports = { helloWorld: "css_helloWorld__qqNwY" };
 
@@ -61,7 +61,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function() {
-      return __webpack_exec__(8281);
+      return __webpack_exec__(9557);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for dynamic-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [739],
   {
-    /***/ 2744: /***/ function(
+    /***/ 5695: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/dynamic",
         function() {
-          return __webpack_require__(1697);
+          return __webpack_require__(7800);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 1926: /***/ function(module, exports, __webpack_require__) {
+    /***/ 7164: /***/ function(module, exports, __webpack_require__) {
       "use strict";
 
       function _defineProperty(obj, key, value) {
@@ -68,7 +68,7 @@
       exports["default"] = dynamic;
       exports.noSSR = noSSR;
       var _react = _interopRequireDefault(__webpack_require__(9496));
-      var _loadable = _interopRequireDefault(__webpack_require__(4596));
+      var _loadable = _interopRequireDefault(__webpack_require__(4398));
       function dynamic(dynamicOptions, options) {
         var loadableFn = _loadable.default;
         var loadableOptions = {
@@ -100,16 +100,12 @@
         }
         // Support for passing options, eg: dynamic(import('../hello-world'), {loading: () => <p>Loading something</p>})
         loadableOptions = _objectSpread({}, loadableOptions, options);
-        var suspenseOptions = loadableOptions;
         // Error if Fizz rendering is not enabled and `suspense` option is set to true
-        if (true && suspenseOptions.suspense) {
+        if (true && loadableOptions.suspense) {
           throw new Error(
             "Invalid suspense option usage in next/dynamic. Read more: https://nextjs.org/docs/messages/invalid-dynamic-suspense"
           );
         }
-        if (suspenseOptions.suspense) {
-          return loadableFn(suspenseOptions);
-        }
         // coming from build/babel/plugins/react-loadable-plugin.js
         if (loadableOptions.loadableGenerated) {
           loadableOptions = _objectSpread(
@@ -119,8 +115,12 @@
           );
           delete loadableOptions.loadableGenerated;
         }
-        // support for disabling server side rendering, eg: dynamic(import('../hello-world'), {ssr: false})
-        if (typeof loadableOptions.ssr === "boolean") {
+        // support for disabling server side rendering, eg: dynamic(import('../hello-world'), {ssr: false}).
+        // skip `ssr` for suspense mode and opt-in React.lazy directly
+        if (
+          typeof loadableOptions.ssr === "boolean" &&
+          !loadableOptions.suspense
+        ) {
           if (!loadableOptions.ssr) {
             delete loadableOptions.ssr;
             return noSSR(loadableFn, loadableOptions);
@@ -157,9 +157,13 @@
         };
       }
       if (
-        typeof exports.default === "function" ||
-        (typeof exports.default === "object" && exports.default !== null)
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
       ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true
+        });
         Object.assign(exports.default, exports);
         module.exports = exports.default;
       } //# sourceMappingURL=dynamic.js.map
@@ -167,7 +171,7 @@
       /***/
     },
 
-    /***/ 7063: /***/ function(
+    /***/ 7484: /***/ function(
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -194,7 +198,7 @@
       /***/
     },
 
-    /***/ 4596: /***/ function(
+    /***/ 4398: /***/ function(
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -255,8 +259,7 @@
       });
       exports["default"] = void 0;
       var _react = _interopRequireDefault(__webpack_require__(9496));
-      var _useSubscription = __webpack_require__(1181);
-      var _loadableContext = __webpack_require__(7063);
+      var _loadableContext = __webpack_require__(7484);
       function _interopRequireDefault(obj) {
         return obj && obj.__esModule
           ? obj
@@ -264,6 +267,8 @@
               default: obj
             };
       }
+      var useSyncExternalStore = (false ? 0 : __webpack_require__(9155))
+        .useSyncExternalStore;
       var ALL_INITIALIZERS = [];
       var READY_INITIALIZERS = [];
       var initialized = false;
@@ -303,12 +308,24 @@
           }
           return subscription.promise();
         };
-        var LoadableImpl = function LoadableImpl(props, ref) {
+        var useLoadableModule = function useLoadableModule() {
           init();
           var context = _react.default.useContext(
             _loadableContext.LoadableContext
           );
-          var state = (0, _useSubscription).useSubscription(subscription);
+          if (context && Array.isArray(opts.modules)) {
+            opts.modules.forEach(function(moduleName) {
+              context(moduleName);
+            });
+          }
+        };
+        var LoadableImpl = function LoadableImpl(props, ref) {
+          useLoadableModule();
+          var state = useSyncExternalStore(
+            subscription.subscribe,
+            subscription.getCurrentValue,
+            subscription.getCurrentValue
+          );
           _react.default.useImperativeHandle(
             ref,
             function() {
@@ -318,11 +335,6 @@
             },
             []
           );
-          if (context && Array.isArray(opts.modules)) {
-            opts.modules.forEach(function(moduleName) {
-              context(moduleName);
-            });
-          }
           return _react.default.useMemo(
             function() {
               if (state.loading || state.error) {
@@ -346,6 +358,7 @@
           );
         };
         var LazyImpl = function LazyImpl(props, ref) {
+          useLoadableModule();
           return _react.default.createElement(
             opts.lazy,
             _objectSpread({}, props, {
@@ -368,12 +381,12 @@
         if (opts.suspense) {
           opts.lazy = _react.default.lazy(opts.loader);
         }
-        var subscription = null;
+        /** @type LoadableSubscription */ var subscription = null;
         // Server only
         if (false) {
         }
         // Client only
-        if (!initialized && "object" !== "undefined" && !opts.suspense) {
+        if (!initialized && "object" !== "undefined") {
           // require.resolveWeak check is needed for environments that don't have it available like Jest
           var moduleIds =
             opts.webpack && "function" === "function"
@@ -415,7 +428,7 @@
         }
         var LoadableComponent = opts.suspense ? LazyImpl : LoadableImpl;
         LoadableComponent.preload = function() {
-          return !opts.suspense && init();
+          return init();
         };
         LoadableComponent.displayName = "LoadableComponent";
         return _react.default.forwardRef(LoadableComponent);
@@ -569,7 +582,7 @@
       /***/
     },
 
-    /***/ 1697: /***/ function(
+    /***/ 7800: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -586,7 +599,7 @@
         4637
       );
       /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        1605
+        2123
       );
       /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(
         next_dynamic__WEBPACK_IMPORTED_MODULE_1__
@@ -595,13 +608,13 @@
       var DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
         function() {
           return __webpack_require__
-            .e(/* import() */ 437)
-            .then(__webpack_require__.bind(__webpack_require__, 7437));
+            .e(/* import() */ 181)
+            .then(__webpack_require__.bind(__webpack_require__, 1181));
         },
         {
           loadableGenerated: {
             webpack: function() {
-              return [/*require.resolve*/ 7437];
+              return [/*require.resolve*/ 1181];
             }
           }
         }
@@ -631,195 +644,103 @@
       /***/
     },
 
-    /***/ 1181: /***/ function(
+    /***/ 2123: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      var __dirname = "/";
-      (function() {
-        "use strict";
-        var e = {
-          800: function(e) {
-            /*
-object-assign
-(c) Sindre Sorhus
-@license MIT
-*/
-            var r = Object.getOwnPropertySymbols;
-            var t = Object.prototype.hasOwnProperty;
-            var u = Object.prototype.propertyIsEnumerable;
-            function toObject(e) {
-              if (e === null || e === undefined) {
-                throw new TypeError(
-                  "Object.assign cannot be called with null or undefined"
-                );
-              }
-              return Object(e);
-            }
-            function shouldUseNative() {
-              try {
-                if (!Object.assign) {
-                  return false;
-                }
-                var e = new String("abc");
-                e[5] = "de";
-                if (Object.getOwnPropertyNames(e)[0] === "5") {
-                  return false;
-                }
-                var r = {};
-                for (var t = 0; t < 10; t++) {
-                  r["_" + String.fromCharCode(t)] = t;
-                }
-                var u = Object.getOwnPropertyNames(r).map(function(e) {
-                  return r[e];
-                });
-                if (u.join("") !== "0123456789") {
-                  return false;
-                }
-                var n = {};
-                "abcdefghijklmnopqrst".split("").forEach(function(e) {
-                  n[e] = e;
-                });
-                if (
-                  Object.keys(Object.assign({}, n)).join("") !==
-                  "abcdefghijklmnopqrst"
-                ) {
-                  return false;
-                }
-                return true;
-              } catch (e) {
-                return false;
-              }
-            }
-            e.exports = shouldUseNative()
-              ? Object.assign
-              : function(e, n) {
-                  var a;
-                  var i = toObject(e);
-                  var s;
-                  for (var c = 1; c < arguments.length; c++) {
-                    a = Object(arguments[c]);
-                    for (var o in a) {
-                      if (t.call(a, o)) {
-                        i[o] = a[o];
-                      }
-                    }
-                    if (r) {
-                      s = r(a);
-                      for (var f = 0; f < s.length; f++) {
-                        if (u.call(a, s[f])) {
-                          i[s[f]] = a[s[f]];
-                        }
-                      }
-                    }
-                  }
-                  return i;
-                };
-          },
-          569: function(e, r, t) {
-            /** @license React vundefined
-             * use-subscription.development.js
-             *
-             * Copyright (c) Facebook, Inc. and its affiliates.
-             *
-             * This source code is licensed under the MIT license found in the
-             * LICENSE file in the root directory of this source tree.
-             */
-            if (false) {
-            }
-          },
-          403: function(e, r, t) {
-            /** @license React vundefined
-             * use-subscription.production.min.js
-             *
-             * Copyright (c) Facebook, Inc. and its affiliates.
-             *
-             * This source code is licensed under the MIT license found in the
-             * LICENSE file in the root directory of this source tree.
-             */
-            var u = t(800),
-              n = t(522);
-            r.useSubscription = function(e) {
-              var r = e.getCurrentValue,
-                t = e.subscribe,
-                a = n.useState(function() {
-                  return { getCurrentValue: r, subscribe: t, value: r() };
-                });
-              e = a[0];
-              var i = a[1];
-              a = e.value;
-              if (e.getCurrentValue !== r || e.subscribe !== t)
-                (a = r()), i({ getCurrentValue: r, subscribe: t, value: a });
-              n.useDebugValue(a);
-              n.useEffect(
-                function() {
-                  function b() {
-                    if (!e) {
-                      var n = r();
-                      i(function(e) {
-                        return e.getCurrentValue !== r ||
-                          e.subscribe !== t ||
-                          e.value === n
-                          ? e
-                          : u({}, e, { value: n });
-                      });
-                    }
-                  }
-                  var e = !1,
-                    n = t(b);
-                  b();
-                  return function() {
-                    e = !0;
-                    n();
-                  };
-                },
-                [r, t]
-              );
-              return a;
-            };
+      module.exports = __webpack_require__(7164);
+
+      /***/
+    },
+
+    /***/ 9364: /***/ function(
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) {
+      "use strict";
+      /**
+       * @license React
+       * use-sync-external-store-shim.production.min.js
+       *
+       * Copyright (c) Facebook, Inc. and its affiliates.
+       *
+       * This source code is licensed under the MIT license found in the
+       * LICENSE file in the root directory of this source tree.
+       */
+      var e = __webpack_require__(9496);
+      function h(a, b) {
+        return (
+          (a === b && (0 !== a || 1 / a === 1 / b)) || (a !== a && b !== b)
+        );
+      }
+      var k = "function" === typeof Object.is ? Object.is : h,
+        l = e.useState,
+        m = e.useEffect,
+        n = e.useLayoutEffect,
+        p = e.useDebugValue;
+      function q(a, b) {
+        var d = b(),
+          f = l({ inst: { value: d, getSnapshot: b } }),
+          c = f[0].inst,
+          g = f[1];
+        n(
+          function() {
+            c.value = d;
+            c.getSnapshot = b;
+            r(c) && g({ inst: c });
           },
-          138: function(e, r, t) {
-            if (true) {
-              e.exports = t(403);
-            } else {
-            }
+          [a, d, b]
+        );
+        m(
+          function() {
+            r(c) && g({ inst: c });
+            return a(function() {
+              r(c) && g({ inst: c });
+            });
           },
-          522: function(e) {
-            e.exports = __webpack_require__(9496);
-          }
-        };
-        var r = {};
-        function __nccwpck_require__(t) {
-          var u = r[t];
-          if (u !== undefined) {
-            return u.exports;
-          }
-          var n = (r[t] = { exports: {} });
-          var a = true;
-          try {
-            e[t](n, n.exports, __nccwpck_require__);
-            a = false;
-          } finally {
-            if (a) delete r[t];
-          }
-          return n.exports;
+          [a]
+        );
+        p(d);
+        return d;
+      }
+      function r(a) {
+        var b = a.getSnapshot;
+        a = a.value;
+        try {
+          var d = b();
+          return !k(a, d);
+        } catch (f) {
+          return !0;
         }
-        if (typeof __nccwpck_require__ !== "undefined")
-          __nccwpck_require__.ab = __dirname + "/";
-        var t = __nccwpck_require__(138);
-        module.exports = t;
-      })();
+      }
+      function t(a, b) {
+        return b();
+      }
+      var u =
+        "undefined" === typeof window ||
+        "undefined" === typeof window.document ||
+        "undefined" === typeof window.document.createElement
+          ? t
+          : q;
+      exports.useSyncExternalStore =
+        void 0 !== e.useSyncExternalStore ? e.useSyncExternalStore : u;
 
       /***/
     },
 
-    /***/ 1605: /***/ function(
+    /***/ 9155: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(1926);
+      "use strict";
+
+      if (true) {
+        module.exports = __webpack_require__(9364);
+      } else {
+      }
 
       /***/
     }
@@ -830,7 +751,7 @@ object-assign
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function() {
-      return __webpack_exec__(2744);
+      return __webpack_exec__(5695);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for head-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [645],
   {
-    /***/ 4337: /***/ function(
+    /***/ 7148: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/head",
         function() {
-          return __webpack_require__(848);
+          return __webpack_require__(6179);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 848: /***/ function(
+    /***/ 6179: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -35,7 +35,7 @@
         4637
       );
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        8915
+        4616
       );
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(
         next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -71,12 +71,12 @@
       /***/
     },
 
-    /***/ 8915: /***/ function(
+    /***/ 4616: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(4828);
+      module.exports = __webpack_require__(5222);
 
       /***/
     }
@@ -87,7 +87,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function() {
-      return __webpack_exec__(4337);
+      return __webpack_exec__(7148);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for hooks-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [757],
   {
-    /***/ 4853: /***/ function(
+    /***/ 3515: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/hooks",
         function() {
-          return __webpack_require__(7084);
+          return __webpack_require__(856);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 7084: /***/ function(
+    /***/ 856: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -158,7 +158,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function() {
-      return __webpack_exec__(4853);
+      return __webpack_exec__(3515);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for image-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [358],
   {
-    /***/ 7570: /***/ function(
+    /***/ 1487: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/image",
         function() {
-          return __webpack_require__(3918);
+          return __webpack_require__(2330);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 2185: /***/ function(module, exports, __webpack_require__) {
+    /***/ 5239: /***/ function(module, exports, __webpack_require__) {
       "use strict";
 
       function _arrayLikeToArray(arr, len) {
@@ -123,12 +123,12 @@
       });
       exports["default"] = Image;
       var _react = _interopRequireWildcard(__webpack_require__(9496));
-      var _head = _interopRequireDefault(__webpack_require__(4828));
-      var _imageConfig = __webpack_require__(2204);
-      var _useIntersection = __webpack_require__(6363);
-      var _imageConfigContext = __webpack_require__(1958);
-      var _utils = __webpack_require__(8030);
-      var _normalizeTrailingSlash = __webpack_require__(1872);
+      var _head = _interopRequireDefault(__webpack_require__(5222));
+      var _imageConfig = __webpack_require__(5466);
+      var _useIntersection = __webpack_require__(1311);
+      var _imageConfigContext = __webpack_require__(1801);
+      var _utils = __webpack_require__(9089);
+      var _normalizeTrailingSlash = __webpack_require__(2800);
       function Image(_param) {
         var src = _param.src,
           sizes = _param.sizes,
@@ -139,8 +139,7 @@
           loading = _param.loading,
           _lazyRoot = _param.lazyRoot,
           lazyRoot = _lazyRoot === void 0 ? null : _lazyRoot,
-          _lazyBoundary = _param.lazyBoundary,
-          lazyBoundary = _lazyBoundary === void 0 ? "200px" : _lazyBoundary,
+          lazyBoundary = _param.lazyBoundary,
           className = _param.className,
           quality = _param.quality,
           width = _param.width,
@@ -263,7 +262,7 @@
         var ref1 = _slicedToArray(
             (0, _useIntersection).useIntersection({
               rootRef: lazyRoot,
-              rootMargin: lazyBoundary,
+              rootMargin: lazyBoundary || "200px",
               disabled: !isLazy
             }),
             3
@@ -271,7 +270,7 @@
           setIntersection = ref1[0],
           isIntersected = ref1[1],
           resetIntersected = ref1[2];
-        var isVisible = !isLazy || isIntersected;
+        var isVisible = !isLazy || isIntersected || layout === "raw";
         var wrapperStyle = {
           boxSizing: "border-box",
           display: "block",
@@ -450,7 +449,8 @@
             onLoadingCompleteRef: onLoadingCompleteRef,
             setBlurComplete: setBlurComplete,
             setIntersection: setIntersection,
-            isVisible: isVisible
+            isVisible: isVisible,
+            noscriptSizes: sizes
           },
           rest
         );
@@ -619,17 +619,22 @@
         }
         return target;
       }
-      var ref;
-      var experimentalLayoutRaw =
-        (ref = {
-          deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
-          imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
-          path: "/_next/image",
-          loader: "default",
-          experimentalLayoutRaw: false
-        }) === null || ref === void 0
-          ? void 0
-          : ref.experimentalLayoutRaw;
+      var ref =
+          {
+            deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
+            imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
+            path: "/_next/image",
+            loader: "default",
+            experimentalLayoutRaw: false
+          } || {},
+        _experimentalLayoutRaw = ref.experimentalLayoutRaw,
+        experimentalLayoutRaw =
+          _experimentalLayoutRaw === void 0 ? false : _experimentalLayoutRaw,
+        _experimentalRemotePatterns = ref.experimentalRemotePatterns,
+        experimentalRemotePatterns =
+          _experimentalRemotePatterns === void 0
+            ? []
+            : _experimentalRemotePatterns;
       var configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
         imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
@@ -756,9 +761,9 @@
             sizes: undefined
           };
         }
-        var ref3 = getWidths(config, width, layout, sizes),
-          widths = ref3.widths,
-          kind = ref3.kind;
+        var ref4 = getWidths(config, width, layout, sizes),
+          widths = ref4.widths,
+          kind = ref4.kind;
         var last = widths.length - 1;
         return {
           sizes: !sizes && kind === "w" ? "100vw" : sizes,
@@ -802,11 +807,11 @@
         return undefined;
       }
       function defaultImageLoader(loaderProps) {
-        var ref2;
+        var ref5;
         var loaderKey =
-          ((ref2 = loaderProps.config) === null || ref2 === void 0
+          ((ref5 = loaderProps.config) === null || ref5 === void 0
             ? void 0
-            : ref2.loader) || "default";
+            : ref5.loader) || "default";
         var load = loaders.get(loaderKey);
         if (load) {
           return load(loaderProps);
@@ -864,7 +869,7 @@
             });
           }
           if (false) {
-            var parent, widthModified, heightModified, ref3;
+            var parent, widthModified, heightModified, ref6;
           }
         });
       }
@@ -879,7 +884,8 @@
           blurStyle = _param.blurStyle,
           isLazy = _param.isLazy,
           placeholder = _param.placeholder,
-          loading = _param.loading,
+          _loading = _param.loading,
+          loading = _loading === void 0 ? "lazy" : _loading,
           srcString = _param.srcString,
           config = _param.config,
           unoptimized = _param.unoptimized,
@@ -890,6 +896,7 @@
           onLoad = _param.onLoad,
           onError = _param.onError,
           isVisible = _param.isVisible,
+          noscriptSizes = _param.noscriptSizes,
           rest = _objectWithoutProperties(_param, [
             "imgAttributes",
             "heightInt",
@@ -911,7 +918,8 @@
             "setIntersection",
             "onLoad",
             "onError",
-            "isVisible"
+            "isVisible",
+            "noscriptSizes"
           ]);
         return /*#__PURE__*/ _react.default.createElement(
           _react.default.Fragment,
@@ -932,6 +940,8 @@
                 decoding: "async",
                 "data-nimg": layout,
                 className: className,
+                // @ts-ignore - TODO: upgrade to `@types/react@17`
+                loading: layout === "raw" ? loading : undefined,
                 style: _objectSpread({}, imgStyle, blurStyle),
                 ref: (0, _react).useCallback(
                   function(img) {
@@ -1000,7 +1010,7 @@
                     layout: layout,
                     width: widthInt,
                     quality: qualityInt,
-                    sizes: imgAttributes.sizes,
+                    sizes: noscriptSizes,
                     loader: loader
                   }),
                   layout === "raw"
@@ -1015,7 +1025,7 @@
                     style: imgStyle,
                     className: className,
                     // @ts-ignore - TODO: upgrade to `@types/react@17`
-                    loading: loading || "lazy"
+                    loading: loading
                   }
                 )
               )
@@ -1081,7 +1091,7 @@
           width = param.width,
           quality = param.quality;
         if (false) {
-          var parsedSrc, missingValues;
+          var hasMatch, parsedSrc, missingValues;
         }
         if (src.endsWith(".svg") && !config.dangerouslyAllowSVG) {
           // Special case to make svg serve as-is to avoid proxying
@@ -1100,9 +1110,13 @@
           .concat(quality || 75);
       }
       if (
-        typeof exports.default === "function" ||
-        (typeof exports.default === "object" && exports.default !== null)
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
       ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true
+        });
         Object.assign(exports.default, exports);
         module.exports = exports.default;
       } //# sourceMappingURL=image.js.map
@@ -1110,7 +1124,7 @@
       /***/
     },
 
-    /***/ 6363: /***/ function(module, exports, __webpack_require__) {
+    /***/ 1311: /***/ function(module, exports, __webpack_require__) {
       "use strict";
 
       function _arrayLikeToArray(arr, len) {
@@ -1179,7 +1193,7 @@
       });
       exports.useIntersection = useIntersection;
       var _react = __webpack_require__(9496);
-      var _requestIdleCallback = __webpack_require__(7808);
+      var _requestIdleCallback = __webpack_require__(7307);
       var hasIntersectionObserver = typeof IntersectionObserver !== "undefined";
       function useIntersection(param) {
         var rootRef = param.rootRef,
@@ -1311,9 +1325,13 @@
         return instance;
       }
       if (
-        typeof exports.default === "function" ||
-        (typeof exports.default === "object" && exports.default !== null)
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
       ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true
+        });
         Object.assign(exports.default, exports);
         module.exports = exports.default;
       } //# sourceMappingURL=use-intersection.js.map
@@ -1321,7 +1339,7 @@
       /***/
     },
 
-    /***/ 3918: /***/ function(
+    /***/ 2330: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -1342,8 +1360,8 @@
 
       // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/jsx-runtime.js
       var jsx_runtime = __webpack_require__(4637);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+main-repo+packages+next+next-packed.tgz_sfoxds7t5ydpegc3knd667wn6m/node_modules/next/image.js
-      var next_image = __webpack_require__(8114);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/file+..+diff-repo+packages+next+next-packed.tgz_sfoxds7t5ydpegc3knd667wn6m/node_modules/next/image.js
+      var next_image = __webpack_require__(4033);
       var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // CONCATENATED MODULE: ./pages/nextjs.png
       /* harmony default export */ var nextjs = {
         src: "/_next/static/media/nextjs.cae0b805.png",
@@ -1371,12 +1389,12 @@
       /***/
     },
 
-    /***/ 8114: /***/ function(
+    /***/ 4033: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(2185);
+      module.exports = __webpack_require__(5239);
 
       /***/
     }
@@ -1387,7 +1405,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function() {
-      return __webpack_exec__(7570);
+      return __webpack_exec__(1487);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for index-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [405],
   {
-    /***/ 4786: /***/ function(
+    /***/ 6967: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/",
         function() {
-          return __webpack_require__(7245);
+          return __webpack_require__(9257);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 7245: /***/ function(
+    /***/ 9257: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -46,7 +46,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [888, 774, 179], function() {
-      return __webpack_exec__(4786);
+      return __webpack_exec__(6967);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for link-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [644],
   {
-    /***/ 2783: /***/ function(
+    /***/ 9367: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/link",
         function() {
-          return __webpack_require__(3122);
+          return __webpack_require__(7178);
         }
       ]);
       if (false) {
@@ -18,7 +18,43 @@
       /***/
     },
 
-    /***/ 7160: /***/ function(module, exports, __webpack_require__) {
+    /***/ 7280: /***/ function(module, exports) {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true
+      });
+      exports.getDomainLocale = getDomainLocale;
+      var basePath =
+        /* unused pure expression or super */ null && (false || "");
+      function getDomainLocale(path, locale, locales, domainLocales) {
+        if (false) {
+          var finalLocale,
+            proto,
+            domain,
+            target,
+            detectDomainLocale,
+            normalizeLocalePath;
+        } else {
+          return false;
+        }
+      }
+      if (
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
+      ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true
+        });
+        Object.assign(exports.default, exports);
+        module.exports = exports.default;
+      } //# sourceMappingURL=get-domain-locale.js.map
+
+      /***/
+    },
+
+    /***/ 3952: /***/ function(module, exports, __webpack_require__) {
       "use strict";
 
       function _arrayLikeToArray(arr, len) {
@@ -95,9 +131,13 @@
       });
       exports["default"] = void 0;
       var _react = _interopRequireDefault(__webpack_require__(9496));
-      var _router = __webpack_require__(1368);
-      var _router1 = __webpack_require__(7465);
-      var _useIntersection = __webpack_require__(6363);
+      var _router = __webpack_require__(5920);
+      var _addLocale = __webpack_require__(4841);
+      var _routerContext = __webpack_require__(8940);
+      var _appRouterContext = __webpack_require__(2587);
+      var _useIntersection = __webpack_require__(1311);
+      var _getDomainLocale = __webpack_require__(7280);
+      var _addBasePath = __webpack_require__(9154);
       function _interopRequireDefault(obj) {
         return obj && obj.__esModule
           ? obj
@@ -191,15 +231,10 @@
           scroll: scroll
         });
       }
-      var Link = /*#__PURE__*/ _react.default.forwardRef(function(
+      var Link = /*#__PURE__*/ _react.default.forwardRef(function LinkComponent(
         props,
         forwardedRef
       ) {
-        var _legacyBehavior = props.legacyBehavior,
-          legacyBehavior =
-            _legacyBehavior === void 0
-              ? Boolean(false) !== true
-              : _legacyBehavior;
         if (false) {
           var hasWarned,
             optionalProps,
@@ -220,6 +255,11 @@
           locale = props.locale,
           onClick = props.onClick,
           onMouseEnter = props.onMouseEnter,
+          _legacyBehavior = props.legacyBehavior,
+          legacyBehavior =
+            _legacyBehavior === void 0
+              ? Boolean(false) !== true
+              : _legacyBehavior,
           restProps = _objectWithoutProperties(props, [
             "href",
             "as",
@@ -231,7 +271,8 @@
             "scroll",
             "locale",
             "onClick",
-            "onMouseEnter"
+            "onMouseEnter",
+            "legacyBehavior"
           ]);
         children = childrenProp;
         if (legacyBehavior && typeof children === "string") {
@@ -242,7 +283,13 @@
           );
         }
         var p = prefetchProp !== false;
-        var router = (0, _router1).useRouter();
+        var router = _react.default.useContext(_routerContext.RouterContext);
+        var appRouter = _react.default.useContext(
+          _appRouterContext.AppRouterContext
+        );
+        if (appRouter) {
+          router = appRouter;
+        }
         var ref2 = _react.default.useMemo(
             function() {
               var ref = _slicedToArray(
@@ -378,16 +425,16 @@
           var localeDomain =
             router &&
             router.isLocaleDomain &&
-            (0, _router).getDomainLocale(
+            (0, _getDomainLocale).getDomainLocale(
               as,
               curLocale1,
-              router && router.locales,
-              router && router.domainLocales
+              router.locales,
+              router.domainLocales
             );
           childProps.href =
             localeDomain ||
-            (0, _router).addBasePath(
-              (0, _router).addLocale(
+            (0, _addBasePath).addBasePath(
+              (0, _addLocale).addLocale(
                 as,
                 curLocale1,
                 router && router.defaultLocale
@@ -405,9 +452,13 @@
       var _default = Link;
       exports["default"] = _default;
       if (
-        typeof exports.default === "function" ||
-        (typeof exports.default === "object" && exports.default !== null)
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
       ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true
+        });
         Object.assign(exports.default, exports);
         module.exports = exports.default;
       } //# sourceMappingURL=link.js.map
@@ -415,7 +466,7 @@
       /***/
     },
 
-    /***/ 6363: /***/ function(module, exports, __webpack_require__) {
+    /***/ 1311: /***/ function(module, exports, __webpack_require__) {
       "use strict";
 
       function _arrayLikeToArray(arr, len) {
@@ -484,7 +535,7 @@
       });
       exports.useIntersection = useIntersection;
       var _react = __webpack_require__(9496);
-      var _requestIdleCallback = __webpack_require__(7808);
+      var _requestIdleCallback = __webpack_require__(7307);
       var hasIntersectionObserver = typeof IntersectionObserver !== "undefined";
       function useIntersection(param) {
         var rootRef = param.rootRef,
@@ -616,9 +667,13 @@
         return instance;
       }
       if (
-        typeof exports.default === "function" ||
-        (typeof exports.default === "object" && exports.default !== null)
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
       ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true
+        });
         Object.assign(exports.default, exports);
         module.exports = exports.default;
       } //# sourceMappingURL=use-intersection.js.map
@@ -626,7 +681,34 @@
       /***/
     },
 
-    /***/ 3122: /***/ function(
+    /***/ 2587: /***/ function(
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true
+      });
+      exports.AppRouterContext = void 0;
+      var _react = _interopRequireDefault(__webpack_require__(9496));
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+      var AppRouterContext = _react.default.createContext(null);
+      exports.AppRouterContext = AppRouterContext;
+      if (false) {
+      } //# sourceMappingURL=app-router-context.js.map
+
+      /***/
+    },
+
+    /***/ 7178: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -643,7 +725,7 @@
         4637
       );
       /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        8168
+        8728
       );
       /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(
         next_link__WEBPACK_IMPORTED_MODULE_1__
@@ -674,12 +756,12 @@
       /***/
     },
 
-    /***/ 8168: /***/ function(
+    /***/ 8728: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(7160);
+      module.exports = __webpack_require__(3952);
 
       /***/
     }
@@ -690,7 +772,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function() {
-      return __webpack_exec__(2783);
+      return __webpack_exec__(9367);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for routerDirect-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [58],
   {
-    /***/ 5863: /***/ function(
+    /***/ 4538: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/routerDirect",
         function() {
-          return __webpack_require__(2550);
+          return __webpack_require__(8080);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 2550: /***/ function(
+    /***/ 8080: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -35,7 +35,7 @@
         4637
       );
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        9393
+        7084
       );
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(
         next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -57,12 +57,12 @@
       /***/
     },
 
-    /***/ 9393: /***/ function(
+    /***/ 7084: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(7465);
+      module.exports = __webpack_require__(1905);
 
       /***/
     }
@@ -73,7 +73,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function() {
-      return __webpack_exec__(5863);
+      return __webpack_exec__(4538);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for script-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [797],
   {
-    /***/ 581: /***/ function(
+    /***/ 2644: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/script",
         function() {
-          return __webpack_require__(6436);
+          return __webpack_require__(9689);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 6436: /***/ function(
+    /***/ 9689: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -35,7 +35,7 @@
         4637
       );
       /* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        2311
+        7635
       );
       /* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(
         next_script__WEBPACK_IMPORTED_MODULE_1__
@@ -70,12 +70,12 @@
       /***/
     },
 
-    /***/ 2311: /***/ function(
+    /***/ 7635: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(5031);
+      module.exports = __webpack_require__(736);
 
       /***/
     }
@@ -86,7 +86,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function() {
-      return __webpack_exec__(581);
+      return __webpack_exec__(2644);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for withRouter-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [807],
   {
-    /***/ 4573: /***/ function(
+    /***/ 5577: /***/ function(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/withRouter",
         function() {
-          return __webpack_require__(5526);
+          return __webpack_require__(237);
         }
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 5526: /***/ function(
+    /***/ 237: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -35,7 +35,7 @@
         4637
       );
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
-        9393
+        7084
       );
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(
         next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -54,12 +54,12 @@
       /***/
     },
 
-    /***/ 9393: /***/ function(
+    /***/ 7084: /***/ function(
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) {
-      module.exports = __webpack_require__(7465);
+      module.exports = __webpack_require__(1905);
 
       /***/
     }
@@ -70,7 +70,7 @@
       return __webpack_require__((__webpack_require__.s = moduleId));
     };
     /******/ __webpack_require__.O(0, [774, 888, 179], function() {
-      return __webpack_exec__(4573);
+      return __webpack_exec__(5577);
     });
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for 437.HASH.js
@@ -1,8 +1,8 @@
 "use strict";
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
-  [437],
+  [181],
   {
-    /***/ 7437: /***/ function(
+    /***/ 1181: /***/ function(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
Diff for framework-HASH.js
@@ -19,7 +19,7 @@
  Modernizr 3.0.0pre (Custom Build) | MIT
 */
       var aa = __webpack_require__(9496),
-        m = __webpack_require__(9260),
+        m = __webpack_require__(2048),
         r = __webpack_require__(8051);
       function y(a) {
         for (
@@ -7895,7 +7895,7 @@
        * This source code is licensed under the MIT license found in the
        * LICENSE file in the root directory of this source tree.
        */
-      __webpack_require__(9260);
+      __webpack_require__(2048);
       var f = __webpack_require__(9496),
         g = 60103;
       exports.Fragment = 60107;
@@ -7948,7 +7948,7 @@
        * This source code is licensed under the MIT license found in the
        * LICENSE file in the root directory of this source tree.
        */
-      var l = __webpack_require__(9260),
+      var l = __webpack_require__(2048),
         n = 60103,
         p = 60106;
       exports.Fragment = 60107;
Diff for main-HASH.js

Diff too large to display

Diff for polyfills-HASH.js

Diff too large to display

Diff for webpack-HASH.js
@@ -159,7 +159,7 @@
     /******/ __webpack_require__.u = function(chunkId) {
       /******/ // return url for filenames based on template
       /******/ return (
-        "static/chunks/" + chunkId + "." + "b72a55e4a5d30197" + ".js"
+        "static/chunks/" + chunkId + "." + "040ce93ea5ad99f5" + ".js"
       );
       /******/
     };
@@ -227,7 +227,7 @@
           /******/
         }
         /******/ script.setAttribute("data-webpack", dataWebpackPrefix + key);
-        /******/ script.src = url;
+        /******/ script.src = __webpack_require__.tu(url);
         /******/
       }
       /******/ inProgress[url] = [done];
@@ -274,6 +274,41 @@
       /******/
     };
     /******/
+  })(); /* webpack/runtime/trusted types policy */
+  /******/
+
+  /******/ /******/ !(function() {
+    /******/ var policy;
+    /******/ __webpack_require__.tt = function() {
+      /******/ // Create Trusted Type policy if Trusted Types are available and the policy doesn't exist yet.
+      /******/ if (policy === undefined) {
+        /******/ policy = {
+          /******/ createScriptURL: function(url) {
+            return url;
+          }
+          /******/
+        };
+        /******/ if (
+          typeof trustedTypes !== "undefined" &&
+          trustedTypes.createPolicy
+        ) {
+          /******/ policy = trustedTypes.createPolicy("nextjs#bundler", policy);
+          /******/
+        }
+        /******/
+      }
+      /******/ return policy;
+      /******/
+    };
+    /******/
+  })(); /* webpack/runtime/trusted types script url */
+  /******/
+
+  /******/ /******/ !(function() {
+    /******/ __webpack_require__.tu = function(url) {
+      return __webpack_require__.tt().createScriptURL(url);
+    };
+    /******/
   })(); /* webpack/runtime/publicPath */
   /******/
Diff for index.html
@@ -8,26 +8,26 @@
     <script
       defer=""
       nomodule=""
-      src="/_next/static/chunks/polyfills-5cd94c89d3acac5f.js"
+      src="/_next/static/chunks/polyfills-0d1b80a048d4787e.js"
     ></script>
     <script
-      src="/_next/static/chunks/webpack-9302553dec9dd6bd.js"
+      src="/_next/static/chunks/webpack-61aca3a754613535.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/framework-8755e6e713f733ae.js"
+      src="/_next/static/chunks/framework-044d557c64574856.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-785a6ec3072fda78.js"
+      src="/_next/static/chunks/main-105f6bcb89deb73a.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/_app-794663ada552fbca.js"
+      src="/_next/static/chunks/pages/_app-0f0eb226e227af04.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/index-5d085461d4b7e1ee.js"
+      src="/_next/static/chunks/pages/index-71b39a0d29d24c94.js"
       defer=""
     ></script>
     <script src="/_next/static/BUILD_ID/_buildManifest.js" defer=""></script>
Diff for link.html
@@ -8,26 +8,26 @@
     <script
       defer=""
       nomodule=""
-      src="/_next/static/chunks/polyfills-5cd94c89d3acac5f.js"
+      src="/_next/static/chunks/polyfills-0d1b80a048d4787e.js"
     ></script>
     <script
-      src="/_next/static/chunks/webpack-9302553dec9dd6bd.js"
+      src="/_next/static/chunks/webpack-61aca3a754613535.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/framework-8755e6e713f733ae.js"
+      src="/_next/static/chunks/framework-044d557c64574856.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-785a6ec3072fda78.js"
+      src="/_next/static/chunks/main-105f6bcb89deb73a.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/_app-794663ada552fbca.js"
+      src="/_next/static/chunks/pages/_app-0f0eb226e227af04.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/link-5581225b2bbff8ba.js"
+      src="/_next/static/chunks/pages/link-64306f3c6f33cf81.js"
       defer=""
     ></script>
     <script src="/_next/static/BUILD_ID/_buildManifest.js" defer=""></script>
Diff for withRouter.html
@@ -8,26 +8,26 @@
     <script
       defer=""
       nomodule=""
-      src="/_next/static/chunks/polyfills-5cd94c89d3acac5f.js"
+      src="/_next/static/chunks/polyfills-0d1b80a048d4787e.js"
     ></script>
     <script
-      src="/_next/static/chunks/webpack-9302553dec9dd6bd.js"
+      src="/_next/static/chunks/webpack-61aca3a754613535.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/framework-8755e6e713f733ae.js"
+      src="/_next/static/chunks/framework-044d557c64574856.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-785a6ec3072fda78.js"
+      src="/_next/static/chunks/main-105f6bcb89deb73a.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/_app-794663ada552fbca.js"
+      src="/_next/static/chunks/pages/_app-0f0eb226e227af04.js"
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/withRouter-8b03818d0ed540a0.js"
+      src="/_next/static/chunks/pages/withRouter-fb06f1f34bce84ca.js"
       defer=""
     ></script>
     <script src="/_next/static/BUILD_ID/_buildManifest.js" defer=""></script>

Please sign in to comment.