diff --git "a/LocalGPT/privateGPT/client/.next/static/chunks/main.js" "b/LocalGPT/privateGPT/client/.next/static/chunks/main.js" new file mode 100644--- /dev/null +++ "b/LocalGPT/privateGPT/client/.next/static/chunks/main.js" @@ -0,0 +1,1109 @@ +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([["main"],{ + +/***/ "./node_modules/next/dist/build/polyfills/polyfill-module.js": +/*!*******************************************************************!*\ + !*** ./node_modules/next/dist/build/polyfills/polyfill-module.js ***! + \*******************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +eval(__webpack_require__.ts("\"trimStart\"in String.prototype||(String.prototype.trimStart=String.prototype.trimLeft),\"trimEnd\"in String.prototype||(String.prototype.trimEnd=String.prototype.trimRight),\"description\"in Symbol.prototype||Object.defineProperty(Symbol.prototype,\"description\",{configurable:!0,get:function(){var t=/\\((.*)\\)/.exec(this.toString());return t?t[1]:void 0}}),Array.prototype.flat||(Array.prototype.flat=function(t,r){return r=this.concat.apply([],this),t>1&&r.some(Array.isArray)?r.flat(t-1):r},Array.prototype.flatMap=function(t,r){return this.map(t,r).flat()}),Promise.prototype.finally||(Promise.prototype.finally=function(t){if(\"function\"!=typeof t)return this.then(t,t);var r=this.constructor||Promise;return this.then(function(o){return r.resolve(t()).then(function(){return o})},function(o){return r.resolve(t()).then(function(){throw o})})}),Object.fromEntries||(Object.fromEntries=function(t){return Array.from(t).reduce(function(t,r){return t[r[0]]=r[1],t},{})});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3BvbHlmaWxscy9wb2x5ZmlsbC1tb2R1bGUuanMuanMiLCJtYXBwaW5ncyI6IkFBQUEsbVFBQW1RLCtCQUErQix1Q0FBdUMsc0JBQXNCLDREQUE0RCw2RUFBNkUsdUNBQXVDLDRCQUE0QixvRUFBb0UsOENBQThDLGdDQUFnQyw2QkFBNkIsc0NBQXNDLFNBQVMsRUFBRSxhQUFhLHNDQUFzQyxRQUFRLEVBQUUsRUFBRSxzREFBc0QsMENBQTBDLHNCQUFzQixHQUFHLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC9wb2x5ZmlsbHMvcG9seWZpbGwtbW9kdWxlLmpzPzY5YzgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ0cmltU3RhcnRcImluIFN0cmluZy5wcm90b3R5cGV8fChTdHJpbmcucHJvdG90eXBlLnRyaW1TdGFydD1TdHJpbmcucHJvdG90eXBlLnRyaW1MZWZ0KSxcInRyaW1FbmRcImluIFN0cmluZy5wcm90b3R5cGV8fChTdHJpbmcucHJvdG90eXBlLnRyaW1FbmQ9U3RyaW5nLnByb3RvdHlwZS50cmltUmlnaHQpLFwiZGVzY3JpcHRpb25cImluIFN5bWJvbC5wcm90b3R5cGV8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTeW1ib2wucHJvdG90eXBlLFwiZGVzY3JpcHRpb25cIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3ZhciB0PS9cXCgoLiopXFwpLy5leGVjKHRoaXMudG9TdHJpbmcoKSk7cmV0dXJuIHQ/dFsxXTp2b2lkIDB9fSksQXJyYXkucHJvdG90eXBlLmZsYXR8fChBcnJheS5wcm90b3R5cGUuZmxhdD1mdW5jdGlvbih0LHIpe3JldHVybiByPXRoaXMuY29uY2F0LmFwcGx5KFtdLHRoaXMpLHQ+MSYmci5zb21lKEFycmF5LmlzQXJyYXkpP3IuZmxhdCh0LTEpOnJ9LEFycmF5LnByb3RvdHlwZS5mbGF0TWFwPWZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMubWFwKHQscikuZmxhdCgpfSksUHJvbWlzZS5wcm90b3R5cGUuZmluYWxseXx8KFByb21pc2UucHJvdG90eXBlLmZpbmFsbHk9ZnVuY3Rpb24odCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdClyZXR1cm4gdGhpcy50aGVuKHQsdCk7dmFyIHI9dGhpcy5jb25zdHJ1Y3Rvcnx8UHJvbWlzZTtyZXR1cm4gdGhpcy50aGVuKGZ1bmN0aW9uKG8pe3JldHVybiByLnJlc29sdmUodCgpKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIG99KX0sZnVuY3Rpb24obyl7cmV0dXJuIHIucmVzb2x2ZSh0KCkpLnRoZW4oZnVuY3Rpb24oKXt0aHJvdyBvfSl9KX0pLE9iamVjdC5mcm9tRW50cmllc3x8KE9iamVjdC5mcm9tRW50cmllcz1mdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkuZnJvbSh0KS5yZWR1Y2UoZnVuY3Rpb24odCxyKXtyZXR1cm4gdFtyWzBdXT1yWzFdLHR9LHt9KX0pO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/build/polyfills/polyfill-module.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js": +/*!********************************************************************************!*\ + !*** ./node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js ***! + \********************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +eval(__webpack_require__.ts("var __dirname = \"/\";\n(function(){\"use strict\";var e={876:function(e,t){Object.defineProperty(t,\"__esModule\",{value:true});0&&0;function _export(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:true,get:t[r]})}_export(t,{hydrationErrorWarning:function(){return r},hydrationErrorComponentStack:function(){return n},patchConsoleError:function(){return patchConsoleError}});let r;let n;const a=new Set(['Warning: Text content did not match. Server: \"%s\" Client: \"%s\"%s',\"Warning: Expected server HTML to contain a matching <%s> in <%s>.%s\",'Warning: Expected server HTML to contain a matching text node for \"%s\" in <%s>.%s',\"Warning: Did not expect server HTML to contain a <%s> in <%s>.%s\",'Warning: Did not expect server HTML to contain the text node \"%s\" in <%s>.%s']);function patchConsoleError(){const e=console.error;console.error=function(t,o,i,l){if(a.has(t)){r=t.replace(\"%s\",o).replace(\"%s\",i).replace(\"%s\",\"\");n=l}e.apply(console,arguments)}}if((typeof t.default===\"function\"||typeof t.default===\"object\"&&t.default!==null)&&typeof t.default.__esModule===\"undefined\"){Object.defineProperty(t.default,\"__esModule\",{value:true});Object.assign(t.default,t);e.exports=t.default}},659:function(e,t){Object.defineProperty(t,\"__esModule\",{value:true});Object.defineProperty(t,\"parseComponentStack\",{enumerable:true,get:function(){return parseComponentStack}});function parseComponentStack(e){const t=[];for(const n of e.trim().split(\"\\n\")){const e=/at ([^ ]+)( \\((.*)\\))?/.exec(n);if(e==null?void 0:e[1]){const n=e[1];const a=e[3];if(a==null?void 0:a.includes(\"next/dist\")){break}const o=a==null?void 0:a.replace(/^(webpack-internal:\\/\\/\\/|file:\\/\\/)(\\(.*\\)\\/)?/,\"\");var r;const[i,l,s]=(r=o==null?void 0:o.split(\":\"))!=null?r:[];t.push({component:n,file:i,lineNumber:l?Number(l):undefined,column:s?Number(s):undefined})}}return t}if((typeof t.default===\"function\"||typeof t.default===\"object\"&&t.default!==null)&&typeof t.default.__esModule===\"undefined\"){Object.defineProperty(t.default,\"__esModule\",{value:true});Object.assign(t.default,t);e.exports=t.default}}};var t={};function __nccwpck_require__(r){var n=t[r];if(n!==undefined){return n.exports}var a=t[r]={exports:{}};var o=true;try{e[r](a,a.exports,__nccwpck_require__);o=false}finally{if(o)delete t[r]}return a.exports}!function(){__nccwpck_require__.n=function(e){var t=e&&e.__esModule?function(){return e[\"default\"]}:function(){return e};__nccwpck_require__.d(t,{a:t});return t}}();!function(){__nccwpck_require__.d=function(e,t){for(var r in t){if(__nccwpck_require__.o(t,r)&&!__nccwpck_require__.o(e,r)){Object.defineProperty(e,r,{enumerable:true,get:t[r]})}}}}();!function(){__nccwpck_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}();!function(){__nccwpck_require__.r=function(e){if(typeof Symbol!==\"undefined\"&&Symbol.toStringTag){Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"})}Object.defineProperty(e,\"__esModule\",{value:true})}}();if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var r={};!function(){__nccwpck_require__.r(r);__nccwpck_require__.d(r,{ReactDevOverlay:function(){return Zt},getErrorByType:function(){return getErrorByType},getServerError:function(){return getServerError},onBeforeRefresh:function(){return onBeforeRefresh},onBuildError:function(){return onBuildError},onBuildOk:function(){return onBuildOk},onRefresh:function(){return onRefresh},register:function(){return register},unregister:function(){return unregister}});const e=\"build-ok\";const t=\"build-error\";const n=\"fast-refresh\";const a=\"before-fast-refresh\";const o=\"unhandled-error\";const i=\"unhandled-rejection\";let l=new Set;let s=[];function drain(){setTimeout((function(){while(Boolean(s.length)&&Boolean(l.size)){const e=s.shift();l.forEach((t=>t(e)))}}),1)}function emit(e){s.push(Object.freeze({...e}));drain()}function on(e){if(l.has(e)){return false}l.add(e);drain();return true}function off(e){if(l.has(e)){l.delete(e);return true}return false}var u=__webpack_require__(/*! next/dist/compiled/stacktrace-parser */ \"./node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js\");const c=/\\/_next(\\/static\\/.+)/g;function parseStack(e){const t=(0,u.parse)(e);return t.map((e=>{try{const t=new URL(e.file);const r=c.exec(t.pathname);if(r){const t=\"C:\\\\Users\\\\Milan\\\\LocalGPT\\\\privateGPT\\\\client\\\\.next\"?.replace(/\\\\/g,\"/\")?.replace(/\\/$/,\"\");if(t){e.file=\"file://\"+t.concat(r.pop())}}}catch{}return e}))}var d=__nccwpck_require__(659);var f=__nccwpck_require__(876);function getFilesystemFrame(e){const t={...e};if(typeof t.file===\"string\"){if(t.file.startsWith(\"/\")||/^[a-z]:\\\\/i.test(t.file)||t.file.startsWith(\"\\\\\\\\\")){t.file=`file://${t.file}`}}return t}const m=Symbol(\"NextjsError\");function getErrorSource(e){return e[m]||null}function decorateServerError(e,t){Object.defineProperty(e,m,{writable:false,enumerable:false,configurable:false,value:t})}function getServerError(e,t){let r;try{throw new Error(e.message)}catch(e){r=e}r.name=e.name;try{r.stack=`${r.toString()}\\n${(0,u.parse)(e.stack).map(getFilesystemFrame).map((e=>{let t=` at ${e.methodName}`;if(e.file){let r=e.file;if(e.lineNumber){r+=`:${e.lineNumber}`;if(e.column){r+=`:${e.column}`}}t+=` (${r})`}return t})).join(\"\\n\")}`}catch{r.stack=e.stack}decorateServerError(r,t);return r}function getOriginalStackFrame(e,t,r){async function _getOriginalStackFrame(){const n=new URLSearchParams;n.append(\"isServer\",String(t===\"server\"));n.append(\"isEdgeServer\",String(t===\"edge-server\"));n.append(\"errorMessage\",r);for(const t in e){n.append(t,(e[t]??\"\").toString())}const a=new AbortController;const o=setTimeout((()=>a.abort()),3e3);const i=await self.fetch(`${ false||\"\"}/__nextjs_original-stack-frame?${n.toString()}`,{signal:a.signal}).finally((()=>{clearTimeout(o)}));if(!i.ok||i.status===204){return Promise.reject(new Error(await i.text()))}const l=await i.json();return{error:false,reason:null,external:false,expanded:!Boolean((e.file?.includes(\"node_modules\")||l.originalStackFrame?.file?.includes(\"node_modules\"))??true),sourceStackFrame:e,originalStackFrame:l.originalStackFrame,originalCodeFrame:l.originalCodeFrame||null}}if(!(e.file?.startsWith(\"webpack-internal:\")||e.file?.startsWith(\"file:\"))){return Promise.resolve({error:false,reason:null,external:true,expanded:false,sourceStackFrame:e,originalStackFrame:null,originalCodeFrame:null})}return _getOriginalStackFrame().catch((t=>({error:true,reason:t?.message??t?.toString()??\"Unknown Error\",external:false,expanded:false,sourceStackFrame:e,originalStackFrame:null,originalCodeFrame:null})))}function getOriginalStackFrames(e,t,r){return Promise.all(e.map((e=>getOriginalStackFrame(e,t,r))))}function getFrameSource(e){let t=\"\";try{const r=new URL(e.file);if(typeof globalThis!==\"undefined\"&&globalThis.location?.origin!==r.origin){if(r.origin===\"null\"){t+=r.protocol}else{t+=r.origin}}t+=r.pathname;t+=\" \"}catch{t+=(e.file||\"(unknown)\")+\" \"}if(e.lineNumber!=null){if(e.column!=null){t+=`(${e.lineNumber}:${e.column}) `}else{t+=`(${e.lineNumber}) `}}return t.slice(0,-1)}async function getErrorByType(e){const{id:t,event:r}=e;switch(r.type){case o:case i:{const e={id:t,runtime:true,error:r.reason,frames:await getOriginalStackFrames(r.frames,getErrorSource(r.reason),r.reason.toString())};if(r.type===o){e.componentStack=r.componentStack}return e}default:{break}}const n=r;throw new Error(\"type system invariant violation\")}var p=__webpack_require__(/*! react */ \"./node_modules/next/dist/compiled/react/index.js\");var b=__nccwpck_require__.n(p);var v=__webpack_require__(/*! react-dom */ \"./node_modules/next/dist/compiled/react-dom/index.js\");const g=function Portal({children:e,globalOverlay:t}){let r=p.useRef(null);let n=p.useRef(null);let a=p.useRef(null);let[,o]=p.useState();p.useLayoutEffect((()=>{const e=t?document:r.current.ownerDocument;n.current=e.createElement(\"nextjs-portal\");a.current=n.current.attachShadow({mode:\"open\"});e.body.appendChild(n.current);o({});return()=>{if(n.current&&n.current.ownerDocument){n.current.ownerDocument.body.removeChild(n.current)}}}),[t]);return a.current?(0,v.createPortal)(e,a.current):t?null:p.createElement(\"span\",{ref:r})};function useOnClickOutside(e,t){p.useEffect((()=>{if(e==null||t==null){return}const listener=r=>{if(!e||e.contains(r.target)){return}t(r)};const r=e.getRootNode();r.addEventListener(\"mousedown\",listener);r.addEventListener(\"touchstart\",listener);return function(){r.removeEventListener(\"mousedown\",listener);r.removeEventListener(\"touchstart\",listener)}}),[t,e])}const h=function Dialog({children:e,type:t,onClose:r,...n}){const[a,o]=p.useState(null);const i=p.useCallback((e=>{o(e)}),[]);useOnClickOutside(a,r);p.useEffect((()=>{if(a==null){return}const e=a.getRootNode();if(!(e instanceof ShadowRoot)){return}const t=e;function handler(e){const r=t.activeElement;if(e.key===\"Enter\"&&r instanceof HTMLElement&&r.getAttribute(\"role\")===\"link\"){e.preventDefault();e.stopPropagation();r.click()}}t.addEventListener(\"keydown\",handler);return()=>t.removeEventListener(\"keydown\",handler)}),[a]);return p.createElement(\"div\",{ref:i,\"data-nextjs-dialog\":true,tabIndex:-1,role:\"dialog\",\"aria-labelledby\":n[\"aria-labelledby\"],\"aria-describedby\":n[\"aria-describedby\"],\"aria-modal\":\"true\"},p.createElement(\"div\",{\"data-nextjs-dialog-banner\":true,className:`banner-${t}`}),e)};const x=function DialogBody({children:e,className:t}){return p.createElement(\"div\",{\"data-nextjs-dialog-body\":true,className:t},e)};const y=function DialogContent({children:e,className:t}){return p.createElement(\"div\",{\"data-nextjs-dialog-content\":true,className:t},e)};const E=function DialogHeader({children:e,className:t}){return p.createElement(\"div\",{\"data-nextjs-dialog-header\":true,className:t},e)};function noop(e,...t){const r=e.length-1;return e.slice(0,r).reduce(((e,r,n)=>e+r+t[n]),\"\")+e[r]}const w=noop`\n [data-nextjs-dialog] {\n display: flex;\n flex-direction: column;\n width: 100%;\n margin-right: auto;\n margin-left: auto;\n outline: none;\n background: white;\n border-radius: var(--size-gap);\n box-shadow: 0 var(--size-gap-half) var(--size-gap-double)\n rgba(0, 0, 0, 0.25);\n max-height: calc(100% - 56px);\n overflow-y: hidden;\n }\n\n @media (max-height: 812px) {\n [data-nextjs-dialog-overlay] {\n max-height: calc(100% - 15px);\n }\n }\n\n @media (min-width: 576px) {\n [data-nextjs-dialog] {\n max-width: 540px;\n box-shadow: 0 var(--size-gap) var(--size-gap-quad) rgba(0, 0, 0, 0.25);\n }\n }\n\n @media (min-width: 768px) {\n [data-nextjs-dialog] {\n max-width: 720px;\n }\n }\n\n @media (min-width: 992px) {\n [data-nextjs-dialog] {\n max-width: 960px;\n }\n }\n\n [data-nextjs-dialog-banner] {\n position: relative;\n }\n [data-nextjs-dialog-banner].banner-warning {\n border-color: var(--color-ansi-yellow);\n }\n [data-nextjs-dialog-banner].banner-error {\n border-color: var(--color-ansi-red);\n }\n\n [data-nextjs-dialog-banner]::after {\n z-index: 2;\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n width: 100%;\n /* banner width: */\n border-top-width: var(--size-gap-half);\n border-bottom-width: 0;\n border-top-style: solid;\n border-bottom-style: solid;\n border-top-color: inherit;\n border-bottom-color: transparent;\n }\n\n [data-nextjs-dialog-content] {\n overflow-y: auto;\n border: none;\n margin: 0;\n /* calc(padding + banner width offset) */\n padding: calc(var(--size-gap-double) + var(--size-gap-half))\n var(--size-gap-double);\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n [data-nextjs-dialog-content] > [data-nextjs-dialog-header] {\n flex-shrink: 0;\n margin-bottom: var(--size-gap-double);\n }\n [data-nextjs-dialog-content] > [data-nextjs-dialog-body] {\n position: relative;\n flex: 1 1 auto;\n }\n`;var k=__webpack_require__(/*! next/dist/compiled/platform */ \"./node_modules/next/dist/compiled/platform/platform.js\");var S=__nccwpck_require__.n(k);var _=__webpack_require__(/*! next/dist/compiled/css.escape */ \"./node_modules/next/dist/compiled/css.escape/css.escape.js\");var T=__nccwpck_require__.n(_);function nodeArray(e){if(!e){return[]}if(Array.isArray(e)){return e}if(e.nodeType!==undefined){return[e]}if(typeof e===\"string\"){e=document.querySelectorAll(e)}if(e.length!==undefined){return[].slice.call(e,0)}throw new TypeError(\"unexpected input \"+String(e))}function contextToElement(e){var t=e.context,r=e.label,n=r===undefined?\"context-to-element\":r,a=e.resolveDocument,o=e.defaultToDocument;var i=nodeArray(t)[0];if(a&&i&&i.nodeType===Node.DOCUMENT_NODE){i=i.documentElement}if(!i&&o){return document.documentElement}if(!i){throw new TypeError(n+\" requires valid options.context\")}if(i.nodeType!==Node.ELEMENT_NODE&&i.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){throw new TypeError(n+\" requires options.context to be an Element\")}return i}function getShadowHost(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context;var r=contextToElement({label:\"get/shadow-host\",context:t});var n=null;while(r){n=r;r=r.parentNode}if(n.nodeType===n.DOCUMENT_FRAGMENT_NODE&&n.host){return n.host}return null}function getDocument(e){if(!e){return document}if(e.nodeType===Node.DOCUMENT_NODE){return e}return e.ownerDocument||document}function isActiveElement(e){var t=contextToElement({label:\"is/active-element\",resolveDocument:true,context:e});var r=getDocument(t);if(r.activeElement===t){return true}var n=getShadowHost({context:t});if(n&&n.shadowRoot.activeElement===t){return true}return false}function getParents(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context;var r=[];var n=contextToElement({label:\"get/parents\",context:t});while(n){r.push(n);n=n.parentNode;if(n&&n.nodeType!==Node.ELEMENT_NODE){n=null}}return r}var C=[\"matches\",\"webkitMatchesSelector\",\"mozMatchesSelector\",\"msMatchesSelector\"];var j=null;function findMethodName(e){C.some((function(t){if(!e[t]){return false}j=t;return true}))}function elementMatches(e,t){if(!j){findMethodName(e)}return e[j](t)}var A=JSON.parse(JSON.stringify(S()));var O=A.os.family||\"\";var N=O===\"Android\";var I=O.slice(0,7)===\"Windows\";var L=O===\"OS X\";var F=O===\"iOS\";var D=A.layout===\"Blink\";var M=A.layout===\"Gecko\";var R=A.layout===\"Trident\";var z=A.layout===\"EdgeHTML\";var B=A.layout===\"WebKit\";var H=parseFloat(A.version);var q=Math.floor(H);A.majorVersion=q;A.is={ANDROID:N,WINDOWS:I,OSX:L,IOS:F,BLINK:D,GECKO:M,TRIDENT:R,EDGE:z,WEBKIT:B,IE9:R&&q===9,IE10:R&&q===10,IE11:R&&q===11};function before(){var e={activeElement:document.activeElement,windowScrollTop:window.scrollTop,windowScrollLeft:window.scrollLeft,bodyScrollTop:document.body.scrollTop,bodyScrollLeft:document.body.scrollLeft};var t=document.createElement(\"iframe\");t.setAttribute(\"style\",\"position:absolute; position:fixed; top:0; left:-2px; width:1px; height:1px; overflow:hidden;\");t.setAttribute(\"aria-live\",\"off\");t.setAttribute(\"aria-busy\",\"true\");t.setAttribute(\"aria-hidden\",\"true\");document.body.appendChild(t);var r=t.contentWindow;var n=r.document;n.open();n.close();var a=n.createElement(\"div\");n.body.appendChild(a);e.iframe=t;e.wrapper=a;e.window=r;e.document=n;return e}function test(e,t){e.wrapper.innerHTML=\"\";var r=typeof t.element===\"string\"?e.document.createElement(t.element):t.element(e.wrapper,e.document);var n=t.mutate&&t.mutate(r,e.wrapper,e.document);if(!n&&n!==false){n=r}!r.parentNode&&e.wrapper.appendChild(r);n&&n.focus&&n.focus();return t.validate?t.validate(r,n,e.document):e.document.activeElement===n}function after(e){if(e.activeElement===document.body){document.activeElement&&document.activeElement.blur&&document.activeElement.blur();if(A.is.IE10){document.body.focus()}}else{e.activeElement&&e.activeElement.focus&&e.activeElement.focus()}document.body.removeChild(e.iframe);window.scrollTop=e.windowScrollTop;window.scrollLeft=e.windowScrollLeft;document.body.scrollTop=e.bodyScrollTop;document.body.scrollLeft=e.bodyScrollLeft}function detectFocus(e){var t=before();var r={};Object.keys(e).map((function(n){r[n]=test(t,e[n])}));after(t);return r}var P=\"1.4.1\";function readLocalStorage(e){var t=void 0;try{t=window.localStorage&&window.localStorage.getItem(e);t=t?JSON.parse(t):{}}catch(e){t={}}return t}function writeLocalStorage(e,t){if(!document.hasFocus()){try{window.localStorage&&window.localStorage.removeItem(e)}catch(e){}return}try{window.localStorage&&window.localStorage.setItem(e,JSON.stringify(t))}catch(e){}}var W=typeof window!==\"undefined\"&&window.navigator.userAgent||\"\";var V=\"ally-supports-cache\";var $=readLocalStorage(V);if($.userAgent!==W||$.version!==P){$={}}$.userAgent=W;$.version=P;var K={get:function get(){return $},set:function set(e){Object.keys(e).forEach((function(t){$[t]=e[t]}));$.time=(new Date).toISOString();writeLocalStorage(V,$)}};function cssShadowPiercingDeepCombinator(){var e=void 0;try{document.querySelector(\"html >>> :first-child\");e=\">>>\"}catch(t){try{document.querySelector(\"html /deep/ :first-child\");e=\"/deep/\"}catch(t){e=\"\"}}return e}var Z=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\";var U={element:\"div\",mutate:function mutate(e){e.innerHTML=''+''+'\"\"';return e.querySelector(\"area\")}};var G={element:\"div\",mutate:function mutate(e){e.innerHTML=''+''+'\"\"';return false},validate:function validate(e,t,r){if(A.is.GECKO){return true}var n=e.querySelector(\"area\");n.focus();return r.activeElement===n}};var X={element:\"div\",mutate:function mutate(e){e.innerHTML=''+''+'\"\"';return e.querySelector(\"area\")},validate:function validate(e,t,r){if(A.is.GECKO){return true}return r.activeElement===t}};var J={name:\"can-focus-audio-without-controls\",element:\"audio\",mutate:function mutate(e){try{e.setAttribute(\"src\",Z)}catch(e){}}};var Q=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\";var Y={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'\"\"';return e.querySelector(\"area\")}};var ee={element:\"div\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"-1\");e.setAttribute(\"style\",\"display: -webkit-flex; display: -ms-flexbox; display: flex;\");e.innerHTML='hello';return e.querySelector(\"span\")}};var te={element:\"fieldset\",mutate:function mutate(e){e.setAttribute(\"tabindex\",0);e.setAttribute(\"disabled\",\"disabled\")}};var re={element:\"fieldset\",mutate:function mutate(e){e.innerHTML=\"legend

content

\"}};var ne={element:\"span\",mutate:function mutate(e){e.setAttribute(\"style\",\"display: -webkit-flex; display: -ms-flexbox; display: flex;\");e.innerHTML='hello'}};var ae={element:\"form\",mutate:function mutate(e){e.setAttribute(\"tabindex\",0);e.setAttribute(\"disabled\",\"disabled\")}};var oe={element:\"a\",mutate:function mutate(e){e.href=\"#void\";e.innerHTML='\"\"';return e.querySelector(\"img\")}};var ie={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'\"\"';return e.querySelector(\"img\")}};var le={element:function element(e,t){var r=t.createElement(\"iframe\");e.appendChild(r);var n=r.contentWindow.document;n.open();n.close();return r},mutate:function mutate(e){e.style.visibility=\"hidden\";var t=e.contentWindow.document;var r=t.createElement(\"input\");t.body.appendChild(r);return r},validate:function validate(e){var t=e.contentWindow.document;var r=t.querySelector(\"input\");return t.activeElement===r}};var se=!A.is.WEBKIT;function focusInZeroDimensionObject(){return se}var ue={element:\"div\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"invalid-value\")}};var ce={element:\"label\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"-1\")},validate:function validate(e,t,r){var n=e.offsetHeight;e.focus();return r.activeElement===e}};var de=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtb\"+\"G5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBpZD0ic3ZnIj48dGV4dCB4PSIxMCIgeT0iMjAiIGlkPSJ\"+\"zdmctbGluay10ZXh0Ij50ZXh0PC90ZXh0Pjwvc3ZnPg==\";var fe={element:\"object\",mutate:function mutate(e){e.setAttribute(\"type\",\"image/svg+xml\");e.setAttribute(\"data\",de);e.setAttribute(\"width\",\"200\");e.setAttribute(\"height\",\"50\");e.style.visibility=\"hidden\"}};var me={name:\"can-focus-object-svg\",element:\"object\",mutate:function mutate(e){e.setAttribute(\"type\",\"image/svg+xml\");e.setAttribute(\"data\",de);e.setAttribute(\"width\",\"200\");e.setAttribute(\"height\",\"50\")},validate:function validate(e,t,r){if(A.is.GECKO){return true}return r.activeElement===e}};var pe=!A.is.IE9;function focusObjectSwf(){return pe}var be={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'\"\"';return e.querySelector(\"img\")},validate:function validate(e,t,r){var n=e.querySelector(\"area\");return r.activeElement===n}};var ve={element:\"fieldset\",mutate:function mutate(e){e.innerHTML='legend';return false},validate:function validate(e,t,r){var n=e.querySelector('input[tabindex=\"-1\"]');var a=e.querySelector('input[tabindex=\"0\"]');e.focus();e.querySelector(\"legend\").focus();return r.activeElement===n&&\"focusable\"||r.activeElement===a&&\"tabbable\"||\"\"}};var ge={element:\"div\",mutate:function mutate(e){e.setAttribute(\"style\",\"width: 100px; height: 50px; overflow: auto;\");e.innerHTML='
scrollable content
';return e.querySelector(\"div\")}};var he={element:\"div\",mutate:function mutate(e){e.setAttribute(\"style\",\"width: 100px; height: 50px;\");e.innerHTML='
scrollable content
'}};var xe={element:\"div\",mutate:function mutate(e){e.setAttribute(\"style\",\"width: 100px; height: 50px; overflow: auto;\");e.innerHTML='
scrollable content
'}};var ye={element:\"details\",mutate:function mutate(e){e.innerHTML=\"foo

content

\";return e.firstElementChild}};function makeFocusableForeignObject(){var e=document.createElementNS(\"http://www.w3.org/2000/svg\",\"foreignObject\");e.width.baseVal.value=30;e.height.baseVal.value=30;e.appendChild(document.createElement(\"input\"));e.lastChild.type=\"text\";return e}function focusSvgForeignObjectHack(e){var t=e.ownerSVGElement||e.nodeName.toLowerCase()===\"svg\";if(!t){return false}var r=makeFocusableForeignObject();e.appendChild(r);var n=r.querySelector(\"input\");n.focus();n.disabled=true;e.removeChild(r);return true}function generate(e){return''+e+\"\"}function maintain_tab_focus_focus(e){if(e.focus){return}try{HTMLElement.prototype.focus.call(e)}catch(t){focusSvgForeignObjectHack(e)}}function validate(e,t,r){maintain_tab_focus_focus(t);return r.activeElement===t}var Ee={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('a');return e.querySelector(\"text\")},validate:validate};var we={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('a');return e.querySelector(\"text\")},validate:validate};var ke={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('a');return e.querySelector(\"text\")},validate:validate};var Se={element:\"div\",mutate:function mutate(e){e.innerHTML=generate(['link',''].join(\"\"));return e.querySelector(\"use\")},validate:validate};var _e={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('');return e.querySelector(\"foreignObject\")||e.getElementsByTagName(\"foreignObject\")[0]},validate:validate};var Te=Boolean(A.is.GECKO&&typeof SVGElement!==\"undefined\"&&SVGElement.prototype.focus);function focusSvgInIframe(){return Te}var Ce={element:\"div\",mutate:function mutate(e){e.innerHTML=generate(\"\");return e.firstChild},validate:validate};var je={element:\"div\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"3x\")}};var Ae={element:\"table\",mutate:function mutate(e,t,r){var n=r.createDocumentFragment();n.innerHTML=\"cell\";e.appendChild(n)}};var Oe={element:\"video\",mutate:function mutate(e){try{e.setAttribute(\"src\",Z)}catch(e){}}};var Ne=A.is.GECKO||A.is.TRIDENT||A.is.EDGE;function tabsequenceAreaAtImgPosition(){return Ne}var Ie={cssShadowPiercingDeepCombinator:cssShadowPiercingDeepCombinator,focusInZeroDimensionObject:focusInZeroDimensionObject,focusObjectSwf:focusObjectSwf,focusSvgInIframe:focusSvgInIframe,tabsequenceAreaAtImgPosition:tabsequenceAreaAtImgPosition};var Le={focusAreaImgTabindex:U,focusAreaTabindex:G,focusAreaWithoutHref:X,focusAudioWithoutControls:J,focusBrokenImageMap:Y,focusChildrenOfFocusableFlexbox:ee,focusFieldsetDisabled:te,focusFieldset:re,focusFlexboxContainer:ne,focusFormDisabled:ae,focusImgIsmap:oe,focusImgUsemapTabindex:ie,focusInHiddenIframe:le,focusInvalidTabindex:ue,focusLabelTabindex:ce,focusObjectSvg:me,focusObjectSvgHidden:fe,focusRedirectImgUsemap:be,focusRedirectLegend:ve,focusScrollBody:ge,focusScrollContainerWithoutOverflow:he,focusScrollContainer:xe,focusSummary:ye,focusSvgFocusableAttribute:Ee,focusSvgTabindexAttribute:we,focusSvgNegativeTabindexAttribute:ke,focusSvgUseTabindex:Se,focusSvgForeignobjectTabindex:_e,focusSvg:Ce,focusTabindexTrailingCharacters:je,focusTable:Ae,focusVideoWithoutControls:Oe};function executeTests(){var e=detectFocus(Le);Object.keys(Ie).forEach((function(t){e[t]=Ie[t]()}));return e}var Fe=null;function _supports(){if(Fe){return Fe}Fe=K.get();if(!Fe.time){K.set(executeTests());Fe=K.get()}return Fe}var De=void 0;var Me=/^\\s*(-|\\+)?[0-9]+\\s*$/;var Re=/^\\s*(-|\\+)?[0-9]+.*$/;function isValidTabindex(e){if(!De){De=_supports()}var t=De.focusTabindexTrailingCharacters?Re:Me;var r=contextToElement({label:\"is/valid-tabindex\",resolveDocument:true,context:e});var n=r.hasAttribute(\"tabindex\");var a=r.hasAttribute(\"tabIndex\");if(!n&&!a){return false}var o=r.ownerSVGElement||r.nodeName.toLowerCase()===\"svg\";if(o&&!De.focusSvgTabindexAttribute){return false}if(De.focusInvalidTabindex){return true}var i=r.getAttribute(n?\"tabindex\":\"tabIndex\");if(i===\"-32768\"){return false}return Boolean(i&&t.test(i))}function tabindexValue(e){if(!isValidTabindex(e)){return null}var t=e.hasAttribute(\"tabindex\");var r=t?\"tabindex\":\"tabIndex\";var n=parseInt(e.getAttribute(r),10);return isNaN(n)?-1:n}function isUserModifyWritable(e){var t=e.webkitUserModify||\"\";return Boolean(t&&t.indexOf(\"write\")!==-1)}function hasCssOverflowScroll(e){return[e.getPropertyValue(\"overflow\"),e.getPropertyValue(\"overflow-x\"),e.getPropertyValue(\"overflow-y\")].some((function(e){return e===\"auto\"||e===\"scroll\"}))}function hasCssDisplayFlex(e){return e.display.indexOf(\"flex\")>-1}function isScrollableContainer(e,t,r,n){if(t!==\"div\"&&t!==\"span\"){return false}if(r&&r!==\"div\"&&r!==\"span\"&&!hasCssOverflowScroll(n)){return false}return e.offsetHeight0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.except,n=r===undefined?{flexbox:false,scrollable:false,shadow:false}:r;if(!ze){ze=_supports()}var a=contextToElement({label:\"is/focus-relevant\",resolveDocument:true,context:t});if(!n.shadow&&a.shadowRoot){return true}var o=a.nodeName.toLowerCase();if(o===\"input\"&&a.type===\"hidden\"){return false}if(o===\"input\"||o===\"select\"||o===\"button\"||o===\"textarea\"){return true}if(o===\"legend\"&&ze.focusRedirectLegend){return true}if(o===\"label\"){return true}if(o===\"area\"){return true}if(o===\"a\"&&a.hasAttribute(\"href\")){return true}if(o===\"object\"&&a.hasAttribute(\"usemap\")){return false}if(o===\"object\"){var i=a.getAttribute(\"type\");if(!ze.focusObjectSvg&&i===\"image/svg+xml\"){return false}else if(!ze.focusObjectSwf&&i===\"application/x-shockwave-flash\"){return false}}if(o===\"iframe\"||o===\"object\"){return true}if(o===\"embed\"||o===\"keygen\"){return true}if(a.hasAttribute(\"contenteditable\")){return true}if(o===\"audio\"&&(ze.focusAudioWithoutControls||a.hasAttribute(\"controls\"))){return true}if(o===\"video\"&&(ze.focusVideoWithoutControls||a.hasAttribute(\"controls\"))){return true}if(ze.focusSummary&&o===\"summary\"){return true}var l=isValidTabindex(a);if(o===\"img\"&&a.hasAttribute(\"usemap\")){return l&&ze.focusImgUsemapTabindex||ze.focusRedirectImgUsemap}if(ze.focusTable&&(o===\"table\"||o===\"td\")){return true}if(ze.focusFieldset&&o===\"fieldset\"){return true}var s=o===\"svg\";var u=a.ownerSVGElement;var c=a.getAttribute(\"focusable\");var d=tabindexValue(a);if(o===\"use\"&&d!==null&&!ze.focusSvgUseTabindex){return false}if(o===\"foreignobject\"){return d!==null&&ze.focusSvgForeignobjectTabindex}if(elementMatches(a,\"svg a\")&&a.hasAttribute(\"xlink:href\")){return true}if((s||u)&&a.focus&&!ze.focusSvgNegativeTabindexAttribute&&d<0){return false}if(s){return l||ze.focusSvg||ze.focusSvgInIframe||Boolean(ze.focusSvgFocusableAttribute&&c&&c===\"true\")}if(u){if(ze.focusSvgTabindexAttribute&&l){return true}if(ze.focusSvgFocusableAttribute){return c===\"true\"}}if(l){return true}var f=window.getComputedStyle(a,null);if(isUserModifyWritable(f)){return true}if(ze.focusImgIsmap&&o===\"img\"&&a.hasAttribute(\"ismap\")){var m=getParents({context:a}).some((function(e){return e.nodeName.toLowerCase()===\"a\"&&e.hasAttribute(\"href\")}));if(m){return true}}if(!n.scrollable&&ze.focusScrollContainer){if(ze.focusScrollContainerWithoutOverflow){if(isScrollableContainer(a,o)){return true}}else if(hasCssOverflowScroll(f)){return true}}if(!n.flexbox&&ze.focusFlexboxContainer&&hasCssDisplayFlex(f)){return true}var p=a.parentElement;if(!n.scrollable&&p){var b=p.nodeName.toLowerCase();var v=window.getComputedStyle(p,null);if(ze.focusScrollBody&&isScrollableContainer(p,o,b,v)){return true}if(ze.focusChildrenOfFocusableFlexbox){if(hasCssDisplayFlex(v)){return true}}}return false}isFocusRelevantRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=function isFocusRelevant(t){return isFocusRelevantRules({context:t,except:e})};t.rules=isFocusRelevantRules;return t};var Be=isFocusRelevantRules.except({});function findIndex(e,t){if(e.findIndex){return e.findIndex(t)}var r=e.length;if(r===0){return-1}for(var n=0;n0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.except,n=r===undefined?{notRendered:false,cssDisplay:false,cssVisibility:false,detailsElement:false,browsingContext:false}:r;var a=contextToElement({label:\"is/visible\",resolveDocument:true,context:t});var o=a.nodeName.toLowerCase();if(!n.notRendered&&Pe.test(o)){return true}var i=getParents({context:a});var l=o===\"audio\"&&!a.hasAttribute(\"controls\");if(!n.cssDisplay&¬Displayed(l?i.slice(1):i)){return false}if(!n.cssVisibility&¬Visible(i)){return false}if(!n.detailsElement&&collapsedParent(i)){return false}if(!n.browsingContext){var s=getFrameElement(a);var u=isVisibleRules.except(n);if(s&&!u(s)){return false}}return true}isVisibleRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=function isVisible(t){return isVisibleRules({context:t,except:e})};t.rules=isVisibleRules;return t};var We=isVisibleRules.except({});function getMapByName(e,t){var r=t.querySelector('map[name=\"'+T()(e)+'\"]');return r||null}function getImageOfArea(e){var t=e.parentElement;if(!t.name||t.nodeName.toLowerCase()!==\"map\"){return null}var r=getDocument(e);return r.querySelector('img[usemap=\"#'+T()(t.name)+'\"]')||null}var Ve=void 0;function isValidArea(e){if(!Ve){Ve=_supports()}var t=contextToElement({label:\"is/valid-area\",context:e});var r=t.nodeName.toLowerCase();if(r!==\"area\"){return false}var n=t.hasAttribute(\"tabindex\");if(!Ve.focusAreaTabindex&&n){return false}var a=getImageOfArea(t);if(!a||!We(a)){return false}if(!Ve.focusBrokenImageMap&&(!a.complete||!a.naturalHeight||a.offsetWidth<=0||a.offsetHeight<=0)){return false}if(!Ve.focusAreaWithoutHref&&!t.href){return Ve.focusAreaTabindex&&n||Ve.focusAreaImgTabindex&&a.hasAttribute(\"tabindex\")}var o=getParents({context:a}).slice(1).some((function(e){var t=e.nodeName.toLowerCase();return t===\"button\"||t===\"a\"}));if(o){return false}return true}var $e=void 0;var Ke=void 0;var Ze={input:true,select:true,textarea:true,button:true,fieldset:true,form:true};function isNativeDisabledSupported(e){if(!$e){$e=_supports();if($e.focusFieldsetDisabled){delete Ze.fieldset}if($e.focusFormDisabled){delete Ze.form}Ke=new RegExp(\"^(\"+Object.keys(Ze).join(\"|\")+\")$\")}var t=contextToElement({label:\"is/native-disabled-supported\",context:e});var r=t.nodeName.toLowerCase();return Boolean(Ke.test(r))}var Ue=void 0;function isDisabledFieldset(e){var t=e.nodeName.toLowerCase();return t===\"fieldset\"&&e.disabled}function isDisabledForm(e){var t=e.nodeName.toLowerCase();return t===\"form\"&&e.disabled}function isDisabled(e){if(!Ue){Ue=_supports()}var t=contextToElement({label:\"is/disabled\",context:e});if(t.hasAttribute(\"data-ally-disabled\")){return true}if(!isNativeDisabledSupported(t)){return false}if(t.disabled){return true}var r=getParents({context:t});if(r.some(isDisabledFieldset)){return true}if(!Ue.focusFormDisabled&&r.some(isDisabledForm)){return true}return false}function isOnlyTabbableRules(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.except,n=r===undefined?{onlyFocusableBrowsingContext:false,visible:false}:r;var a=contextToElement({label:\"is/only-tabbable\",resolveDocument:true,context:t});if(!n.visible&&!We(a)){return false}if(!n.onlyFocusableBrowsingContext&&(A.is.GECKO||A.is.TRIDENT||A.is.EDGE)){var o=getFrameElement(a);if(o){if(tabindexValue(o)<0){return false}}}var i=a.nodeName.toLowerCase();var l=tabindexValue(a);if(i===\"label\"&&A.is.GECKO){return l!==null&&l>=0}if(A.is.GECKO&&a.ownerSVGElement&&!a.focus){if(i===\"a\"&&a.hasAttribute(\"xlink:href\")){if(A.is.GECKO){return true}}}return false}isOnlyTabbableRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=function isOnlyTabbable(t){return isOnlyTabbableRules({context:t,except:e})};t.rules=isOnlyTabbableRules;return t};var Ge=isOnlyTabbableRules.except({});var Xe=void 0;function isOnlyFocusRelevant(e){var t=e.nodeName.toLowerCase();if(t===\"embed\"||t===\"keygen\"){return true}var r=tabindexValue(e);if(e.shadowRoot&&r===null){return true}if(t===\"label\"){return!Xe.focusLabelTabindex||r===null}if(t===\"legend\"){return r===null}if(Xe.focusSvgFocusableAttribute&&(e.ownerSVGElement||t===\"svg\")){var n=e.getAttribute(\"focusable\");return n&&n===\"false\"}if(t===\"img\"&&e.hasAttribute(\"usemap\")){return r===null||!Xe.focusImgUsemapTabindex}if(t===\"area\"){return!isValidArea(e)}return false}function isFocusableRules(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.except,n=r===undefined?{disabled:false,visible:false,onlyTabbable:false}:r;if(!Xe){Xe=_supports()}var a=Ge.rules.except({onlyFocusableBrowsingContext:true,visible:n.visible});var o=contextToElement({label:\"is/focusable\",resolveDocument:true,context:t});var i=Be.rules({context:o,except:n});if(!i||isOnlyFocusRelevant(o)){return false}if(!n.disabled&&isDisabled(o)){return false}if(!n.onlyTabbable&&a(o)){return false}if(!n.visible){var l={context:o,except:{}};if(Xe.focusInHiddenIframe){l.except.browsingContext=true}if(Xe.focusObjectSvgHidden){var s=o.nodeName.toLowerCase();if(s===\"object\"){l.except.cssVisibility=true}}if(!We.rules(l)){return false}}var u=getFrameElement(o);if(u){var c=u.nodeName.toLowerCase();if(c===\"object\"&&!Xe.focusInZeroDimensionObject){if(!u.offsetWidth||!u.offsetHeight){return false}}}var d=o.nodeName.toLowerCase();if(d===\"svg\"&&Xe.focusSvgInIframe&&!u&&o.getAttribute(\"tabindex\")===null){return false}return true}isFocusableRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=function isFocusable(t){return isFocusableRules({context:t,except:e})};t.rules=isFocusableRules;return t};var Je=isFocusableRules.except({});function createFilter(e){var t=function filter(t){if(t.shadowRoot){return NodeFilter.FILTER_ACCEPT}if(e(t)){return NodeFilter.FILTER_ACCEPT}return NodeFilter.FILTER_SKIP};t.acceptNode=t;return t}var Qe=createFilter(Be);function queryFocusableStrict(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.includeContext,n=e.includeOnlyTabbable,a=e.strategy;if(!t){t=document.documentElement}var o=Je.rules.except({onlyTabbable:n});var i=getDocument(t);var l=i.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,a===\"all\"?Qe:createFilter(o),false);var s=[];while(l.nextNode()){if(l.currentNode.shadowRoot){if(o(l.currentNode)){s.push(l.currentNode)}s=s.concat(queryFocusableStrict({context:l.currentNode.shadowRoot,includeOnlyTabbable:n,strategy:a}))}else{s.push(l.currentNode)}}if(r){if(a===\"all\"){if(Be(t)){s.unshift(t)}}else if(o(t)){s.unshift(t)}}return s}var Ye=void 0;var et=void 0;function selector$2(){if(!Ye){Ye=_supports()}if(typeof et===\"string\"){return et}et=\"\"+(Ye.focusTable?\"table, td,\":\"\")+(Ye.focusFieldset?\"fieldset,\":\"\")+\"svg a,\"+\"a[href],\"+\"area[href],\"+\"input, select, textarea, button,\"+\"iframe, object, embed,\"+\"keygen,\"+(Ye.focusAudioWithoutControls?\"audio,\":\"audio[controls],\")+(Ye.focusVideoWithoutControls?\"video,\":\"video[controls],\")+(Ye.focusSummary?\"summary,\":\"\")+\"[tabindex],\"+\"[contenteditable]\";et=selectInShadows(et);return et}function queryFocusableQuick(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.includeContext,n=e.includeOnlyTabbable;var a=selector$2();var o=t.querySelectorAll(a);var i=Je.rules.except({onlyTabbable:n});var l=[].filter.call(o,i);if(r&&i(t)){l.unshift(t)}return l}function queryFocusable(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.includeContext,n=e.includeOnlyTabbable,a=e.strategy,o=a===undefined?\"quick\":a;var i=contextToElement({label:\"query/focusable\",resolveDocument:true,defaultToDocument:true,context:t});var l={context:i,includeContext:r,includeOnlyTabbable:n,strategy:o};if(o===\"quick\"){return queryFocusableQuick(l)}else if(o===\"strict\"||o===\"all\"){return queryFocusableStrict(l)}throw new TypeError('query/focusable requires option.strategy to be one of [\"quick\", \"strict\", \"all\"]')}var tt=void 0;var rt=/^(fieldset|table|td|body)$/;function isTabbableRules(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.except,n=r===undefined?{flexbox:false,scrollable:false,shadow:false,visible:false,onlyTabbable:false}:r;if(!tt){tt=_supports()}var a=contextToElement({label:\"is/tabbable\",resolveDocument:true,context:t});if(A.is.BLINK&&A.is.ANDROID&&A.majorVersion>42){return false}var o=getFrameElement(a);if(o){if(A.is.WEBKIT&&A.is.IOS){return false}if(tabindexValue(o)<0){return false}if(!n.visible&&(A.is.BLINK||A.is.WEBKIT)&&!We(o)){return false}var i=o.nodeName.toLowerCase();if(i===\"object\"){var l=A.name===\"Chrome\"&&A.majorVersion>=54||A.name===\"Opera\"&&A.majorVersion>=41;if(A.is.WEBKIT||A.is.BLINK&&!l){return false}}}var s=a.nodeName.toLowerCase();var u=tabindexValue(a);var c=u===null?null:u>=0;if(A.is.EDGE&&A.majorVersion>=14&&o&&a.ownerSVGElement&&u<0){return true}var d=c!==false;var f=u!==null&&u>=0;if(a.hasAttribute(\"contenteditable\")){return d}if(rt.test(s)&&c!==true){return false}if(A.is.WEBKIT&&A.is.IOS){var m=s===\"input\"&&a.type===\"text\"||a.type===\"password\"||s===\"select\"||s===\"textarea\"||a.hasAttribute(\"contenteditable\");if(!m){var p=window.getComputedStyle(a,null);m=isUserModifyWritable(p)}if(!m){return false}}if(s===\"use\"&&u!==null){if(A.is.BLINK||A.is.WEBKIT&&A.majorVersion===9){return true}}if(elementMatches(a,\"svg a\")&&a.hasAttribute(\"xlink:href\")){if(d){return true}if(a.focus&&!tt.focusSvgNegativeTabindexAttribute){return true}}if(s===\"svg\"&&tt.focusSvgInIframe&&d){return true}if(A.is.TRIDENT||A.is.EDGE){if(s===\"svg\"){if(tt.focusSvg){return true}return a.hasAttribute(\"focusable\")||f}if(a.ownerSVGElement){if(tt.focusSvgTabindexAttribute&&f){return true}return a.hasAttribute(\"focusable\")}}if(a.tabIndex===undefined){return Boolean(n.onlyTabbable)}if(s===\"audio\"){if(!a.hasAttribute(\"controls\")){return false}else if(A.is.BLINK){return true}}if(s===\"video\"){if(!a.hasAttribute(\"controls\")){if(A.is.TRIDENT||A.is.EDGE){return false}}else if(A.is.BLINK||A.is.GECKO){return true}}if(s===\"object\"){if(A.is.BLINK||A.is.WEBKIT){return false}}if(s===\"iframe\"){return false}if(!n.scrollable&&A.is.GECKO){var b=window.getComputedStyle(a,null);if(hasCssOverflowScroll(b)){return d}}if(A.is.TRIDENT||A.is.EDGE){if(s===\"area\"){var v=getImageOfArea(a);if(v&&tabindexValue(v)<0){return false}}var g=window.getComputedStyle(a,null);if(isUserModifyWritable(g)){return a.tabIndex>=0}if(!n.flexbox&&hasCssDisplayFlex(g)){if(u!==null){return f}return nt(a)&&at(a)}if(isScrollableContainer(a,s)){return false}var h=a.parentElement;if(h){var x=h.nodeName.toLowerCase();var y=window.getComputedStyle(h,null);if(isScrollableContainer(h,s,x,y)){return false}if(hasCssDisplayFlex(y)){return f}}}return a.tabIndex>=0}isTabbableRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=function isTabbable(t){return isTabbableRules({context:t,except:e})};t.rules=isTabbableRules;return t};var nt=Be.rules.except({flexbox:true});var at=isTabbableRules.except({flexbox:true});var ot=isTabbableRules.except({});function queryTabbable(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.includeContext,n=e.includeOnlyTabbable,a=e.strategy;var o=ot.rules.except({onlyTabbable:n});return queryFocusable({context:t,includeContext:r,includeOnlyTabbable:n,strategy:a}).filter(o)}function compareDomPosition(e,t){return e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING?-1:1}function sortDomOrder(e){return e.sort(compareDomPosition)}function getFirstSuccessorOffset(e,t){return findIndex(e,(function(e){return t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING}))}function findInsertionOffsets(e,t,r){var n=[];t.forEach((function(t){var a=true;var o=e.indexOf(t);if(o===-1){o=getFirstSuccessorOffset(e,t);a=false}if(o===-1){o=e.length}var i=nodeArray(r?r(t):t);if(!i.length){return}n.push({offset:o,replace:a,elements:i})}));return n}function insertElementsAtOffsets(e,t){var r=0;t.sort((function(e,t){return e.offset-t.offset}));t.forEach((function(t){var n=t.replace?1:0;var a=[t.offset+r,n].concat(t.elements);e.splice.apply(e,a);r+=t.elements.length-n}))}function mergeInDomOrder(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.list,r=e.elements,n=e.resolveElement;var a=t.slice(0);var o=nodeArray(r).slice(0);sortDomOrder(o);var i=findInsertionOffsets(a,o,n);insertElementsAtOffsets(a,i);return a}var it=function(){function defineProperties(e,t){for(var r=0;r-1){return[e].concat(t)}return t}},{key:\"_cleanup\",value:function _cleanup(){Object.keys(this.hosts).forEach((function(e){delete this.hosts[e]._sortingId}),this)}}]);return Shadows}();function sortShadowed(e,t,r){var n=new ut(t,r);var a=n.extractElements(e);if(a.length===e.length){return r(e)}return n.sort(a)}function sortTabindex(e){var t={};var r=[];var n=e.filter((function(e){var n=e.tabIndex;if(n===undefined){n=tabindexValue(e)}if(n<=0||n===null||n===undefined){return true}if(!t[n]){t[n]=[];r.push(n)}t[n].push(e);return false}));var a=r.sort().map((function(e){return t[e]})).reduceRight((function(e,t){return t.concat(e)}),n);return a}var ct=void 0;function moveContextToBeginning(e,t){var r=e.indexOf(t);if(r>0){var n=e.splice(r,1);return n.concat(e)}return e}function sortElements(e,t){if(ct.tabsequenceAreaAtImgPosition){e=sortArea(e,t)}e=sortTabindex(e);return e}function queryTabsequence(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.includeContext,n=e.includeOnlyTabbable,a=e.strategy;if(!ct){ct=_supports()}var o=nodeArray(t)[0]||document.documentElement;var i=queryTabbable({context:o,includeContext:r,includeOnlyTabbable:n,strategy:a});if(document.body.createShadowRoot&&A.is.BLINK){i=sortShadowed(i,o,sortElements)}else{i=sortElements(i,o)}if(r){i=moveContextToBeginning(i,o)}return i}var dt={tab:9,left:37,up:38,right:39,down:40,pageUp:33,\"page-up\":33,pageDown:34,\"page-down\":34,end:35,home:36,enter:13,escape:27,space:32,shift:16,capsLock:20,\"caps-lock\":20,ctrl:17,alt:18,meta:91,pause:19,insert:45,delete:46,backspace:8,_alias:{91:[92,93,224]}};for(var ft=1;ft<26;ft++){dt[\"f\"+ft]=ft+111}for(var mt=0;mt<10;mt++){var pt=mt+48;var bt=mt+96;dt[mt]=pt;dt[\"num-\"+mt]=bt;dt._alias[pt]=[bt]}for(var vt=0;vt<26;vt++){var gt=vt+65;var ht=String.fromCharCode(gt).toLowerCase();dt[ht]=gt}var xt={alt:\"altKey\",ctrl:\"ctrlKey\",meta:\"metaKey\",shift:\"shiftKey\"};var yt=Object.keys(xt).map((function(e){return xt[e]}));function createExpectedModifiers(e){var t=e?null:false;return{altKey:t,ctrlKey:t,metaKey:t,shiftKey:t}}function resolveModifiers(e){var t=e.indexOf(\"*\")!==-1;var r=createExpectedModifiers(t);e.forEach((function(e){if(e===\"*\"){return}var t=true;var n=e.slice(0,1);if(n===\"?\"){t=null}else if(n===\"!\"){t=false}if(t!==true){e=e.slice(1)}var a=xt[e];if(!a){throw new TypeError('Unknown modifier \"'+e+'\"')}r[a]=t}));return r}function resolveKey(e){var t=dt[e]||parseInt(e,10);if(!t||typeof t!==\"number\"||isNaN(t)){throw new TypeError('Unknown key \"'+e+'\"')}return[t].concat(dt._alias[t]||[])}function matchModifiers(e,t){return!yt.some((function(r){return typeof e[r]===\"boolean\"&&Boolean(t[r])!==e[r]}))}function keyBinding(e){return e.split(/\\s+/).map((function(e){var t=e.split(\"+\");var r=resolveModifiers(t.slice(0,-1));var n=resolveKey(t.slice(-1));return{keyCodes:n,modifiers:r,matchModifiers:matchModifiers.bind(null,r)}}))}function getParentComparator(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.parent,r=e.element,n=e.includeSelf;if(t){return function isChildOf(e){return Boolean(n&&e===t||t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_CONTAINED_BY)}}else if(r){return function isParentOf(e){return Boolean(n&&r===e||e.compareDocumentPosition(r)&Node.DOCUMENT_POSITION_CONTAINED_BY)}}throw new TypeError(\"util/compare-position#getParentComparator required either options.parent or options.element\")}function whenKey(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t={};var r=nodeArray(e.context)[0]||document.documentElement;delete e.context;var n=nodeArray(e.filter);delete e.filter;var a=Object.keys(e);if(!a.length){throw new TypeError(\"when/key requires at least one option key\")}var o=function registerBinding(e){e.keyCodes.forEach((function(r){if(!t[r]){t[r]=[]}t[r].push(e)}))};a.forEach((function(t){if(typeof e[t]!==\"function\"){throw new TypeError('when/key requires option[\"'+t+'\"] to be a function')}var r=function addCallback(r){r.callback=e[t];return r};keyBinding(t).map(r).forEach(o)}));var i=function handleKeyDown(e){if(e.defaultPrevented){return}if(n.length){var a=getParentComparator({element:e.target,includeSelf:true});if(n.some(a)){return}}var o=e.keyCode||e.which;if(!t[o]){return}t[o].forEach((function(t){if(!t.matchModifiers(e)){return}t.callback.call(r,e,l)}))};r.addEventListener(\"keydown\",i,false);var l=function disengage(){r.removeEventListener(\"keydown\",i,false)};return{disengage:l}}function maintain_tab_focus({context:e}={}){if(!e){e=document.documentElement}queryTabsequence();return whenKey({\"?alt+?shift+tab\":function altShiftTab(t){t.preventDefault();var r=queryTabsequence({context:e});var n=t.shiftKey;var a=r[0];var o=r[r.length-1];var i=n?a:o;var l=n?o:a;if(isActiveElement(i)){l.focus();return}var s=void 0;var u=r.some((function(e,t){if(!isActiveElement(e)){return false}s=t;return true}));if(!u){a.focus();return}var c=n?-1:1;r[s+c].focus()}})}let Et;let wt;let kt=0;function lock(){setTimeout((()=>{if(kt++>0){return}const e=window.innerWidth-document.documentElement.clientWidth;if(e>0){Et=document.body.style.paddingRight;document.body.style.paddingRight=`${e}px`}wt=document.body.style.overflow;document.body.style.overflow=\"hidden\"}))}function unlock(){setTimeout((()=>{if(kt===0||--kt!==0){return}if(Et!==undefined){document.body.style.paddingRight=Et;Et=undefined}if(wt!==undefined){document.body.style.overflow=wt;wt=undefined}}))}const St=function Overlay({className:e,children:t,fixed:r}){p.useEffect((()=>{lock();return()=>{unlock()}}),[]);const[n,a]=p.useState(null);const o=p.useCallback((e=>{a(e)}),[]);p.useEffect((()=>{if(n==null){return}const e=maintain_tab_focus({context:n});return()=>{e.disengage()}}),[n]);return p.createElement(\"div\",{\"data-nextjs-dialog-overlay\":true,className:e,ref:o},p.createElement(\"div\",{\"data-nextjs-dialog-backdrop\":true,\"data-nextjs-dialog-backdrop-fixed\":r?true:undefined}),t)};var _t=__webpack_require__(/*! next/dist/compiled/anser */ \"./node_modules/next/dist/compiled/anser/index.js\");var Tt=__nccwpck_require__.n(_t);const Ct=function Terminal({content:e}){const t=p.useMemo((()=>Tt().ansiToJson(e,{json:true,use_classes:true,remove_empty:true})),[e]);return p.createElement(\"div\",{\"data-nextjs-terminal\":true},p.createElement(\"pre\",null,t.map(((e,t)=>p.createElement(\"span\",{key:`terminal-entry-${t}`,style:{color:e.fg?`var(--color-${e.fg})`:undefined,...e.decoration===\"bold\"?{fontWeight:800}:e.decoration===\"italic\"?{fontStyle:\"italic\"}:undefined}},e.content)))))};const jt=function BuildError({message:e}){const t=p.useCallback((()=>{}),[]);return p.createElement(St,{fixed:true},p.createElement(h,{type:\"error\",\"aria-labelledby\":\"nextjs__container_build_error_label\",\"aria-describedby\":\"nextjs__container_build_error_desc\",onClose:t},p.createElement(y,null,p.createElement(E,{className:\"nextjs-container-build-error-header\"},p.createElement(\"h4\",{id:\"nextjs__container_build_error_label\"},\"Failed to compile\")),p.createElement(x,{className:\"nextjs-container-build-error-body\"},p.createElement(Ct,{content:e}),p.createElement(\"footer\",null,p.createElement(\"p\",{id:\"nextjs__container_build_error_desc\"},p.createElement(\"small\",null,\"This error occurred during the build process and can only be dismissed by fixing the error.\")))))))};const At=noop`\n .nextjs-container-build-error-header > h4 {\n line-height: 1.5;\n margin: 0;\n padding: 0;\n }\n\n .nextjs-container-build-error-body footer {\n margin-top: var(--size-gap);\n }\n .nextjs-container-build-error-body footer p {\n margin: 0;\n }\n\n .nextjs-container-build-error-body small {\n color: #757575;\n }\n`;const CloseIcon=()=>p.createElement(\"svg\",{width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},p.createElement(\"path\",{d:\"M18 6L6 18\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}),p.createElement(\"path\",{d:\"M6 6L18 18\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}));const Ot=function LeftRightDialogHeader({children:e,className:t,previous:r,next:n,close:a}){const o=p.useRef(null);const i=p.useRef(null);const l=p.useRef(null);const[s,u]=p.useState(null);const c=p.useCallback((e=>{u(e)}),[]);p.useEffect((()=>{if(s==null){return}const e=s.getRootNode();const t=self.document;function handler(t){if(t.key===\"ArrowLeft\"){t.stopPropagation();if(o.current){o.current.focus()}r&&r()}else if(t.key===\"ArrowRight\"){t.stopPropagation();if(i.current){i.current.focus()}n&&n()}else if(t.key===\"Escape\"){t.stopPropagation();if(e instanceof ShadowRoot){const t=e.activeElement;if(t&&t!==l.current&&t instanceof HTMLElement){t.blur();return}}if(a){a()}}}e.addEventListener(\"keydown\",handler);if(e!==t){t.addEventListener(\"keydown\",handler)}return function(){e.removeEventListener(\"keydown\",handler);if(e!==t){t.removeEventListener(\"keydown\",handler)}}}),[a,s,n,r]);p.useEffect((()=>{if(s==null){return}const e=s.getRootNode();if(e instanceof ShadowRoot){const t=e.activeElement;if(r==null){if(o.current&&t===o.current){o.current.blur()}}else if(n==null){if(i.current&&t===i.current){i.current.blur()}}}}),[s,n,r]);return p.createElement(\"div\",{\"data-nextjs-dialog-left-right\":true,className:t},p.createElement(\"nav\",{ref:c},p.createElement(\"button\",{ref:o,type:\"button\",disabled:r==null?true:undefined,\"aria-disabled\":r==null?true:undefined,onClick:r??undefined},p.createElement(\"svg\",{viewBox:\"0 0 14 14\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},p.createElement(\"title\",null,\"previous\"),p.createElement(\"path\",{d:\"M6.99996 1.16666L1.16663 6.99999L6.99996 12.8333M12.8333 6.99999H1.99996H12.8333Z\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}))),p.createElement(\"button\",{ref:i,type:\"button\",disabled:n==null?true:undefined,\"aria-disabled\":n==null?true:undefined,onClick:n??undefined},p.createElement(\"svg\",{viewBox:\"0 0 14 14\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},p.createElement(\"title\",null,\"next\"),p.createElement(\"path\",{d:\"M6.99996 1.16666L12.8333 6.99999L6.99996 12.8333M1.16663 6.99999H12H1.16663Z\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}))),\" \",e),a?p.createElement(\"button\",{\"data-nextjs-errors-dialog-left-right-close-button\":true,ref:l,type:\"button\",onClick:a,\"aria-label\":\"Close\"},p.createElement(\"span\",{\"aria-hidden\":\"true\"},p.createElement(CloseIcon,null))):null)};const Nt=noop`\n [data-nextjs-dialog-left-right] {\n display: flex;\n flex-direction: row;\n align-content: center;\n align-items: center;\n justify-content: space-between;\n }\n [data-nextjs-dialog-left-right] > nav > button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n width: calc(var(--size-gap-double) + var(--size-gap));\n height: calc(var(--size-gap-double) + var(--size-gap));\n font-size: 0;\n border: none;\n background-color: rgba(255, 85, 85, 0.1);\n color: var(--color-ansi-red);\n cursor: pointer;\n transition: background-color 0.25s ease;\n }\n [data-nextjs-dialog-left-right] > nav > button > svg {\n width: auto;\n height: calc(var(--size-gap) + var(--size-gap-half));\n }\n [data-nextjs-dialog-left-right] > nav > button:hover {\n background-color: rgba(255, 85, 85, 0.2);\n }\n [data-nextjs-dialog-left-right] > nav > button:disabled {\n background-color: rgba(255, 85, 85, 0.1);\n color: rgba(255, 85, 85, 0.4);\n cursor: not-allowed;\n }\n\n [data-nextjs-dialog-left-right] > nav > button:first-of-type {\n border-radius: var(--size-gap-half) 0 0 var(--size-gap-half);\n margin-right: 1px;\n }\n [data-nextjs-dialog-left-right] > nav > button:last-of-type {\n border-radius: 0 var(--size-gap-half) var(--size-gap-half) 0;\n }\n\n [data-nextjs-dialog-left-right] > button:last-of-type {\n border: 0;\n padding: 0;\n\n background-color: transparent;\n appearance: none;\n\n opacity: 0.4;\n transition: opacity 0.25s ease;\n }\n [data-nextjs-dialog-left-right] > button:last-of-type:hover {\n opacity: 0.7;\n }\n`;const It=noop`\n [data-nextjs-toast] {\n position: fixed;\n bottom: var(--size-gap-double);\n left: var(--size-gap-double);\n max-width: 420px;\n z-index: 9000;\n }\n\n @media (max-width: 440px) {\n [data-nextjs-toast] {\n max-width: 90vw;\n left: 5vw;\n }\n }\n\n [data-nextjs-toast-wrapper] {\n padding: 16px;\n border-radius: var(--size-gap-half);\n font-weight: 500;\n color: var(--color-ansi-bright-white);\n background-color: var(--color-ansi-red);\n box-shadow: 0px var(--size-gap-double) var(--size-gap-quad)\n rgba(0, 0, 0, 0.25);\n }\n`;const Lt=function Toast({onClick:e,children:t,className:r}){return p.createElement(\"div\",{\"data-nextjs-toast\":true,onClick:e,className:r},p.createElement(\"div\",{\"data-nextjs-toast-wrapper\":true},t))};var Ft=__webpack_require__(/*! next/dist/compiled/strip-ansi */ \"./node_modules/next/dist/compiled/strip-ansi/index.js\");var Dt=__nccwpck_require__.n(Ft);const Mt=function CodeFrame({stackFrame:e,codeFrame:t}){const r=p.useMemo((()=>{const e=t.split(/\\r?\\n/g);const r=e.map((e=>/^>? +\\d+ +\\| [ ]+/.exec(Dt()(e))===null?null:/^>? +\\d+ +\\| ( *)/.exec(Dt()(e)))).filter(Boolean).map((e=>e.pop())).reduce(((e,t)=>isNaN(e)?t.length:Math.min(e,t.length)),NaN);if(r>1){const t=\" \".repeat(r);return e.map(((e,r)=>~(r=e.indexOf(\"|\"))?e.substring(0,r)+e.substring(r).replace(t,\"\"):e)).join(\"\\n\")}return e.join(\"\\n\")}),[t]);const n=p.useMemo((()=>Tt().ansiToJson(r,{json:true,use_classes:true,remove_empty:true})),[r]);const a=p.useCallback((()=>{const t=new URLSearchParams;for(const r in e){t.append(r,(e[r]??\"\").toString())}self.fetch(`${ false||\"\"}/__nextjs_launch-editor?${t.toString()}`).then((()=>{}),(()=>{console.error(\"There was an issue opening this code in your editor.\")}))}),[e]);return p.createElement(\"div\",{\"data-nextjs-codeframe\":true},p.createElement(\"div\",null,p.createElement(\"p\",{role:\"link\",onClick:a,tabIndex:1,title:\"Click to open in your editor\"},p.createElement(\"span\",null,getFrameSource(e),\" @ \",e.methodName),p.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"},p.createElement(\"path\",{d:\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"}),p.createElement(\"polyline\",{points:\"15 3 21 3 21 9\"}),p.createElement(\"line\",{x1:\"10\",y1:\"14\",x2:\"21\",y2:\"3\"})))),p.createElement(\"pre\",null,n.map(((e,t)=>p.createElement(\"span\",{key:`frame-${t}`,style:{color:e.fg?`var(--color-${e.fg})`:undefined,...e.decoration===\"bold\"?{fontWeight:800}:e.decoration===\"italic\"?{fontStyle:\"italic\"}:undefined}},e.content)))))};const Rt=function CallStackFrame({frame:e}){const t=e.originalStackFrame??e.sourceStackFrame;const r=Boolean(e.originalCodeFrame);const n=p.useCallback((()=>{if(!r)return;const e=new URLSearchParams;for(const r in t){e.append(r,(t[r]??\"\").toString())}self.fetch(`${ false||\"\"}/__nextjs_launch-editor?${e.toString()}`).then((()=>{}),(()=>{console.error(\"There was an issue opening this code in your editor.\")}))}),[r,t]);return p.createElement(\"div\",{\"data-nextjs-call-stack-frame\":true},p.createElement(\"h3\",{\"data-nextjs-frame-expanded\":Boolean(e.expanded)},t.methodName),p.createElement(\"div\",{\"data-has-source\":r?\"true\":undefined,tabIndex:r?10:undefined,role:r?\"link\":undefined,onClick:n,title:r?\"Click to open in your editor\":undefined},p.createElement(\"span\",null,getFrameSource(t)),p.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"},p.createElement(\"path\",{d:\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"}),p.createElement(\"polyline\",{points:\"15 3 21 3 21 9\"}),p.createElement(\"line\",{x1:\"10\",y1:\"14\",x2:\"21\",y2:\"3\"}))))};const zt=function RuntimeError({error:e}){const t=p.useMemo((()=>e.frames.findIndex((e=>e.expanded&&Boolean(e.originalCodeFrame)&&Boolean(e.originalStackFrame)))),[e.frames]);const r=p.useMemo((()=>e.frames[t]??null),[e.frames,t]);const n=p.useMemo((()=>t<0?[]:e.frames.slice(0,t)),[e.frames,t]);const[a,o]=p.useState(r==null);const i=p.useCallback((()=>{o((e=>!e))}),[]);const l=p.useMemo((()=>n.filter((e=>e.expanded||a))),[a,n]);const s=p.useMemo((()=>e.frames.slice(t+1)),[e.frames,t]);const u=p.useMemo((()=>s.filter((e=>e.expanded||a))),[a,s]);const c=p.useMemo((()=>s.length!==u.length||a&&r!=null),[a,s.length,r,u.length]);return p.createElement(p.Fragment,null,r?p.createElement(p.Fragment,null,p.createElement(\"h2\",null,\"Source\"),l.map(((e,t)=>p.createElement(Rt,{key:`leading-frame-${t}-${a}`,frame:e}))),p.createElement(Mt,{stackFrame:r.originalStackFrame,codeFrame:r.originalCodeFrame})):undefined,e.componentStack?p.createElement(p.Fragment,null,p.createElement(\"h2\",null,\"Component Stack\"),e.componentStack.map(((e,t)=>p.createElement(\"div\",{key:t,\"data-nextjs-component-stack-frame\":true},p.createElement(\"h3\",null,e))))):null,u.length?p.createElement(p.Fragment,null,p.createElement(\"h2\",null,\"Call Stack\"),u.map(((e,t)=>p.createElement(Rt,{key:`call-stack-${t}-${a}`,frame:e})))):undefined,c?p.createElement(p.Fragment,null,p.createElement(\"button\",{tabIndex:10,\"data-nextjs-data-runtime-error-collapsed-action\":true,type:\"button\",onClick:i},a?\"Hide\":\"Show\",\" collapsed frames\")):undefined)};const Bt=noop`\n button[data-nextjs-data-runtime-error-collapsed-action] {\n background: none;\n border: none;\n padding: 0;\n font-size: var(--size-font-small);\n line-height: var(--size-font-bigger);\n color: var(--color-accents-3);\n }\n\n [data-nextjs-call-stack-frame]:not(:last-child),\n [data-nextjs-component-stack-frame]:not(:last-child) {\n margin-bottom: var(--size-gap-double);\n }\n\n [data-nextjs-call-stack-frame] > h3,\n [data-nextjs-component-stack-frame] > h3 {\n margin-top: 0;\n margin-bottom: var(--size-gap);\n font-family: var(--font-stack-monospace);\n font-size: var(--size-font);\n color: #222;\n }\n [data-nextjs-call-stack-frame] > h3[data-nextjs-frame-expanded='false'] {\n color: #666;\n }\n [data-nextjs-call-stack-frame] > div {\n display: flex;\n align-items: center;\n padding-left: calc(var(--size-gap) + var(--size-gap-half));\n font-size: var(--size-font-small);\n color: #999;\n }\n [data-nextjs-call-stack-frame] > div > svg {\n width: auto;\n height: var(--size-font-small);\n margin-left: var(--size-gap);\n\n display: none;\n }\n\n [data-nextjs-call-stack-frame] > div[data-has-source] {\n cursor: pointer;\n }\n [data-nextjs-call-stack-frame] > div[data-has-source]:hover {\n text-decoration: underline dotted;\n }\n [data-nextjs-call-stack-frame] > div[data-has-source] > svg {\n display: unset;\n }\n`;function getErrorSignature(e){const{event:t}=e;switch(t.type){case o:case i:{return`${t.reason.name}::${t.reason.message}::${t.reason.stack}`}default:{}}const r=t;return\"\"}const Ht=function HotlinkedText(e){const{text:t}=e;const r=/https?:\\/\\/[^\\s/$.?#].[^\\s)'\"]*/i;return p.createElement(p.Fragment,null,r.test(t)?t.split(\" \").map(((e,t,n)=>{if(r.test(e)){const a=r.exec(e);return p.createElement(p.Fragment,{key:`link-${t}`},a&&p.createElement(\"a\",{href:a[0],target:\"_blank\",rel:\"noreferrer noopener\"},e),t===n.length-1?\"\":\" \")}return t===n.length-1?p.createElement(p.Fragment,{key:`text-${t}`},e):p.createElement(p.Fragment,{key:`text-${t}`},e,\" \")})):t)};const qt=function Errors({errors:e}){const[t,r]=p.useState({});const[n,a]=p.useMemo((()=>{let r=[];let n=null;for(let a=0;a0){const t=e[a-1];if(getErrorSignature(t)===getErrorSignature(o)){continue}}n=o;break}return[r,n]}),[e,t]);const o=p.useMemo((()=>n.length<1&&Boolean(e.length)),[e.length,n.length]);p.useEffect((()=>{if(a==null){return}let e=true;getErrorByType(a).then((t=>{if(e){r((e=>({...e,[t.id]:t})))}}),(()=>{}));return()=>{e=false}}),[a]);const[i,l]=p.useState(\"fullscreen\");const[s,u]=p.useState(0);const c=p.useCallback((e=>{e?.preventDefault();u((e=>Math.max(0,e-1)))}),[]);const d=p.useCallback((e=>{e?.preventDefault();u((e=>Math.max(0,Math.min(n.length-1,e+1))))}),[n.length]);const f=p.useMemo((()=>n[s]??null),[s,n]);p.useEffect((()=>{if(e.length<1){r({});l(\"hidden\");u(0)}}),[e.length]);const m=p.useCallback((e=>{e?.preventDefault();l(\"minimized\")}),[]);const b=p.useCallback((e=>{e?.preventDefault();l(\"hidden\")}),[]);const v=p.useCallback((e=>{e?.preventDefault();l(\"fullscreen\")}),[]);if(e.length<1||f==null){return null}if(o){return p.createElement(St,null)}if(i===\"hidden\"){return null}if(i===\"minimized\"){return p.createElement(Lt,{className:\"nextjs-toast-errors-parent\",onClick:v},p.createElement(\"div\",{className:\"nextjs-toast-errors\"},p.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"},p.createElement(\"circle\",{cx:\"12\",cy:\"12\",r:\"10\"}),p.createElement(\"line\",{x1:\"12\",y1:\"8\",x2:\"12\",y2:\"12\"}),p.createElement(\"line\",{x1:\"12\",y1:\"16\",x2:\"12.01\",y2:\"16\"})),p.createElement(\"span\",null,n.length,\" error\",n.length>1?\"s\":\"\"),p.createElement(\"button\",{\"data-nextjs-toast-errors-hide-button\":true,className:\"nextjs-toast-errors-hide-button\",type:\"button\",onClick:e=>{e.stopPropagation();b()},\"aria-label\":\"Hide Errors\"},p.createElement(CloseIcon,null))))}const g=[\"server\",\"edge-server\"].includes(getErrorSource(f.error)||\"\");return p.createElement(St,null,p.createElement(h,{type:\"error\",\"aria-labelledby\":\"nextjs__container_errors_label\",\"aria-describedby\":\"nextjs__container_errors_desc\",onClose:g?undefined:m},p.createElement(y,null,p.createElement(E,{className:\"nextjs-container-errors-header\"},p.createElement(Ot,{previous:s>0?c:null,next:s h1 {\n font-size: var(--size-font-big);\n line-height: var(--size-font-bigger);\n font-weight: bold;\n margin: 0;\n margin-top: calc(var(--size-gap-double) + var(--size-gap-half));\n }\n .nextjs-container-errors-header small {\n font-size: var(--size-font-small);\n color: var(--color-accents-1);\n margin-left: var(--size-gap-double);\n }\n .nextjs-container-errors-header small > span {\n font-family: var(--font-stack-monospace);\n }\n .nextjs-container-errors-header > p {\n font-family: var(--font-stack-monospace);\n font-size: var(--size-font-small);\n line-height: var(--size-font-big);\n font-weight: bold;\n margin: 0;\n margin-top: var(--size-gap-half);\n color: var(--color-ansi-red);\n white-space: pre-wrap;\n }\n .nextjs-container-errors-header > div > small {\n margin: 0;\n margin-top: var(--size-gap-half);\n }\n .nextjs-container-errors-header > p > a {\n color: var(--color-ansi-red);\n }\n\n .nextjs-container-errors-body > h2:not(:first-child) {\n margin-top: calc(var(--size-gap-double) + var(--size-gap));\n }\n .nextjs-container-errors-body > h2 {\n margin-bottom: var(--size-gap);\n font-size: var(--size-font-big);\n }\n\n .nextjs-toast-errors-parent {\n cursor: pointer;\n transition: transform 0.2s ease;\n }\n .nextjs-toast-errors-parent:hover {\n transform: scale(1.1);\n }\n .nextjs-toast-errors {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n }\n .nextjs-toast-errors > svg {\n margin-right: var(--size-gap);\n }\n .nextjs-toast-errors-hide-button {\n margin-left: var(--size-gap-triple);\n border: none;\n background: none;\n color: var(--color-ansi-bright-white);\n padding: 0;\n transition: opacity 0.25s ease;\n opacity: 0.7;\n }\n .nextjs-toast-errors-hide-button:hover {\n opacity: 1;\n }\n`;class ErrorBoundary extends b().PureComponent{constructor(){super(...arguments);this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){this.props.onError(e,t?.componentStack||null);if(!this.props.globalOverlay){this.setState({error:e})}}render(){return this.state.error||this.props.globalOverlay&&this.props.isMounted?this.props.globalOverlay?b().createElement(\"html\",null,b().createElement(\"head\",null),b().createElement(\"body\",null)):null:this.props.children}}function Base(){return p.createElement(\"style\",null,noop`\n :host {\n --size-gap-half: 4px;\n --size-gap: 8px;\n --size-gap-double: 16px;\n --size-gap-triple: 24px;\n --size-gap-quad: 32px;\n\n --size-font-small: 14px;\n --size-font: 16px;\n --size-font-big: 20px;\n --size-font-bigger: 24px;\n\n --color-accents-1: #808080;\n --color-accents-2: #222222;\n --color-accents-3: #404040;\n\n --font-stack-monospace: 'SFMono-Regular', Consolas, 'Liberation Mono',\n Menlo, Courier, monospace;\n\n --color-ansi-selection: rgba(95, 126, 151, 0.48);\n --color-ansi-bg: #111111;\n --color-ansi-fg: #cccccc;\n\n --color-ansi-white: #777777;\n --color-ansi-black: #141414;\n --color-ansi-blue: #00aaff;\n --color-ansi-cyan: #88ddff;\n --color-ansi-green: #98ec65;\n --color-ansi-magenta: #aa88ff;\n --color-ansi-red: #ff5555;\n --color-ansi-yellow: #ffcc33;\n --color-ansi-bright-white: #ffffff;\n --color-ansi-bright-black: #777777;\n --color-ansi-bright-blue: #33bbff;\n --color-ansi-bright-cyan: #bbecff;\n --color-ansi-bright-green: #b6f292;\n --color-ansi-bright-magenta: #cebbff;\n --color-ansi-bright-red: #ff8888;\n --color-ansi-bright-yellow: #ffd966;\n }\n\n .mono {\n font-family: var(--font-stack-monospace);\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-bottom: var(--size-gap);\n font-weight: 500;\n line-height: 1.5;\n }\n\n h1 {\n font-size: 40px;\n }\n h2 {\n font-size: 32px;\n }\n h3 {\n font-size: 28px;\n }\n h4 {\n font-size: 24px;\n }\n h5 {\n font-size: 20px;\n }\n h6 {\n font-size: 16px;\n }\n `)}const Wt=noop`\n [data-nextjs-codeframe] {\n overflow: auto;\n border-radius: var(--size-gap-half);\n background-color: var(--color-ansi-bg);\n color: var(--color-ansi-fg);\n }\n [data-nextjs-codeframe]::selection,\n [data-nextjs-codeframe] *::selection {\n background-color: var(--color-ansi-selection);\n }\n [data-nextjs-codeframe] * {\n color: inherit;\n background-color: transparent;\n font-family: var(--font-stack-monospace);\n }\n\n [data-nextjs-codeframe] > * {\n margin: 0;\n padding: calc(var(--size-gap) + var(--size-gap-half))\n calc(var(--size-gap-double) + var(--size-gap-half));\n }\n [data-nextjs-codeframe] > div {\n display: inline-block;\n width: auto;\n min-width: 100%;\n border-bottom: 1px solid var(--color-ansi-bright-black);\n }\n [data-nextjs-codeframe] > div > p {\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n margin: 0;\n }\n [data-nextjs-codeframe] > div > p:hover {\n text-decoration: underline dotted;\n }\n [data-nextjs-codeframe] div > p > svg {\n width: auto;\n height: 1em;\n margin-left: 8px;\n }\n [data-nextjs-codeframe] div > pre {\n overflow: hidden;\n display: inline-block;\n }\n`;const Vt=noop`\n [data-nextjs-dialog-overlay] {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: auto;\n z-index: 9000;\n\n display: flex;\n align-content: center;\n align-items: center;\n flex-direction: column;\n padding: 10vh 15px 0;\n }\n\n @media (max-height: 812px) {\n [data-nextjs-dialog-overlay] {\n padding: 15px 15px 0;\n }\n }\n\n [data-nextjs-dialog-backdrop] {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: rgba(17, 17, 17, 0.2);\n pointer-events: all;\n z-index: -1;\n }\n\n [data-nextjs-dialog-backdrop-fixed] {\n cursor: not-allowed;\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n }\n`;const $t=noop`\n [data-nextjs-terminal] {\n border-radius: var(--size-gap-half);\n background-color: var(--color-ansi-bg);\n color: var(--color-ansi-fg);\n }\n [data-nextjs-terminal]::selection,\n [data-nextjs-terminal] *::selection {\n background-color: var(--color-ansi-selection);\n }\n [data-nextjs-terminal] * {\n color: inherit;\n background-color: transparent;\n font-family: var(--font-stack-monospace);\n }\n [data-nextjs-terminal] > * {\n margin: 0;\n padding: calc(var(--size-gap) + var(--size-gap-half))\n calc(var(--size-gap-double) + var(--size-gap-half));\n }\n\n [data-nextjs-terminal] pre {\n white-space: pre-wrap;\n word-break: break-word;\n }\n`;function ComponentStyles(){return p.createElement(\"style\",null,noop`\n ${Vt}\n ${It}\n ${w}\n ${Nt}\n ${Wt}\n ${$t}\n \n ${At}\n ${Pt}\n ${Bt}\n `)}function CssReset(){return p.createElement(\"style\",null,noop`\n :host {\n all: initial;\n\n /* the direction property is not reset by 'all' */\n direction: ltr;\n }\n\n /*!\n * Bootstrap Reboot v4.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n }\n\n article,\n aside,\n figcaption,\n figure,\n footer,\n header,\n hgroup,\n main,\n nav,\n section {\n display: block;\n }\n\n :host {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,\n 'Helvetica Neue', Arial, 'Noto Sans', sans-serif,\n 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n 'Noto Color Emoji';\n font-size: 16px;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n }\n\n [tabindex='-1']:focus:not(:focus-visible) {\n outline: 0 !important;\n }\n\n hr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: 0;\n margin-bottom: 8px;\n }\n\n p {\n margin-top: 0;\n margin-bottom: 16px;\n }\n\n abbr[title],\n abbr[data-original-title] {\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n -webkit-text-decoration-skip-ink: none;\n text-decoration-skip-ink: none;\n }\n\n address {\n margin-bottom: 16px;\n font-style: normal;\n line-height: inherit;\n }\n\n ol,\n ul,\n dl {\n margin-top: 0;\n margin-bottom: 16px;\n }\n\n ol ol,\n ul ul,\n ol ul,\n ul ol {\n margin-bottom: 0;\n }\n\n dt {\n font-weight: 700;\n }\n\n dd {\n margin-bottom: 8px;\n margin-left: 0;\n }\n\n blockquote {\n margin: 0 0 16px;\n }\n\n b,\n strong {\n font-weight: bolder;\n }\n\n small {\n font-size: 80%;\n }\n\n sub,\n sup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n }\n\n sub {\n bottom: -0.25em;\n }\n\n sup {\n top: -0.5em;\n }\n\n a {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n }\n\n a:hover {\n color: #0056b3;\n text-decoration: underline;\n }\n\n a:not([href]) {\n color: inherit;\n text-decoration: none;\n }\n\n a:not([href]):hover {\n color: inherit;\n text-decoration: none;\n }\n\n pre,\n code,\n kbd,\n samp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas,\n 'Liberation Mono', 'Courier New', monospace;\n font-size: 1em;\n }\n\n pre {\n margin-top: 0;\n margin-bottom: 16px;\n overflow: auto;\n }\n\n figure {\n margin: 0 0 16px;\n }\n\n img {\n vertical-align: middle;\n border-style: none;\n }\n\n svg {\n overflow: hidden;\n vertical-align: middle;\n }\n\n table {\n border-collapse: collapse;\n }\n\n caption {\n padding-top: 12px;\n padding-bottom: 12px;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n }\n\n th {\n text-align: inherit;\n }\n\n label {\n display: inline-block;\n margin-bottom: 8px;\n }\n\n button {\n border-radius: 0;\n }\n\n button:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n }\n\n input,\n button,\n select,\n optgroup,\n textarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n }\n\n button,\n input {\n overflow: visible;\n }\n\n button,\n select {\n text-transform: none;\n }\n\n select {\n word-wrap: normal;\n }\n\n button,\n [type='button'],\n [type='reset'],\n [type='submit'] {\n -webkit-appearance: button;\n }\n\n button:not(:disabled),\n [type='button']:not(:disabled),\n [type='reset']:not(:disabled),\n [type='submit']:not(:disabled) {\n cursor: pointer;\n }\n\n button::-moz-focus-inner,\n [type='button']::-moz-focus-inner,\n [type='reset']::-moz-focus-inner,\n [type='submit']::-moz-focus-inner {\n padding: 0;\n border-style: none;\n }\n\n input[type='radio'],\n input[type='checkbox'] {\n box-sizing: border-box;\n padding: 0;\n }\n\n input[type='date'],\n input[type='time'],\n input[type='datetime-local'],\n input[type='month'] {\n -webkit-appearance: listbox;\n }\n\n textarea {\n overflow: auto;\n resize: vertical;\n }\n\n fieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n }\n\n legend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: 8px;\n font-size: 24px;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n }\n\n progress {\n vertical-align: baseline;\n }\n\n [type='number']::-webkit-inner-spin-button,\n [type='number']::-webkit-outer-spin-button {\n height: auto;\n }\n\n [type='search'] {\n outline-offset: -2px;\n -webkit-appearance: none;\n }\n\n [type='search']::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n\n ::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n }\n\n output {\n display: inline-block;\n }\n\n summary {\n display: list-item;\n cursor: pointer;\n }\n\n template {\n display: none;\n }\n\n [hidden] {\n display: none !important;\n }\n `)}function pushErrorFilterDuplicates(e,t){return[...e.filter((e=>e.event.reason!==t.event.reason)),t]}function reducer(r,l){switch(l.type){case e:{return{...r,buildError:null}}case t:{return{...r,buildError:l.message}}case a:{return{...r,refreshState:{type:\"pending\",errors:[]}}}case n:{return{...r,buildError:null,errors:r.refreshState.type===\"pending\"?r.refreshState.errors:[],refreshState:{type:\"idle\"}}}case o:case i:{switch(r.refreshState.type){case\"idle\":{return{...r,nextId:r.nextId+1,errors:pushErrorFilterDuplicates(r.errors,{id:r.nextId,event:l})}}case\"pending\":{return{...r,nextId:r.nextId+1,refreshState:{...r.refreshState,errors:pushErrorFilterDuplicates(r.refreshState.errors,{id:r.nextId,event:l})}}}default:const e=r.refreshState;return r}}default:{const e=l;return r}}}const shouldPreventDisplay=(e,t)=>{if(!t||!e){return false}return t.includes(e)};const Kt=function ReactDevOverlay({children:e,preventDisplay:t,globalOverlay:r}){const[n,a]=p.useReducer(reducer,{nextId:1,buildError:null,errors:[],refreshState:{type:\"idle\"}});p.useEffect((()=>{on(a);return function(){off(a)}}),[a]);const o=p.useCallback(((e,t)=>{}),[]);const i=n.buildError!=null;const l=Boolean(n.errors.length);const s=i?\"build\":l?\"runtime\":null;const u=s!==null;return p.createElement(p.Fragment,null,p.createElement(ErrorBoundary,{globalOverlay:r,isMounted:u,onError:o},e??null),u?p.createElement(g,{globalOverlay:r},p.createElement(CssReset,null),p.createElement(Base,null),p.createElement(ComponentStyles,null),shouldPreventDisplay(s,t)?null:i?p.createElement(jt,{message:n.buildError}):l?p.createElement(qt,{errors:n.errors}):undefined):undefined)};var Zt=Kt;(0,f.patchConsoleError)();let Ut=false;let Gt=undefined;function onUnhandledError(e){const t=e?.error;if(!t||!(t instanceof Error)||typeof t.stack!==\"string\"){return}if(t.message.match(/(hydration|content does not match|did not match)/i)){if(f.hydrationErrorWarning){t.message+=\"\\n\\n\"+f.hydrationErrorWarning}t.message+=`\\n\\nSee more info here: https://nextjs.org/docs/messages/react-hydration-error`}const r=t;const n=typeof f.hydrationErrorComponentStack===\"string\"?(0,d.parseComponentStack)(f.hydrationErrorComponentStack).map((e=>e.component)):undefined;emit({type:o,reason:t,frames:parseStack(r.stack),componentStack:n})}function onUnhandledRejection(e){const t=e?.reason;if(!t||!(t instanceof Error)||typeof t.stack!==\"string\"){return}const r=t;emit({type:i,reason:t,frames:parseStack(r.stack)})}function register(){if(Ut){return}Ut=true;try{const e=Error.stackTraceLimit;Error.stackTraceLimit=50;Gt=e}catch{}window.addEventListener(\"error\",onUnhandledError);window.addEventListener(\"unhandledrejection\",onUnhandledRejection)}function unregister(){if(!Ut){return}Ut=false;if(Gt!==undefined){try{Error.stackTraceLimit=Gt}catch{}Gt=undefined}window.removeEventListener(\"error\",onUnhandledError);window.removeEventListener(\"unhandledrejection\",onUnhandledRejection)}function onBuildOk(){emit({type:e})}function onBuildError(e){emit({type:t,message:e})}function onRefresh(){emit({type:n})}function onBeforeRefresh(){emit({type:a})}}();module.exports=r})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL0BuZXh0L3JlYWN0LWRldi1vdmVybGF5L2Rpc3QvY2xpZW50LmpzLmpzIiwibWFwcGluZ3MiOiI7QUFBQSxZQUFZLGFBQWEsT0FBTyxrQkFBa0Isc0NBQXNDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxzQkFBc0IsMENBQTBDLHlCQUF5QixFQUFFLFdBQVcsaUNBQWlDLFNBQVMseUNBQXlDLFNBQVMsOEJBQThCLDBCQUEwQixFQUFFLE1BQU0sTUFBTSxrWUFBa1ksNkJBQTZCLHNCQUFzQixnQ0FBZ0MsYUFBYSxxREFBcUQsSUFBSSw0QkFBNEIsOEhBQThILDhDQUE4QyxXQUFXLEVBQUUsMkJBQTJCLHFCQUFxQixtQkFBbUIsc0NBQXNDLFdBQVcsRUFBRSwrQ0FBK0MsK0JBQStCLDRCQUE0QixFQUFFLGdDQUFnQyxXQUFXLHFDQUFxQyx5Q0FBeUMsd0JBQXdCLGFBQWEsYUFBYSwyQ0FBMkMsTUFBTSx1RkFBdUYsTUFBTSx3REFBd0QsUUFBUSxpRkFBaUYsR0FBRyxTQUFTLDhIQUE4SCw4Q0FBOEMsV0FBVyxFQUFFLDJCQUEyQix1QkFBdUIsU0FBUyxnQ0FBZ0MsV0FBVyxrQkFBa0IsaUJBQWlCLFlBQVksWUFBWSxXQUFXLElBQUksc0NBQXNDLFFBQVEsUUFBUSxpQkFBaUIsaUJBQWlCLFlBQVksa0NBQWtDLGlDQUFpQyxvQkFBb0IsWUFBWSxVQUFVLHlCQUF5QixJQUFJLEVBQUUsVUFBVSxHQUFHLFlBQVksb0NBQW9DLGdCQUFnQiw0REFBNEQsMkJBQTJCLHlCQUF5QixLQUFLLEdBQUcsWUFBWSxvQ0FBb0Msa0RBQWtELEdBQUcsWUFBWSxrQ0FBa0Msb0RBQW9ELDRDQUE0QyxlQUFlLEVBQUUsc0NBQXNDLFdBQVcsR0FBRyxHQUFHLG1FQUFtRSxTQUFTLEtBQUssU0FBUyxZQUFZLHlCQUF5Qix5QkFBeUIsMkJBQTJCLFVBQVUsMkJBQTJCLHNCQUFzQiwyQkFBMkIsc0JBQXNCLDRCQUE0Qix1QkFBdUIs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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSwyQkFBMkI7QUFDN0IsVUFBVTtBQUNWLFVBQVU7QUFDVixVQUFVO0FBQ1YsVUFBVTtBQUNWLFVBQVU7QUFDVixVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1YsVUFBVTtBQUNWLFVBQVU7QUFDVixTQUFTLG9CQUFvQjtBQUM3QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLHdDQUF3Qyw0REFBNEQsc0JBQXNCLGVBQWUsUUFBUSxPQUFPLHNCQUFzQixRQUFRLE9BQU8sMkJBQTJCLFFBQVEsT0FBTyxtQkFBbUIsMkJBQTJCLFFBQVEsT0FBTyxtR0FBbUcsY0FBYyxlQUFlLDRCQUE0QixZQUFZLE9BQU8sa0VBQWtFLG9CQUFvQixHQUFHLGVBQWUsT0FBTyxxQ0FBcUMsMEVBQTBFLG9CQUFvQixJQUFJLCtCQUErQixVQUFVLFNBQVMsVUFBVSxXQUFXLG1DQUFtQyxXQUFXLGFBQWEsc0JBQXNCLG1DQUFtQyw0Q0FBNEMsRUFBRSxpQ0FBaUMsaURBQWlELGFBQWEsRUFBRSxrQkFBa0IsTUFBTSxrQkFBa0IsUUFBUSxPQUFPLGdDQUFnQyxNQUFNLDJCQUEyQixpQ0FBaUMsbUNBQW1DLGlCQUFpQixzRUFBc0Usc0NBQXNDLCtCQUErQixnQkFBZ0Isc0pBQXNKLHFCQUFxQix3QkFBd0IsZ0JBQWdCLHlCQUF5QixVQUFVLDBCQUEwQixhQUFhLGlCQUFpQiw2QkFBNkIsaUJBQWlCLHlEQUF5RCxPQUFPLHlFQUF5RSw0QkFBNEIsMENBQTBDLDRGQUE0RixVQUFVLG1KQUFtSixNQUFNLDREQUE0RCxFQUFFLGlDQUFpQyxrQkFBa0IseURBQXlELE9BQU8sVUFBVSxNQUFNLDJDQUEyQyxFQUFFLG9CQUFvQixPQUFPLE9BQU8sUUFBUSxJQUFJLDhCQUE4Qix5QkFBeUIsS0FBSyxPQUFPLGtEQUFrRCxtRUFBbUUsc0JBQXNCLFFBQVEsT0FBTyxTQUFTLG1CQUFtQixJQUFJLHlCQUF5QixPQUFPLGFBQWEscURBQXFELHNFQUFzRSxxQkFBcUIsTUFBTSxPQUFPLEVBQUUseUJBQXlCLE1BQU0saUJBQWlCLEVBQUUscUJBQXFCLE1BQU0sT0FBTyxFQUFFLDJCQUEyQixNQUFNLE9BQU8sR0FBRyxHQUFHLGlCQUFpQiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL0BuZXh0L3JlYWN0LWRldi1vdmVybGF5L2Rpc3QvY2xpZW50LmpzPzRkMzAiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIGU9ezg3NjpmdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7MCYmMDtmdW5jdGlvbiBfZXhwb3J0KGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTp0cnVlLGdldDp0W3JdfSl9X2V4cG9ydCh0LHtoeWRyYXRpb25FcnJvcldhcm5pbmc6ZnVuY3Rpb24oKXtyZXR1cm4gcn0saHlkcmF0aW9uRXJyb3JDb21wb25lbnRTdGFjazpmdW5jdGlvbigpe3JldHVybiBufSxwYXRjaENvbnNvbGVFcnJvcjpmdW5jdGlvbigpe3JldHVybiBwYXRjaENvbnNvbGVFcnJvcn19KTtsZXQgcjtsZXQgbjtjb25zdCBhPW5ldyBTZXQoWydXYXJuaW5nOiBUZXh0IGNvbnRlbnQgZGlkIG5vdCBtYXRjaC4gU2VydmVyOiBcIiVzXCIgQ2xpZW50OiBcIiVzXCIlcycsXCJXYXJuaW5nOiBFeHBlY3RlZCBzZXJ2ZXIgSFRNTCB0byBjb250YWluIGEgbWF0Y2hpbmcgPCVzPiBpbiA8JXM+LiVzXCIsJ1dhcm5pbmc6IEV4cGVjdGVkIHNlcnZlciBIVE1MIHRvIGNvbnRhaW4gYSBtYXRjaGluZyB0ZXh0IG5vZGUgZm9yIFwiJXNcIiBpbiA8JXM+LiVzJyxcIldhcm5pbmc6IERpZCBub3QgZXhwZWN0IHNlcnZlciBIVE1MIHRvIGNvbnRhaW4gYSA8JXM+IGluIDwlcz4uJXNcIiwnV2FybmluZzogRGlkIG5vdCBleHBlY3Qgc2VydmVyIEhUTUwgdG8gY29udGFpbiB0aGUgdGV4dCBub2RlIFwiJXNcIiBpbiA8JXM+LiVzJ10pO2Z1bmN0aW9uIHBhdGNoQ29uc29sZUVycm9yKCl7Y29uc3QgZT1jb25zb2xlLmVycm9yO2NvbnNvbGUuZXJyb3I9ZnVuY3Rpb24odCxvLGksbCl7aWYoYS5oYXModCkpe3I9dC5yZXBsYWNlKFwiJXNcIixvKS5yZXBsYWNlKFwiJXNcIixpKS5yZXBsYWNlKFwiJXNcIixcIlwiKTtuPWx9ZS5hcHBseShjb25zb2xlLGFyZ3VtZW50cyl9fWlmKCh0eXBlb2YgdC5kZWZhdWx0PT09XCJmdW5jdGlvblwifHx0eXBlb2YgdC5kZWZhdWx0PT09XCJvYmplY3RcIiYmdC5kZWZhdWx0IT09bnVsbCkmJnR5cGVvZiB0LmRlZmF1bHQuX19lc01vZHVsZT09PVwidW5kZWZpbmVkXCIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTtPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KTtlLmV4cG9ydHM9dC5kZWZhdWx0fX0sNjU5OmZ1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcInBhcnNlQ29tcG9uZW50U3RhY2tcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBwYXJzZUNvbXBvbmVudFN0YWNrfX0pO2Z1bmN0aW9uIHBhcnNlQ29tcG9uZW50U3RhY2soZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgbiBvZiBlLnRyaW0oKS5zcGxpdChcIlxcblwiKSl7Y29uc3QgZT0vYXQgKFteIF0rKSggXFwoKC4qKVxcKSk/Ly5leGVjKG4pO2lmKGU9PW51bGw/dm9pZCAwOmVbMV0pe2NvbnN0IG49ZVsxXTtjb25zdCBhPWVbM107aWYoYT09bnVsbD92b2lkIDA6YS5pbmNsdWRlcyhcIm5leHQvZGlzdFwiKSl7YnJlYWt9Y29uc3Qgbz1hPT1udWxsP3ZvaWQgMDphLnJlcGxhY2UoL14od2VicGFjay1pbnRlcm5hbDpcXC9cXC9cXC98ZmlsZTpcXC9cXC8pKFxcKC4qXFwpXFwvKT8vLFwiXCIpO3ZhciByO2NvbnN0W2ksbCxzXT0ocj1vPT1udWxsP3ZvaWQgMDpvLnNwbGl0KFwiOlwiKSkhPW51bGw/cjpbXTt0LnB1c2goe2NvbXBvbmVudDpuLGZpbGU6aSxsaW5lTnVtYmVyOmw/TnVtYmVyKGwpOnVuZGVmaW5lZCxjb2x1bW46cz9OdW1iZXIocyk6dW5kZWZpbmVkfSl9fXJldHVybiB0fWlmKCh0eXBlb2YgdC5kZWZhdWx0PT09XCJmdW5jdGlvblwifHx0eXBlb2YgdC5kZWZhdWx0PT09XCJvYmplY3RcIiYmdC5kZWZhdWx0IT09bnVsbCkmJnR5cGVvZiB0LmRlZmF1bHQuX19lc01vZHVsZT09PVwidW5kZWZpbmVkXCIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTtPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KTtlLmV4cG9ydHM9dC5kZWZhdWx0fX19O3ZhciB0PXt9O2Z1bmN0aW9uIF9fbmNjd3Bja19yZXF1aXJlX18ocil7dmFyIG49dFtyXTtpZihuIT09dW5kZWZpbmVkKXtyZXR1cm4gbi5leHBvcnRzfXZhciBhPXRbcl09e2V4cG9ydHM6e319O3ZhciBvPXRydWU7dHJ5e2Vbcl0oYSxhLmV4cG9ydHMsX19uY2N3cGNrX3JlcXVpcmVfXyk7bz1mYWxzZX1maW5hbGx5e2lmKG8pZGVsZXRlIHRbcl19cmV0dXJuIGEuZXhwb3J0c30hZnVuY3Rpb24oKXtfX25jY3dwY2tfcmVxdWlyZV9fLm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGVbXCJkZWZhdWx0XCJdfTpmdW5jdGlvbigpe3JldHVybiBlfTtfX25jY3dwY2tfcmVxdWlyZV9fLmQodCx7YTp0fSk7cmV0dXJuIHR9fSgpOyFmdW5jdGlvbigpe19fbmNjd3Bja19yZXF1aXJlX18uZD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KXtpZihfX25jY3dwY2tfcmVxdWlyZV9fLm8odCxyKSYmIV9fbmNjd3Bja19yZXF1aXJlX18ubyhlLHIpKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOnRydWUsZ2V0OnRbcl19KX19fX0oKTshZnVuY3Rpb24oKXtfX25jY3dwY2tfcmVxdWlyZV9fLm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9fSgpOyFmdW5jdGlvbigpe19fbmNjd3Bja19yZXF1aXJlX18ucj1mdW5jdGlvbihlKXtpZih0eXBlb2YgU3ltYm9sIT09XCJ1bmRlZmluZWRcIiYmU3ltYm9sLnRvU3RyaW5nVGFnKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOlwiTW9kdWxlXCJ9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pfX0oKTtpZih0eXBlb2YgX19uY2N3cGNrX3JlcXVpcmVfXyE9PVwidW5kZWZpbmVkXCIpX19uY2N3cGNrX3JlcXVpcmVfXy5hYj1fX2Rpcm5hbWUrXCIvXCI7dmFyIHI9e307IWZ1bmN0aW9uKCl7X19uY2N3cGNrX3JlcXVpcmVfXy5yKHIpO19fbmNjd3Bja19yZXF1aXJlX18uZChyLHtSZWFjdERldk92ZXJsYXk6ZnVuY3Rpb24oKXtyZXR1cm4gWnR9LGdldEVycm9yQnlUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIGdldEVycm9yQnlUeXBlfSxnZXRTZXJ2ZXJFcnJvcjpmdW5jdGlvbigpe3JldHVybiBnZXRTZXJ2ZXJFcnJvcn0sb25CZWZvcmVSZWZyZXNoOmZ1bmN0aW9uKCl7cmV0dXJuIG9uQmVmb3JlUmVmcmVzaH0sb25CdWlsZEVycm9yOmZ1bmN0aW9uKCl7cmV0dXJuIG9uQnVpbGRFcnJvcn0sb25CdWlsZE9rOmZ1bmN0aW9uKCl7cmV0dXJuIG9uQnVpbGRPa30sb25SZWZyZXNoOmZ1bmN0aW9uKCl7cmV0dXJuIG9uUmVmcmVzaH0scmVnaXN0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gcmVnaXN0ZXJ9LHVucmVnaXN0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdW5yZWdpc3Rlcn19KTtjb25zdCBlPVwiYnVpbGQtb2tcIjtjb25zdCB0PVwiYnVpbGQtZXJyb3JcIjtjb25zdCBuPVwiZmFzdC1yZWZyZXNoXCI7Y29uc3QgYT1cImJlZm9yZS1mYXN0LXJlZnJlc2hcIjtjb25zdCBvPVwidW5oYW5kbGVkLWVycm9yXCI7Y29uc3QgaT1cInVuaGFuZGxlZC1yZWplY3Rpb25cIjtsZXQgbD1uZXcgU2V0O2xldCBzPVtdO2Z1bmN0aW9uIGRyYWluKCl7c2V0VGltZW91dCgoZnVuY3Rpb24oKXt3aGlsZShCb29sZWFuKHMubGVuZ3RoKSYmQm9vbGVhbihsLnNpemUpKXtjb25zdCBlPXMuc2hpZnQoKTtsLmZvckVhY2goKHQ9PnQoZSkpKX19KSwxKX1mdW5jdGlvbiBlbWl0KGUpe3MucHVzaChPYmplY3QuZnJlZXplKHsuLi5lfSkpO2RyYWluKCl9ZnVuY3Rpb24gb24oZSl7aWYobC5oYXMoZSkpe3JldHVybiBmYWxzZX1sLmFkZChlKTtkcmFpbigpO3JldHVybiB0cnVlfWZ1bmN0aW9uIG9mZihlKXtpZihsLmhhcyhlKSl7bC5kZWxldGUoZSk7cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfXZhciB1PXJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvc3RhY2t0cmFjZS1wYXJzZXJcIik7Y29uc3QgYz0vXFwvX25leHQoXFwvc3RhdGljXFwvLispL2c7ZnVuY3Rpb24gcGFyc2VTdGFjayhlKXtjb25zdCB0PSgwLHUucGFyc2UpKGUpO3JldHVybiB0Lm1hcCgoZT0+e3RyeXtjb25zdCB0PW5ldyBVUkwoZS5maWxlKTtjb25zdCByPWMuZXhlYyh0LnBhdGhuYW1lKTtpZihyKXtjb25zdCB0PXByb2Nlc3MuZW52Ll9fTkVYVF9ESVNUX0RJUj8ucmVwbGFjZSgvXFxcXC9nLFwiL1wiKT8ucmVwbGFjZSgvXFwvJC8sXCJcIik7aWYodCl7ZS5maWxlPVwiZmlsZTovL1wiK3QuY29uY2F0KHIucG9wKCkpfX19Y2F0Y2h7fXJldHVybiBlfSkpfXZhciBkPV9fbmNjd3Bja19yZXF1aXJlX18oNjU5KTt2YXIgZj1fX25jY3dwY2tfcmVxdWlyZV9fKDg3Nik7ZnVuY3Rpb24gZ2V0RmlsZXN5c3RlbUZyYW1lKGUpe2NvbnN0IHQ9ey4uLmV9O2lmKHR5cGVvZiB0LmZpbGU9PT1cInN0cmluZ1wiKXtpZih0LmZpbGUuc3RhcnRzV2l0aChcIi9cIil8fC9eW2Etel06XFxcXC9pLnRlc3QodC5maWxlKXx8dC5maWxlLnN0YXJ0c1dpdGgoXCJcXFxcXFxcXFwiKSl7dC5maWxlPWBmaWxlOi8vJHt0LmZpbGV9YH19cmV0dXJuIHR9Y29uc3QgbT1TeW1ib2woXCJOZXh0anNFcnJvclwiKTtmdW5jdGlvbiBnZXRFcnJvclNvdXJjZShlKXtyZXR1cm4gZVttXXx8bnVsbH1mdW5jdGlvbiBkZWNvcmF0ZVNlcnZlckVycm9yKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbSx7d3JpdGFibGU6ZmFsc2UsZW51bWVyYWJsZTpmYWxzZSxjb25maWd1cmFibGU6ZmFsc2UsdmFsdWU6dH0pfWZ1bmN0aW9uIGdldFNlcnZlckVycm9yKGUsdCl7bGV0IHI7dHJ5e3Rocm93IG5ldyBFcnJvcihlLm1lc3NhZ2UpfWNhdGNoKGUpe3I9ZX1yLm5hbWU9ZS5uYW1lO3RyeXtyLnN0YWNrPWAke3IudG9TdHJpbmcoKX1cXG4keygwLHUucGFyc2UpKGUuc3RhY2spLm1hcChnZXRGaWxlc3lzdGVtRnJhbWUpLm1hcCgoZT0+e2xldCB0PWAgICAgYXQgJHtlLm1ldGhvZE5hbWV9YDtpZihlLmZpbGUpe2xldCByPWUuZmlsZTtpZihlLmxpbmVOdW1iZXIpe3IrPWA6JHtlLmxpbmVOdW1iZXJ9YDtpZihlLmNvbHVtbil7cis9YDoke2UuY29sdW1ufWB9fXQrPWAgKCR7cn0pYH1yZXR1cm4gdH0pKS5qb2luKFwiXFxuXCIpfWB9Y2F0Y2h7ci5zdGFjaz1lLnN0YWNrfWRlY29yYXRlU2VydmVyRXJyb3Iocix0KTtyZXR1cm4gcn1mdW5jdGlvbiBnZXRPcmlnaW5hbFN0YWNrRnJhbWUoZSx0LHIpe2FzeW5jIGZ1bmN0aW9uIF9nZXRPcmlnaW5hbFN0YWNrRnJhbWUoKXtjb25zdCBuPW5ldyBVUkxTZWFyY2hQYXJhbXM7bi5hcHBlbmQoXCJpc1NlcnZlclwiLFN0cmluZyh0PT09XCJzZXJ2ZXJcIikpO24uYXBwZW5kKFwiaXNFZGdlU2VydmVyXCIsU3RyaW5nKHQ9PT1cImVkZ2Utc2VydmVyXCIpKTtuLmFwcGVuZChcImVycm9yTWVzc2FnZVwiLHIpO2Zvcihjb25zdCB0IGluIGUpe24uYXBwZW5kKHQsKGVbdF0/P1wiXCIpLnRvU3RyaW5nKCkpfWNvbnN0IGE9bmV3IEFib3J0Q29udHJvbGxlcjtjb25zdCBvPXNldFRpbWVvdXQoKCgpPT5hLmFib3J0KCkpLDNlMyk7Y29uc3QgaT1hd2FpdCBzZWxmLmZldGNoKGAke3Byb2Nlc3MuZW52Ll9fTkVYVF9ST1VURVJfQkFTRVBBVEh8fFwiXCJ9L19fbmV4dGpzX29yaWdpbmFsLXN0YWNrLWZyYW1lPyR7bi50b1N0cmluZygpfWAse3NpZ25hbDphLnNpZ25hbH0pLmZpbmFsbHkoKCgpPT57Y2xlYXJUaW1lb3V0KG8pfSkpO2lmKCFpLm9rfHxpLnN0YXR1cz09PTIwNCl7cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihhd2FpdCBpLnRleHQoKSkpfWNvbnN0IGw9YXdhaXQgaS5qc29uKCk7cmV0dXJue2Vycm9yOmZhbHNlLHJlYXNvbjpudWxsLGV4dGVybmFsOmZhbHNlLGV4cGFuZGVkOiFCb29sZWFuKChlLmZpbGU/LmluY2x1ZGVzKFwibm9kZV9tb2R1bGVzXCIpfHxsLm9yaWdpbmFsU3RhY2tGcmFtZT8uZmlsZT8uaW5jbHVkZXMoXCJub2RlX21vZHVsZXNcIikpPz90cnVlKSxzb3VyY2VTdGFja0ZyYW1lOmUsb3JpZ2luYWxTdGFja0ZyYW1lOmwub3JpZ2luYWxTdGFja0ZyYW1lLG9yaWdpbmFsQ29kZUZyYW1lOmwub3JpZ2luYWxDb2RlRnJhbWV8fG51bGx9fWlmKCEoZS5maWxlPy5zdGFydHNXaXRoKFwid2VicGFjay1pbnRlcm5hbDpcIil8fGUuZmlsZT8uc3RhcnRzV2l0aChcImZpbGU6XCIpKSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh7ZXJyb3I6ZmFsc2UscmVhc29uOm51bGwsZXh0ZXJuYWw6dHJ1ZSxleHBhbmRlZDpmYWxzZSxzb3VyY2VTdGFja0ZyYW1lOmUsb3JpZ2luYWxTdGFja0ZyYW1lOm51bGwsb3JpZ2luYWxDb2RlRnJhbWU6bnVsbH0pfXJldHVybiBfZ2V0T3JpZ2luYWxTdGFja0ZyYW1lKCkuY2F0Y2goKHQ9Pih7ZXJyb3I6dHJ1ZSxyZWFzb246dD8ubWVzc2FnZT8/dD8udG9TdHJpbmcoKT8/XCJVbmtub3duIEVycm9yXCIsZXh0ZXJuYWw6ZmFsc2UsZXhwYW5kZWQ6ZmFsc2Usc291cmNlU3RhY2tGcmFtZTplLG9yaWdpbmFsU3RhY2tGcmFtZTpudWxsLG9yaWdpbmFsQ29kZUZyYW1lOm51bGx9KSkpfWZ1bmN0aW9uIGdldE9yaWdpbmFsU3RhY2tGcmFtZXMoZSx0LHIpe3JldHVybiBQcm9taXNlLmFsbChlLm1hcCgoZT0+Z2V0T3JpZ2luYWxTdGFja0ZyYW1lKGUsdCxyKSkpKX1mdW5jdGlvbiBnZXRGcmFtZVNvdXJjZShlKXtsZXQgdD1cIlwiO3RyeXtjb25zdCByPW5ldyBVUkwoZS5maWxlKTtpZih0eXBlb2YgZ2xvYmFsVGhpcyE9PVwidW5kZWZpbmVkXCImJmdsb2JhbFRoaXMubG9jYXRpb24/Lm9yaWdpbiE9PXIub3JpZ2luKXtpZihyLm9yaWdpbj09PVwibnVsbFwiKXt0Kz1yLnByb3RvY29sfWVsc2V7dCs9ci5vcmlnaW59fXQrPXIucGF0aG5hbWU7dCs9XCIgXCJ9Y2F0Y2h7dCs9KGUuZmlsZXx8XCIodW5rbm93bilcIikrXCIgXCJ9aWYoZS5saW5lTnVtYmVyIT1udWxsKXtpZihlLmNvbHVtbiE9bnVsbCl7dCs9YCgke2UubGluZU51bWJlcn06JHtlLmNvbHVtbn0pIGB9ZWxzZXt0Kz1gKCR7ZS5saW5lTnVtYmVyfSkgYH19cmV0dXJuIHQuc2xpY2UoMCwtMSl9YXN5bmMgZnVuY3Rpb24gZ2V0RXJyb3JCeVR5cGUoZSl7Y29uc3R7aWQ6dCxldmVudDpyfT1lO3N3aXRjaChyLnR5cGUpe2Nhc2UgbzpjYXNlIGk6e2NvbnN0IGU9e2lkOnQscnVudGltZTp0cnVlLGVycm9yOnIucmVhc29uLGZyYW1lczphd2FpdCBnZXRPcmlnaW5hbFN0YWNrRnJhbWVzKHIuZnJhbWVzLGdldEVycm9yU291cmNlKHIucmVhc29uKSxyLnJlYXNvbi50b1N0cmluZygpKX07aWYoci50eXBlPT09byl7ZS5jb21wb25lbnRTdGFjaz1yLmNvbXBvbmVudFN0YWNrfXJldHVybiBlfWRlZmF1bHQ6e2JyZWFrfX1jb25zdCBuPXI7dGhyb3cgbmV3IEVycm9yKFwidHlwZSBzeXN0ZW0gaW52YXJpYW50IHZpb2xhdGlvblwiKX12YXIgcD1yZXF1aXJlKFwicmVhY3RcIik7dmFyIGI9X19uY2N3cGNrX3JlcXVpcmVfXy5uKHApO3ZhciB2PXJlcXVpcmUoXCJyZWFjdC1kb21cIik7Y29uc3QgZz1mdW5jdGlvbiBQb3J0YWwoe2NoaWxkcmVuOmUsZ2xvYmFsT3ZlcmxheTp0fSl7bGV0IHI9cC51c2VSZWYobnVsbCk7bGV0IG49cC51c2VSZWYobnVsbCk7bGV0IGE9cC51c2VSZWYobnVsbCk7bGV0WyxvXT1wLnVzZVN0YXRlKCk7cC51c2VMYXlvdXRFZmZlY3QoKCgpPT57Y29uc3QgZT10P2RvY3VtZW50OnIuY3VycmVudC5vd25lckRvY3VtZW50O24uY3VycmVudD1lLmNyZWF0ZUVsZW1lbnQoXCJuZXh0anMtcG9ydGFsXCIpO2EuY3VycmVudD1uLmN1cnJlbnQuYXR0YWNoU2hhZG93KHttb2RlOlwib3BlblwifSk7ZS5ib2R5LmFwcGVuZENoaWxkKG4uY3VycmVudCk7byh7fSk7cmV0dXJuKCk9PntpZihuLmN1cnJlbnQmJm4uY3VycmVudC5vd25lckRvY3VtZW50KXtuLmN1cnJlbnQub3duZXJEb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKG4uY3VycmVudCl9fX0pLFt0XSk7cmV0dXJuIGEuY3VycmVudD8oMCx2LmNyZWF0ZVBvcnRhbCkoZSxhLmN1cnJlbnQpOnQ/bnVsbDpwLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIse3JlZjpyfSl9O2Z1bmN0aW9uIHVzZU9uQ2xpY2tPdXRzaWRlKGUsdCl7cC51c2VFZmZlY3QoKCgpPT57aWYoZT09bnVsbHx8dD09bnVsbCl7cmV0dXJufWNvbnN0IGxpc3RlbmVyPXI9PntpZighZXx8ZS5jb250YWlucyhyLnRhcmdldCkpe3JldHVybn10KHIpfTtjb25zdCByPWUuZ2V0Um9vdE5vZGUoKTtyLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixsaXN0ZW5lcik7ci5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLGxpc3RlbmVyKTtyZXR1cm4gZnVuY3Rpb24oKXtyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixsaXN0ZW5lcik7ci5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLGxpc3RlbmVyKX19KSxbdCxlXSl9Y29uc3QgaD1mdW5jdGlvbiBEaWFsb2coe2NoaWxkcmVuOmUsdHlwZTp0LG9uQ2xvc2U6ciwuLi5ufSl7Y29uc3RbYSxvXT1wLnVzZVN0YXRlKG51bGwpO2NvbnN0IGk9cC51c2VDYWxsYmFjaygoZT0+e28oZSl9KSxbXSk7dXNlT25DbGlja091dHNpZGUoYSxyKTtwLnVzZUVmZmVjdCgoKCk9PntpZihhPT1udWxsKXtyZXR1cm59Y29uc3QgZT1hLmdldFJvb3ROb2RlKCk7aWYoIShlIGluc3RhbmNlb2YgU2hhZG93Um9vdCkpe3JldHVybn1jb25zdCB0PWU7ZnVuY3Rpb24gaGFuZGxlcihlKXtjb25zdCByPXQuYWN0aXZlRWxlbWVudDtpZihlLmtleT09PVwiRW50ZXJcIiYmciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZyLmdldEF0dHJpYnV0ZShcInJvbGVcIik9PT1cImxpbmtcIil7ZS5wcmV2ZW50RGVmYXVsdCgpO2Uuc3RvcFByb3BhZ2F0aW9uKCk7ci5jbGljaygpfX10LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsaGFuZGxlcik7cmV0dXJuKCk9PnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixoYW5kbGVyKX0pLFthXSk7cmV0dXJuIHAuY3JlYXRlRWxlbWVudChcImRpdlwiLHtyZWY6aSxcImRhdGEtbmV4dGpzLWRpYWxvZ1wiOnRydWUsdGFiSW5kZXg6LTEscm9sZTpcImRpYWxvZ1wiLFwiYXJpYS1sYWJlbGxlZGJ5XCI6bltcImFyaWEtbGFiZWxsZWRieVwiXSxcImFyaWEtZGVzY3JpYmVkYnlcIjpuW1wiYXJpYS1kZXNjcmliZWRieVwiXSxcImFyaWEtbW9kYWxcIjpcInRydWVcIn0scC5jcmVhdGVFbGVtZW50KFwiZGl2XCIse1wiZGF0YS1uZXh0anMtZGlhbG9nLWJhbm5lclwiOnRydWUsY2xhc3NOYW1lOmBiYW5uZXItJHt0fWB9KSxlKX07Y29uc3QgeD1mdW5jdGlvbiBEaWFsb2dCb2R5KHtjaGlsZHJlbjplLGNsYXNzTmFtZTp0fSl7cmV0dXJuIHAuY3JlYXRlRWxlbWVudChcImRpdlwiLHtcImRhdGEtbmV4dGpzLWRpYWxvZy1ib2R5XCI6dHJ1ZSxjbGFzc05hbWU6dH0sZSl9O2NvbnN0IHk9ZnVuY3Rpb24gRGlhbG9nQ29udGVudCh7Y2hpbGRyZW46ZSxjbGFzc05hbWU6dH0pe3JldHVybiBwLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7XCJkYXRhLW5leHRqcy1kaWFsb2ctY29udGVudFwiOnRydWUsY2xhc3NOYW1lOnR9LGUpfTtjb25zdCBFPWZ1bmN0aW9uIERpYWxvZ0hlYWRlcih7Y2hpbGRyZW46ZSxjbGFzc05hbWU6dH0pe3JldHVybiBwLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7XCJkYXRhLW5leHRqcy1kaWFsb2ctaGVhZGVyXCI6dHJ1ZSxjbGFzc05hbWU6dH0sZSl9O2Z1bmN0aW9uIG5vb3AoZSwuLi50KXtjb25zdCByPWUubGVuZ3RoLTE7cmV0dXJuIGUuc2xpY2UoMCxyKS5yZWR1Y2UoKChlLHIsbik9PmUrcit0W25dKSxcIlwiKStlW3JdfWNvbnN0IHc9bm9vcGBcbiAgW2RhdGEtbmV4dGpzLWRpYWxvZ10ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zaXplLWdhcCk7XG4gICAgYm94LXNoYWRvdzogMCB2YXIoLS1zaXplLWdhcC1oYWxmKSB2YXIoLS1zaXplLWdhcC1kb3VibGUpXG4gICAgICByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIDU2cHgpO1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgfVxuXG4gIEBtZWRpYSAobWF4LWhlaWdodDogODEycHgpIHtcbiAgICBbZGF0YS1uZXh0anMtZGlhbG9nLW92ZXJsYXldIHtcbiAgICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIDE1cHgpO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICAgIFtkYXRhLW5leHRqcy1kaWFsb2ddIHtcbiAgICAgIG1heC13aWR0aDogNTQwcHg7XG4gICAgICBib3gtc2hhZG93OiAwIHZhcigtLXNpemUtZ2FwKSB2YXIoLS1zaXplLWdhcC1xdWFkKSByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIFtkYXRhLW5leHRqcy1kaWFsb2ddIHtcbiAgICAgIG1heC13aWR0aDogNzIwcHg7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gICAgW2RhdGEtbmV4dGpzLWRpYWxvZ10ge1xuICAgICAgbWF4LXdpZHRoOiA5NjBweDtcbiAgICB9XG4gIH1cblxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWJhbm5lcl0ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWJhbm5lcl0uYmFubmVyLXdhcm5pbmcge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYW5zaS15ZWxsb3cpO1xuICB9XG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctYmFubmVyXS5iYW5uZXItZXJyb3Ige1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYW5zaS1yZWQpO1xuICB9XG5cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1iYW5uZXJdOjphZnRlciB7XG4gICAgei1pbmRleDogMjtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC8qIGJhbm5lciB3aWR0aDogKi9cbiAgICBib3JkZXItdG9wLXdpZHRoOiB2YXIoLS1zaXplLWdhcC1oYWxmKTtcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIGJvcmRlci10b3Atc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci10b3AtY29sb3I6IGluaGVyaXQ7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cblxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWNvbnRlbnRdIHtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBtYXJnaW46IDA7XG4gICAgLyogY2FsYyhwYWRkaW5nICsgYmFubmVyIHdpZHRoIG9mZnNldCkgKi9cbiAgICBwYWRkaW5nOiBjYWxjKHZhcigtLXNpemUtZ2FwLWRvdWJsZSkgKyB2YXIoLS1zaXplLWdhcC1oYWxmKSlcbiAgICAgIHZhcigtLXNpemUtZ2FwLWRvdWJsZSk7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgfVxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWNvbnRlbnRdID4gW2RhdGEtbmV4dGpzLWRpYWxvZy1oZWFkZXJdIHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zaXplLWdhcC1kb3VibGUpO1xuICB9XG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctY29udGVudF0gPiBbZGF0YS1uZXh0anMtZGlhbG9nLWJvZHldIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZmxleDogMSAxIGF1dG87XG4gIH1cbmA7dmFyIGs9cmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9wbGF0Zm9ybVwiKTt2YXIgUz1fX25jY3dwY2tfcmVxdWlyZV9fLm4oayk7dmFyIF89cmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9jc3MuZXNjYXBlXCIpO3ZhciBUPV9fbmNjd3Bja19yZXF1aXJlX18ubihfKTtmdW5jdGlvbiBub2RlQXJyYXkoZSl7aWYoIWUpe3JldHVybltdfWlmKEFycmF5LmlzQXJyYXkoZSkpe3JldHVybiBlfWlmKGUubm9kZVR5cGUhPT11bmRlZmluZWQpe3JldHVybltlXX1pZih0eXBlb2YgZT09PVwic3RyaW5nXCIpe2U9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChlKX1pZihlLmxlbmd0aCE9PXVuZGVmaW5lZCl7cmV0dXJuW10uc2xpY2UuY2FsbChlLDApfXRocm93IG5ldyBUeXBlRXJyb3IoXCJ1bmV4cGVjdGVkIGlucHV0IFwiK1N0cmluZyhlKSl9ZnVuY3Rpb24gY29udGV4dFRvRWxlbWVudChlKXt2YXIgdD1lLmNvbnRleHQscj1lLmxhYmVsLG49cj09PXVuZGVmaW5lZD9cImNvbnRleHQtdG8tZWxlbWVudFwiOnIsYT1lLnJlc29sdmVEb2N1bWVudCxvPWUuZGVmYXVsdFRvRG9jdW1lbnQ7dmFyIGk9bm9kZUFycmF5KHQpWzBdO2lmKGEmJmkmJmkubm9kZVR5cGU9PT1Ob2RlLkRPQ1VNRU5UX05PREUpe2k9aS5kb2N1bWVudEVsZW1lbnR9aWYoIWkmJm8pe3JldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR9aWYoIWkpe3Rocm93IG5ldyBUeXBlRXJyb3IobitcIiByZXF1aXJlcyB2YWxpZCBvcHRpb25zLmNvbnRleHRcIil9aWYoaS5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFJiZpLm5vZGVUeXBlIT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFKXt0aHJvdyBuZXcgVHlwZUVycm9yKG4rXCIgcmVxdWlyZXMgb3B0aW9ucy5jb250ZXh0IHRvIGJlIGFuIEVsZW1lbnRcIil9cmV0dXJuIGl9ZnVuY3Rpb24gZ2V0U2hhZG93SG9zdCgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fSx0PWUuY29udGV4dDt2YXIgcj1jb250ZXh0VG9FbGVtZW50KHtsYWJlbDpcImdldC9zaGFkb3ctaG9zdFwiLGNvbnRleHQ6dH0pO3ZhciBuPW51bGw7d2hpbGUocil7bj1yO3I9ci5wYXJlbnROb2RlfWlmKG4ubm9kZVR5cGU9PT1uLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUmJm4uaG9zdCl7cmV0dXJuIG4uaG9zdH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBnZXREb2N1bWVudChlKXtpZighZSl7cmV0dXJuIGRvY3VtZW50fWlmKGUubm9kZVR5cGU9PT1Ob2RlLkRPQ1VNRU5UX05PREUpe3JldHVybiBlfXJldHVybiBlLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50fWZ1bmN0aW9uIGlzQWN0aXZlRWxlbWVudChlKXt2YXIgdD1jb250ZXh0VG9FbGVtZW50KHtsYWJlbDpcImlzL2FjdGl2ZS1lbGVtZW50XCIscmVzb2x2ZURvY3VtZW50OnRydWUsY29udGV4dDplfSk7dmFyIHI9Z2V0RG9jdW1lbnQodCk7aWYoci5hY3RpdmVFbGVtZW50PT09dCl7cmV0dXJuIHRydWV9dmFyIG49Z2V0U2hhZG93SG9zdCh7Y29udGV4dDp0fSk7aWYobiYmbi5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ9PT10KXtyZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9ZnVuY3Rpb24gZ2V0UGFyZW50cygpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fSx0PWUuY29udGV4dDt2YXIgcj1bXTt2YXIgbj1jb250ZXh0VG9FbGVtZW50KHtsYWJlbDpcImdldC9wYXJlbnRzXCIsY29udGV4dDp0fSk7d2hpbGUobil7ci5wdXNoKG4pO249bi5wYXJlbnROb2RlO2lmKG4mJm4ubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERSl7bj1udWxsfX1yZXR1cm4gcn12YXIgQz1bXCJtYXRjaGVzXCIsXCJ3ZWJraXRNYXRjaGVzU2VsZWN0b3JcIixcIm1vek1hdGNoZXNTZWxlY3RvclwiLFwibXNNYXRjaGVzU2VsZWN0b3JcIl07dmFyIGo9bnVsbDtmdW5jdGlvbiBmaW5kTWV0aG9kTmFtZShlKXtDLnNvbWUoKGZ1bmN0aW9uKHQpe2lmKCFlW3RdKXtyZXR1cm4gZmFsc2V9aj10O3JldHVybiB0cnVlfSkpfWZ1bmN0aW9uIGVsZW1lbnRNYXRjaGVzKGUsdCl7aWYoIWope2ZpbmRNZXRob2ROYW1lKGUpfXJldHVybiBlW2pdKHQpfXZhciBBPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoUygpKSk7dmFyIE89QS5vcy5mYW1pbHl8fFwiXCI7dmFyIE49Tz09PVwiQW5kcm9pZFwiO3ZhciBJPU8uc2xpY2UoMCw3KT09PVwiV2luZG93c1wiO3ZhciBMPU89PT1cIk9TIFhcIjt2YXIgRj1PPT09XCJpT1NcIjt2YXIgRD1BLmxheW91dD09PVwiQmxpbmtcIjt2YXIgTT1BLmxheW91dD09PVwiR2Vja29cIjt2YXIgUj1BLmxheW91dD09PVwiVHJpZGVudFwiO3ZhciB6PUEubGF5b3V0PT09XCJFZGdlSFRNTFwiO3ZhciBCPUEubGF5b3V0PT09XCJXZWJLaXRcIjt2YXIgSD1wYXJzZUZsb2F0KEEudmVyc2lvbik7dmFyIHE9TWF0aC5mbG9vcihIKTtBLm1ham9yVmVyc2lvbj1xO0EuaXM9e0FORFJPSUQ6TixXSU5ET1dTOkksT1NYOkwsSU9TOkYsQkxJTks6RCxHRUNLTzpNLFRSSURFTlQ6UixFREdFOnosV0VCS0lUOkIsSUU5OlImJnE9PT05LElFMTA6UiYmcT09PTEwLElFMTE6UiYmcT09PTExfTtmdW5jdGlvbiBiZWZvcmUoKXt2YXIgZT17YWN0aXZlRWxlbWVudDpkb2N1bWVudC5hY3RpdmVFbGVtZW50LHdpbmRvd1Njcm9sbFRvcDp3aW5kb3cuc2Nyb2xsVG9wLHdpbmRvd1Njcm9sbExlZnQ6d2luZG93LnNjcm9sbExlZnQsYm9keVNjcm9sbFRvcDpkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCxib2R5U2Nyb2xsTGVmdDpkb2N1bWVudC5ib2R5LnNjcm9sbExlZnR9O3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIik7dC5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLFwicG9zaXRpb246YWJzb2x1dGU7IHBvc2l0aW9uOmZpeGVkOyB0b3A6MDsgbGVmdDotMnB4OyB3aWR0aDoxcHg7IGhlaWdodDoxcHg7IG92ZXJmbG93OmhpZGRlbjtcIik7dC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxpdmVcIixcIm9mZlwiKTt0LnNldEF0dHJpYnV0ZShcImFyaWEtYnVzeVwiLFwidHJ1ZVwiKTt0LnNldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIsXCJ0cnVlXCIpO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCk7dmFyIHI9dC5jb250ZW50V2luZG93O3ZhciBuPXIuZG9jdW1lbnQ7bi5vcGVuKCk7bi5jbG9zZSgpO3ZhciBhPW4uY3JlYXRlRWxlbWVudChcImRpdlwiKTtuLmJvZHkuYXBwZW5kQ2hpbGQoYSk7ZS5pZnJhbWU9dDtlLndyYXBwZXI9YTtlLndpbmRvdz1yO2UuZG9jdW1lbnQ9bjtyZXR1cm4gZX1mdW5jdGlvbiB0ZXN0KGUsdCl7ZS53cmFwcGVyLmlubmVySFRNTD1cIlwiO3ZhciByPXR5cGVvZiB0LmVsZW1lbnQ9PT1cInN0cmluZ1wiP2UuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0LmVsZW1lbnQpOnQuZWxlbWVudChlLndyYXBwZXIsZS5kb2N1bWVudCk7dmFyIG49dC5tdXRhdGUmJnQubXV0YXRlKHIsZS53cmFwcGVyLGUuZG9jdW1lbnQpO2lmKCFuJiZuIT09ZmFsc2Upe249cn0hci5wYXJlbnROb2RlJiZlLndyYXBwZXIuYXBwZW5kQ2hpbGQocik7biYmbi5mb2N1cyYmbi5mb2N1cygpO3JldHVybiB0LnZhbGlkYXRlP3QudmFsaWRhdGUocixuLGUuZG9jdW1lbnQpOmUuZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PW59ZnVuY3Rpb24gYWZ0ZXIoZSl7aWYoZS5hY3RpdmVFbGVtZW50PT09ZG9jdW1lbnQuYm9keSl7ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCYmZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyJiZkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtpZihBLmlzLklFMTApe2RvY3VtZW50LmJvZHkuZm9jdXMoKX19ZWxzZXtlLmFjdGl2ZUVsZW1lbnQmJmUuYWN0aXZlRWxlbWVudC5mb2N1cyYmZS5hY3RpdmVFbGVtZW50LmZvY3VzKCl9ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlLmlmcmFtZSk7d2luZG93LnNjcm9sbFRvcD1lLndpbmRvd1Njcm9sbFRvcDt3aW5kb3cuc2Nyb2xsTGVmdD1lLndpbmRvd1Njcm9sbExlZnQ7ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A9ZS5ib2R5U2Nyb2xsVG9wO2RvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdD1lLmJvZHlTY3JvbGxMZWZ0fWZ1bmN0aW9uIGRldGVjdEZvY3VzKGUpe3ZhciB0PWJlZm9yZSgpO3ZhciByPXt9O09iamVjdC5rZXlzKGUpLm1hcCgoZnVuY3Rpb24obil7cltuXT10ZXN0KHQsZVtuXSl9KSk7YWZ0ZXIodCk7cmV0dXJuIHJ9dmFyIFA9XCIxLjQuMVwiO2Z1bmN0aW9uIHJlYWRMb2NhbFN0b3JhZ2UoZSl7dmFyIHQ9dm9pZCAwO3RyeXt0PXdpbmRvdy5sb2NhbFN0b3JhZ2UmJndpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShlKTt0PXQ/SlNPTi5wYXJzZSh0KTp7fX1jYXRjaChlKXt0PXt9fXJldHVybiB0fWZ1bmN0aW9uIHdyaXRlTG9jYWxTdG9yYWdlKGUsdCl7aWYoIWRvY3VtZW50Lmhhc0ZvY3VzKCkpe3RyeXt3aW5kb3cubG9jYWxTdG9yYWdlJiZ3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oZSl9Y2F0Y2goZSl7fXJldHVybn10cnl7d2luZG93LmxvY2FsU3RvcmFnZSYmd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKGUsSlNPTi5zdHJpbmdpZnkodCkpfWNhdGNoKGUpe319dmFyIFc9dHlwZW9mIHdpbmRvdyE9PVwidW5kZWZpbmVkXCImJndpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50fHxcIlwiO3ZhciBWPVwiYWxseS1zdXBwb3J0cy1jYWNoZVwiO3ZhciAkPXJlYWRMb2NhbFN0b3JhZ2UoVik7aWYoJC51c2VyQWdlbnQhPT1XfHwkLnZlcnNpb24hPT1QKXskPXt9fSQudXNlckFnZW50PVc7JC52ZXJzaW9uPVA7dmFyIEs9e2dldDpmdW5jdGlvbiBnZXQoKXtyZXR1cm4gJH0sc2V0OmZ1bmN0aW9uIHNldChlKXtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbih0KXskW3RdPWVbdF19KSk7JC50aW1lPShuZXcgRGF0ZSkudG9JU09TdHJpbmcoKTt3cml0ZUxvY2FsU3RvcmFnZShWLCQpfX07ZnVuY3Rpb24gY3NzU2hhZG93UGllcmNpbmdEZWVwQ29tYmluYXRvcigpe3ZhciBlPXZvaWQgMDt0cnl7ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcImh0bWwgPj4+IDpmaXJzdC1jaGlsZFwiKTtlPVwiPj4+XCJ9Y2F0Y2godCl7dHJ5e2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJodG1sIC9kZWVwLyA6Zmlyc3QtY2hpbGRcIik7ZT1cIi9kZWVwL1wifWNhdGNoKHQpe2U9XCJcIn19cmV0dXJuIGV9dmFyIFo9XCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBQUFBUC8vL3lINUJBRUFBQUFBTEFBQUFBQUJBQUVBQUFJQlJBQTdcIjt2YXIgVT17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9JzxtYXAgbmFtZT1cImltYWdlLW1hcC10YWJpbmRleC10ZXN0XCI+JysnPGFyZWEgc2hhcGU9XCJyZWN0XCIgY29vcmRzPVwiNjMsMTksMTQ0LDQ1XCI+PC9tYXA+JysnPGltZyB1c2VtYXA9XCIjaW1hZ2UtbWFwLXRhYmluZGV4LXRlc3RcIiB0YWJpbmRleD1cIi0xXCIgYWx0PVwiXCIgc3JjPVwiJytaKydcIj4nO3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoXCJhcmVhXCIpfX07dmFyIEc9e2VsZW1lbnQ6XCJkaXZcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2UuaW5uZXJIVE1MPSc8bWFwIG5hbWU9XCJpbWFnZS1tYXAtdGFiaW5kZXgtdGVzdFwiPicrJzxhcmVhIGhyZWY9XCIjdm9pZFwiIHRhYmluZGV4PVwiLTFcIiBzaGFwZT1cInJlY3RcIiBjb29yZHM9XCI2MywxOSwxNDQsNDVcIj48L21hcD4nKyc8aW1nIHVzZW1hcD1cIiNpbWFnZS1tYXAtdGFiaW5kZXgtdGVzdFwiIGFsdD1cIlwiIHNyYz1cIicrWisnXCI+JztyZXR1cm4gZmFsc2V9LHZhbGlkYXRlOmZ1bmN0aW9uIHZhbGlkYXRlKGUsdCxyKXtpZihBLmlzLkdFQ0tPKXtyZXR1cm4gdHJ1ZX12YXIgbj1lLnF1ZXJ5U2VsZWN0b3IoXCJhcmVhXCIpO24uZm9jdXMoKTtyZXR1cm4gci5hY3RpdmVFbGVtZW50PT09bn19O3ZhciBYPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD0nPG1hcCBuYW1lPVwiaW1hZ2UtbWFwLWFyZWEtaHJlZi10ZXN0XCI+JysnPGFyZWEgc2hhcGU9XCJyZWN0XCIgY29vcmRzPVwiNjMsMTksMTQ0LDQ1XCI+PC9tYXA+JysnPGltZyB1c2VtYXA9XCIjaW1hZ2UtbWFwLWFyZWEtaHJlZi10ZXN0XCIgYWx0PVwiXCIgc3JjPVwiJytaKydcIj4nO3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoXCJhcmVhXCIpfSx2YWxpZGF0ZTpmdW5jdGlvbiB2YWxpZGF0ZShlLHQscil7aWYoQS5pcy5HRUNLTyl7cmV0dXJuIHRydWV9cmV0dXJuIHIuYWN0aXZlRWxlbWVudD09PXR9fTt2YXIgSj17bmFtZTpcImNhbi1mb2N1cy1hdWRpby13aXRob3V0LWNvbnRyb2xzXCIsZWxlbWVudDpcImF1ZGlvXCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXt0cnl7ZS5zZXRBdHRyaWJ1dGUoXCJzcmNcIixaKX1jYXRjaChlKXt9fX07dmFyIFE9XCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBQUFBUC8vL1paWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpcIjt2YXIgWT17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9JzxtYXAgbmFtZT1cImJyb2tlbi1pbWFnZS1tYXAtdGVzdFwiPjxhcmVhIGhyZWY9XCIjdm9pZFwiIHNoYXBlPVwicmVjdFwiIGNvb3Jkcz1cIjYzLDE5LDE0NCw0NVwiPjwvbWFwPicrJzxpbWcgdXNlbWFwPVwiI2Jyb2tlbi1pbWFnZS1tYXAtdGVzdFwiIGFsdD1cIlwiIHNyYz1cIicrUSsnXCI+JztyZXR1cm4gZS5xdWVyeVNlbGVjdG9yKFwiYXJlYVwiKX19O3ZhciBlZT17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiLFwiLTFcIik7ZS5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLFwiZGlzcGxheTogLXdlYmtpdC1mbGV4OyBkaXNwbGF5OiAtbXMtZmxleGJveDsgZGlzcGxheTogZmxleDtcIik7ZS5pbm5lckhUTUw9JzxzcGFuIHN0eWxlPVwiZGlzcGxheTogYmxvY2s7XCI+aGVsbG88L3NwYW4+JztyZXR1cm4gZS5xdWVyeVNlbGVjdG9yKFwic3BhblwiKX19O3ZhciB0ZT17ZWxlbWVudDpcImZpZWxkc2V0XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsMCk7ZS5zZXRBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiLFwiZGlzYWJsZWRcIil9fTt2YXIgcmU9e2VsZW1lbnQ6XCJmaWVsZHNldFwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9XCI8bGVnZW5kPmxlZ2VuZDwvbGVnZW5kPjxwPmNvbnRlbnQ8L3A+XCJ9fTt2YXIgbmU9e2VsZW1lbnQ6XCJzcGFuXCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsXCJkaXNwbGF5OiAtd2Via2l0LWZsZXg7IGRpc3BsYXk6IC1tcy1mbGV4Ym94OyBkaXNwbGF5OiBmbGV4O1wiKTtlLmlubmVySFRNTD0nPHNwYW4gc3R5bGU9XCJkaXNwbGF5OiBibG9jaztcIj5oZWxsbzwvc3Bhbj4nfX07dmFyIGFlPXtlbGVtZW50OlwiZm9ybVwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiLDApO2Uuc2V0QXR0cmlidXRlKFwiZGlzYWJsZWRcIixcImRpc2FibGVkXCIpfX07dmFyIG9lPXtlbGVtZW50OlwiYVwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5ocmVmPVwiI3ZvaWRcIjtlLmlubmVySFRNTD0nPGltZyBpc21hcCBzcmM9XCInK1orJ1wiIGFsdD1cIlwiPic7cmV0dXJuIGUucXVlcnlTZWxlY3RvcihcImltZ1wiKX19O3ZhciBpZT17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9JzxtYXAgbmFtZT1cImltYWdlLW1hcC10YWJpbmRleC10ZXN0XCI+PGFyZWEgaHJlZj1cIiN2b2lkXCIgc2hhcGU9XCJyZWN0XCIgY29vcmRzPVwiNjMsMTksMTQ0LDQ1XCI+PC9tYXA+JysnPGltZyB1c2VtYXA9XCIjaW1hZ2UtbWFwLXRhYmluZGV4LXRlc3RcIiB0YWJpbmRleD1cIi0xXCIgYWx0PVwiXCIgJysnc3JjPVwiJytaKydcIj4nO3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoXCJpbWdcIil9fTt2YXIgbGU9e2VsZW1lbnQ6ZnVuY3Rpb24gZWxlbWVudChlLHQpe3ZhciByPXQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKTtlLmFwcGVuZENoaWxkKHIpO3ZhciBuPXIuY29udGVudFdpbmRvdy5kb2N1bWVudDtuLm9wZW4oKTtuLmNsb3NlKCk7cmV0dXJuIHJ9LG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zdHlsZS52aXNpYmlsaXR5PVwiaGlkZGVuXCI7dmFyIHQ9ZS5jb250ZW50V2luZG93LmRvY3VtZW50O3ZhciByPXQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO3QuYm9keS5hcHBlbmRDaGlsZChyKTtyZXR1cm4gcn0sdmFsaWRhdGU6ZnVuY3Rpb24gdmFsaWRhdGUoZSl7dmFyIHQ9ZS5jb250ZW50V2luZG93LmRvY3VtZW50O3ZhciByPXQucXVlcnlTZWxlY3RvcihcImlucHV0XCIpO3JldHVybiB0LmFjdGl2ZUVsZW1lbnQ9PT1yfX07dmFyIHNlPSFBLmlzLldFQktJVDtmdW5jdGlvbiBmb2N1c0luWmVyb0RpbWVuc2lvbk9iamVjdCgpe3JldHVybiBzZX12YXIgdWU9e2VsZW1lbnQ6XCJkaXZcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2Uuc2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIixcImludmFsaWQtdmFsdWVcIil9fTt2YXIgY2U9e2VsZW1lbnQ6XCJsYWJlbFwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiLFwiLTFcIil9LHZhbGlkYXRlOmZ1bmN0aW9uIHZhbGlkYXRlKGUsdCxyKXt2YXIgbj1lLm9mZnNldEhlaWdodDtlLmZvY3VzKCk7cmV0dXJuIHIuYWN0aXZlRWxlbWVudD09PWV9fTt2YXIgZGU9XCJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSGh0YlwiK1wiRzV6T25oc2FXNXJQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUwzaHNhVzVySWlCcFpEMGljM1puSWo0OGRHVjRkQ0I0UFNJeE1DSWdlVDBpTWpBaUlHbGtQU0pcIitcInpkbWN0YkdsdWF5MTBaWGgwSWo1MFpYaDBQQzkwWlhoMFBqd3ZjM1puUGc9PVwiO3ZhciBmZT17ZWxlbWVudDpcIm9iamVjdFwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsXCJpbWFnZS9zdmcreG1sXCIpO2Uuc2V0QXR0cmlidXRlKFwiZGF0YVwiLGRlKTtlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsXCIyMDBcIik7ZS5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIixcIjUwXCIpO2Uuc3R5bGUudmlzaWJpbGl0eT1cImhpZGRlblwifX07dmFyIG1lPXtuYW1lOlwiY2FuLWZvY3VzLW9iamVjdC1zdmdcIixlbGVtZW50Olwib2JqZWN0XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLnNldEF0dHJpYnV0ZShcInR5cGVcIixcImltYWdlL3N2Zyt4bWxcIik7ZS5zZXRBdHRyaWJ1dGUoXCJkYXRhXCIsZGUpO2Uuc2V0QXR0cmlidXRlKFwid2lkdGhcIixcIjIwMFwiKTtlLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLFwiNTBcIil9LHZhbGlkYXRlOmZ1bmN0aW9uIHZhbGlkYXRlKGUsdCxyKXtpZihBLmlzLkdFQ0tPKXtyZXR1cm4gdHJ1ZX1yZXR1cm4gci5hY3RpdmVFbGVtZW50PT09ZX19O3ZhciBwZT0hQS5pcy5JRTk7ZnVuY3Rpb24gZm9jdXNPYmplY3RTd2YoKXtyZXR1cm4gcGV9dmFyIGJlPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD0nPG1hcCBuYW1lPVwiZm9jdXMtcmVkaXJlY3QtaW1nLXVzZW1hcFwiPjxhcmVhIGhyZWY9XCIjdm9pZFwiIHNoYXBlPVwicmVjdFwiIGNvb3Jkcz1cIjYzLDE5LDE0NCw0NVwiPjwvbWFwPicrJzxpbWcgdXNlbWFwPVwiI2ZvY3VzLXJlZGlyZWN0LWltZy11c2VtYXBcIiBhbHQ9XCJcIiAnKydzcmM9XCInK1orJ1wiPic7cmV0dXJuIGUucXVlcnlTZWxlY3RvcihcImltZ1wiKX0sdmFsaWRhdGU6ZnVuY3Rpb24gdmFsaWRhdGUoZSx0LHIpe3ZhciBuPWUucXVlcnlTZWxlY3RvcihcImFyZWFcIik7cmV0dXJuIHIuYWN0aXZlRWxlbWVudD09PW59fTt2YXIgdmU9e2VsZW1lbnQ6XCJmaWVsZHNldFwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9JzxsZWdlbmQ+bGVnZW5kPC9sZWdlbmQ+PGlucHV0IHRhYmluZGV4PVwiLTFcIj48aW5wdXQgdGFiaW5kZXg9XCIwXCI+JztyZXR1cm4gZmFsc2V9LHZhbGlkYXRlOmZ1bmN0aW9uIHZhbGlkYXRlKGUsdCxyKXt2YXIgbj1lLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3RhYmluZGV4PVwiLTFcIl0nKTt2YXIgYT1lLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3RhYmluZGV4PVwiMFwiXScpO2UuZm9jdXMoKTtlLnF1ZXJ5U2VsZWN0b3IoXCJsZWdlbmRcIikuZm9jdXMoKTtyZXR1cm4gci5hY3RpdmVFbGVtZW50PT09biYmXCJmb2N1c2FibGVcInx8ci5hY3RpdmVFbGVtZW50PT09YSYmXCJ0YWJiYWJsZVwifHxcIlwifX07dmFyIGdlPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsXCJ3aWR0aDogMTAwcHg7IGhlaWdodDogNTBweDsgb3ZlcmZsb3c6IGF1dG87XCIpO2UuaW5uZXJIVE1MPSc8ZGl2IHN0eWxlPVwid2lkdGg6IDUwMHB4OyBoZWlnaHQ6IDQwcHg7XCI+c2Nyb2xsYWJsZSBjb250ZW50PC9kaXY+JztyZXR1cm4gZS5xdWVyeVNlbGVjdG9yKFwiZGl2XCIpfX07dmFyIGhlPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsXCJ3aWR0aDogMTAwcHg7IGhlaWdodDogNTBweDtcIik7ZS5pbm5lckhUTUw9JzxkaXYgc3R5bGU9XCJ3aWR0aDogNTAwcHg7IGhlaWdodDogNDBweDtcIj5zY3JvbGxhYmxlIGNvbnRlbnQ8L2Rpdj4nfX07dmFyIHhlPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsXCJ3aWR0aDogMTAwcHg7IGhlaWdodDogNTBweDsgb3ZlcmZsb3c6IGF1dG87XCIpO2UuaW5uZXJIVE1MPSc8ZGl2IHN0eWxlPVwid2lkdGg6IDUwMHB4OyBoZWlnaHQ6IDQwcHg7XCI+c2Nyb2xsYWJsZSBjb250ZW50PC9kaXY+J319O3ZhciB5ZT17ZWxlbWVudDpcImRldGFpbHNcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2UuaW5uZXJIVE1MPVwiPHN1bW1hcnk+Zm9vPC9zdW1tYXJ5PjxwPmNvbnRlbnQ8L3A+XCI7cmV0dXJuIGUuZmlyc3RFbGVtZW50Q2hpbGR9fTtmdW5jdGlvbiBtYWtlRm9jdXNhYmxlRm9yZWlnbk9iamVjdCgpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXCJmb3JlaWduT2JqZWN0XCIpO2Uud2lkdGguYmFzZVZhbC52YWx1ZT0zMDtlLmhlaWdodC5iYXNlVmFsLnZhbHVlPTMwO2UuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpKTtlLmxhc3RDaGlsZC50eXBlPVwidGV4dFwiO3JldHVybiBlfWZ1bmN0aW9uIGZvY3VzU3ZnRm9yZWlnbk9iamVjdEhhY2soZSl7dmFyIHQ9ZS5vd25lclNWR0VsZW1lbnR8fGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PVwic3ZnXCI7aWYoIXQpe3JldHVybiBmYWxzZX12YXIgcj1tYWtlRm9jdXNhYmxlRm9yZWlnbk9iamVjdCgpO2UuYXBwZW5kQ2hpbGQocik7dmFyIG49ci5xdWVyeVNlbGVjdG9yKFwiaW5wdXRcIik7bi5mb2N1cygpO24uZGlzYWJsZWQ9dHJ1ZTtlLnJlbW92ZUNoaWxkKHIpO3JldHVybiB0cnVlfWZ1bmN0aW9uIGdlbmVyYXRlKGUpe3JldHVybic8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIj4nK2UrXCI8L3N2Zz5cIn1mdW5jdGlvbiBtYWludGFpbl90YWJfZm9jdXNfZm9jdXMoZSl7aWYoZS5mb2N1cyl7cmV0dXJufXRyeXtIVE1MRWxlbWVudC5wcm90b3R5cGUuZm9jdXMuY2FsbChlKX1jYXRjaCh0KXtmb2N1c1N2Z0ZvcmVpZ25PYmplY3RIYWNrKGUpfX1mdW5jdGlvbiB2YWxpZGF0ZShlLHQscil7bWFpbnRhaW5fdGFiX2ZvY3VzX2ZvY3VzKHQpO3JldHVybiByLmFjdGl2ZUVsZW1lbnQ9PT10fXZhciBFZT17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9Z2VuZXJhdGUoJzx0ZXh0IGZvY3VzYWJsZT1cInRydWVcIj5hPC90ZXh0PicpO3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoXCJ0ZXh0XCIpfSx2YWxpZGF0ZTp2YWxpZGF0ZX07dmFyIHdlPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD1nZW5lcmF0ZSgnPHRleHQgdGFiaW5kZXg9XCIwXCI+YTwvdGV4dD4nKTtyZXR1cm4gZS5xdWVyeVNlbGVjdG9yKFwidGV4dFwiKX0sdmFsaWRhdGU6dmFsaWRhdGV9O3ZhciBrZT17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9Z2VuZXJhdGUoJzx0ZXh0IHRhYmluZGV4PVwiLTFcIj5hPC90ZXh0PicpO3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoXCJ0ZXh0XCIpfSx2YWxpZGF0ZTp2YWxpZGF0ZX07dmFyIFNlPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD1nZW5lcmF0ZShbJzxnIGlkPVwiYWxseS10ZXN0LXRhcmdldFwiPjxhIHhsaW5rOmhyZWY9XCIjdm9pZFwiPjx0ZXh0Pmxpbms8L3RleHQ+PC9hPjwvZz4nLCc8dXNlIHhsaW5rOmhyZWY9XCIjYWxseS10ZXN0LXRhcmdldFwiIHg9XCIwXCIgeT1cIjBcIiB0YWJpbmRleD1cIi0xXCIgLz4nXS5qb2luKFwiXCIpKTtyZXR1cm4gZS5xdWVyeVNlbGVjdG9yKFwidXNlXCIpfSx2YWxpZGF0ZTp2YWxpZGF0ZX07dmFyIF9lPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD1nZW5lcmF0ZSgnPGZvcmVpZ25PYmplY3QgdGFiaW5kZXg9XCItMVwiPjxpbnB1dCB0eXBlPVwidGV4dFwiIC8+PC9mb3JlaWduT2JqZWN0PicpO3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoXCJmb3JlaWduT2JqZWN0XCIpfHxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiZm9yZWlnbk9iamVjdFwiKVswXX0sdmFsaWRhdGU6dmFsaWRhdGV9O3ZhciBUZT1Cb29sZWFuKEEuaXMuR0VDS08mJnR5cGVvZiBTVkdFbGVtZW50IT09XCJ1bmRlZmluZWRcIiYmU1ZHRWxlbWVudC5wcm90b3R5cGUuZm9jdXMpO2Z1bmN0aW9uIGZvY3VzU3ZnSW5JZnJhbWUoKXtyZXR1cm4gVGV9dmFyIENlPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD1nZW5lcmF0ZShcIlwiKTtyZXR1cm4gZS5maXJzdENoaWxkfSx2YWxpZGF0ZTp2YWxpZGF0ZX07dmFyIGplPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsXCIzeFwiKX19O3ZhciBBZT17ZWxlbWVudDpcInRhYmxlXCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlLHQscil7dmFyIG49ci5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7bi5pbm5lckhUTUw9XCI8dHI+PHRkPmNlbGw8L3RkPjwvdHI+XCI7ZS5hcHBlbmRDaGlsZChuKX19O3ZhciBPZT17ZWxlbWVudDpcInZpZGVvXCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXt0cnl7ZS5zZXRBdHRyaWJ1dGUoXCJzcmNcIixaKX1jYXRjaChlKXt9fX07dmFyIE5lPUEuaXMuR0VDS098fEEuaXMuVFJJREVOVHx8QS5pcy5FREdFO2Z1bmN0aW9uIHRhYnNlcXVlbmNlQXJlYUF0SW1nUG9zaXRpb24oKXtyZXR1cm4gTmV9dmFyIEllPXtjc3NTaGFkb3dQaWVyY2luZ0RlZXBDb21iaW5hdG9yOmNzc1NoYWRvd1BpZXJjaW5nRGVlcENvbWJpbmF0b3IsZm9jdXNJblplcm9EaW1lbnNpb25PYmplY3Q6Zm9jdXNJblplcm9EaW1lbnNpb25PYmplY3QsZm9jdXNPYmplY3RTd2Y6Zm9jdXNPYmplY3RTd2YsZm9jdXNTdmdJbklmcmFtZTpmb2N1c1N2Z0luSWZyYW1lLHRhYnNlcXVlbmNlQXJlYUF0SW1nUG9zaXRpb246dGFic2VxdWVuY2VBcmVhQXRJbWdQb3NpdGlvbn07dmFyIExlPXtmb2N1c0FyZWFJbWdUYWJpbmRleDpVLGZvY3VzQXJlYVRhYmluZGV4OkcsZm9jdXNBcmVhV2l0aG91dEhyZWY6WCxmb2N1c0F1ZGlvV2l0aG91dENvbnRyb2xzOkosZm9jdXNCcm9rZW5JbWFnZU1hcDpZLGZvY3VzQ2hpbGRyZW5PZkZvY3VzYWJsZUZsZXhib3g6ZWUsZm9jdXNGaWVsZHNldERpc2FibGVkOnRlLGZvY3VzRmllbGRzZXQ6cmUsZm9jdXNGbGV4Ym94Q29udGFpbmVyOm5lLGZvY3VzRm9ybURpc2FibGVkOmFlLGZvY3VzSW1nSXNtYXA6b2UsZm9jdXNJbWdVc2VtYXBUYWJpbmRleDppZSxmb2N1c0luSGlkZGVuSWZyYW1lOmxlLGZvY3VzSW52YWxpZFRhYmluZGV4OnVlLGZvY3VzTGFiZWxUYWJpbmRleDpjZSxmb2N1c09iamVjdFN2ZzptZSxmb2N1c09iamVjdFN2Z0hpZGRlbjpmZSxmb2N1c1JlZGlyZWN0SW1nVXNlbWFwOmJlLGZvY3VzUmVkaXJlY3RMZWdlbmQ6dmUsZm9jdXNTY3JvbGxCb2R5OmdlLGZvY3VzU2Nyb2xsQ29udGFpbmVyV2l0aG91dE92ZXJmbG93OmhlLGZvY3VzU2Nyb2xsQ29udGFpbmVyOnhlLGZvY3VzU3VtbWFyeTp5ZSxmb2N1c1N2Z0ZvY3VzYWJsZUF0dHJpYnV0ZTpFZSxmb2N1c1N2Z1RhYmluZGV4QXR0cmlidXRlOndlLGZvY3VzU3ZnTmVnYXRpdmVUYWJpbmRleEF0dHJpYnV0ZTprZSxmb2N1c1N2Z1VzZVRhYmluZGV4OlNlLGZvY3VzU3ZnRm9yZWlnbm9iamVjdFRhYmluZGV4Ol9lLGZvY3VzU3ZnOkNlLGZvY3VzVGFiaW5kZXhUcmFpbGluZ0NoYXJhY3RlcnM6amUsZm9jdXNUYWJsZTpBZSxmb2N1c1ZpZGVvV2l0aG91dENvbnRyb2xzOk9lfTtmdW5jdGlvbiBleGVjdXRlVGVzdHMoKXt2YXIgZT1kZXRlY3RGb2N1cyhMZSk7T2JqZWN0LmtleXMoSWUpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2VbdF09SWVbdF0oKX0pKTtyZXR1cm4gZX12YXIgRmU9bnVsbDtmdW5jdGlvbiBfc3VwcG9ydHMoKXtpZihGZSl7cmV0dXJuIEZlfUZlPUsuZ2V0KCk7aWYoIUZlLnRpbWUpe0suc2V0KGV4ZWN1dGVUZXN0cygpKTtGZT1LLmdldCgpfXJldHVybiBGZX12YXIgRGU9dm9pZCAwO3ZhciBNZT0vXlxccyooLXxcXCspP1swLTldK1xccyokLzt2YXIgUmU9L15cXHMqKC18XFwrKT9bMC05XSsuKiQvO2Z1bmN0aW9uIGlzVmFsaWRUYWJpbmRleChlKXtpZighRGUpe0RlPV9zdXBwb3J0cygpfXZhciB0PURlLmZvY3VzVGFiaW5kZXhUcmFpbGluZ0NoYXJhY3RlcnM/UmU6TWU7dmFyIHI9Y29udGV4dFRvRWxlbWVudCh7bGFiZWw6XCJpcy92YWxpZC10YWJpbmRleFwiLHJlc29sdmVEb2N1bWVudDp0cnVlLGNvbnRleHQ6ZX0pO3ZhciBuPXIuaGFzQXR0cmlidXRlKFwidGFiaW5kZXhcIik7dmFyIGE9ci5oYXNBdHRyaWJ1dGUoXCJ0YWJJbmRleFwiKTtpZighbiYmIWEpe3JldHVybiBmYWxzZX12YXIgbz1yLm93bmVyU1ZHRWxlbWVudHx8ci5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09XCJzdmdcIjtpZihvJiYhRGUuZm9jdXNTdmdUYWJpbmRleEF0dHJpYnV0ZSl7cmV0dXJuIGZhbHNlfWlmKERlLmZvY3VzSW52YWxpZFRhYmluZGV4KXtyZXR1cm4gdHJ1ZX12YXIgaT1yLmdldEF0dHJpYnV0ZShuP1widGFiaW5kZXhcIjpcInRhYkluZGV4XCIpO2lmKGk9PT1cIi0zMjc2OFwiKXtyZXR1cm4gZmFsc2V9cmV0dXJuIEJvb2xlYW4oaSYmdC50ZXN0KGkpKX1mdW5jdGlvbiB0YWJpbmRleFZhbHVlKGUpe2lmKCFpc1ZhbGlkVGFiaW5kZXgoZSkpe3JldHVybiBudWxsfXZhciB0PWUuaGFzQXR0cmlidXRlKFwidGFiaW5kZXhcIik7dmFyIHI9dD9cInRhYmluZGV4XCI6XCJ0YWJJbmRleFwiO3ZhciBuPXBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKHIpLDEwKTtyZXR1cm4gaXNOYU4obik/LTE6bn1mdW5jdGlvbiBpc1VzZXJNb2RpZnlXcml0YWJsZShlKXt2YXIgdD1lLndlYmtpdFVzZXJNb2RpZnl8fFwiXCI7cmV0dXJuIEJvb2xlYW4odCYmdC5pbmRleE9mKFwid3JpdGVcIikhPT0tMSl9ZnVuY3Rpb24gaGFzQ3NzT3ZlcmZsb3dTY3JvbGwoZSl7cmV0dXJuW2UuZ2V0UHJvcGVydHlWYWx1ZShcIm92ZXJmbG93XCIpLGUuZ2V0UHJvcGVydHlWYWx1ZShcIm92ZXJmbG93LXhcIiksZS5nZXRQcm9wZXJ0eVZhbHVlKFwib3ZlcmZsb3cteVwiKV0uc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1cImF1dG9cInx8ZT09PVwic2Nyb2xsXCJ9KSl9ZnVuY3Rpb24gaGFzQ3NzRGlzcGxheUZsZXgoZSl7cmV0dXJuIGUuZGlzcGxheS5pbmRleE9mKFwiZmxleFwiKT4tMX1mdW5jdGlvbiBpc1Njcm9sbGFibGVDb250YWluZXIoZSx0LHIsbil7aWYodCE9PVwiZGl2XCImJnQhPT1cInNwYW5cIil7cmV0dXJuIGZhbHNlfWlmKHImJnIhPT1cImRpdlwiJiZyIT09XCJzcGFuXCImJiFoYXNDc3NPdmVyZmxvd1Njcm9sbChuKSl7cmV0dXJuIGZhbHNlfXJldHVybiBlLm9mZnNldEhlaWdodDxlLnNjcm9sbEhlaWdodHx8ZS5vZmZzZXRXaWR0aDxlLnNjcm9sbFdpZHRofXZhciB6ZT12b2lkIDA7ZnVuY3Rpb24gaXNGb2N1c1JlbGV2YW50UnVsZXMoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e30sdD1lLmNvbnRleHQscj1lLmV4Y2VwdCxuPXI9PT11bmRlZmluZWQ/e2ZsZXhib3g6ZmFsc2Usc2Nyb2xsYWJsZTpmYWxzZSxzaGFkb3c6ZmFsc2V9OnI7aWYoIXplKXt6ZT1fc3VwcG9ydHMoKX12YXIgYT1jb250ZXh0VG9FbGVtZW50KHtsYWJlbDpcImlzL2ZvY3VzLXJlbGV2YW50XCIscmVzb2x2ZURvY3VtZW50OnRydWUsY29udGV4dDp0fSk7aWYoIW4uc2hhZG93JiZhLnNoYWRvd1Jvb3Qpe3JldHVybiB0cnVlfXZhciBvPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihvPT09XCJpbnB1dFwiJiZhLnR5cGU9PT1cImhpZGRlblwiKXtyZXR1cm4gZmFsc2V9aWYobz09PVwiaW5wdXRcInx8bz09PVwic2VsZWN0XCJ8fG89PT1cImJ1dHRvblwifHxvPT09XCJ0ZXh0YXJlYVwiKXtyZXR1cm4gdHJ1ZX1pZihvPT09XCJsZWdlbmRcIiYmemUuZm9jdXNSZWRpcmVjdExlZ2VuZCl7cmV0dXJuIHRydWV9aWYobz09PVwibGFiZWxcIil7cmV0dXJuIHRydWV9aWYobz09PVwiYXJlYVwiKXtyZXR1cm4gdHJ1ZX1pZihvPT09XCJhXCImJmEuaGFzQXR0cmlidXRlKFwiaHJlZlwiKSl7cmV0dXJuIHRydWV9aWYobz09PVwib2JqZWN0XCImJmEuaGFzQXR0cmlidXRlKFwidXNlbWFwXCIpKXtyZXR1cm4gZmFsc2V9aWYobz09PVwib2JqZWN0XCIpe3ZhciBpPWEuZ2V0QXR0cmlidXRlKFwidHlwZVwiKTtpZighemUuZm9jdXNPYmplY3RTdmcmJmk9PT1cImltYWdlL3N2Zyt4bWxcIil7cmV0dXJuIGZhbHNlfWVsc2UgaWYoIXplLmZvY3VzT2JqZWN0U3dmJiZpPT09XCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaFwiKXtyZXR1cm4gZmFsc2V9fWlmKG89PT1cImlmcmFtZVwifHxvPT09XCJvYmplY3RcIil7cmV0dXJuIHRydWV9aWYobz09PVwiZW1iZWRcInx8bz09PVwia2V5Z2VuXCIpe3JldHVybiB0cnVlfWlmKGEuaGFzQXR0cmlidXRlKFwiY29udGVudGVkaXRhYmxlXCIpKXtyZXR1cm4gdHJ1ZX1pZihvPT09XCJhdWRpb1wiJiYoemUuZm9jdXNBdWRpb1dpdGhvdXRDb250cm9sc3x8YS5oYXNBdHRyaWJ1dGUoXCJjb250cm9sc1wiKSkpe3JldHVybiB0cnVlfWlmKG89PT1cInZpZGVvXCImJih6ZS5mb2N1c1ZpZGVvV2l0aG91dENvbnRyb2xzfHxhLmhhc0F0dHJpYnV0ZShcImNvbnRyb2xzXCIpKSl7cmV0dXJuIHRydWV9aWYoemUuZm9jdXNTdW1tYXJ5JiZvPT09XCJzdW1tYXJ5XCIpe3JldHVybiB0cnVlfXZhciBsPWlzVmFsaWRUYWJpbmRleChhKTtpZihvPT09XCJpbWdcIiYmYS5oYXNBdHRyaWJ1dGUoXCJ1c2VtYXBcIikpe3JldHVybiBsJiZ6ZS5mb2N1c0ltZ1VzZW1hcFRhYmluZGV4fHx6ZS5mb2N1c1JlZGlyZWN0SW1nVXNlbWFwfWlmKHplLmZvY3VzVGFibGUmJihvPT09XCJ0YWJsZVwifHxvPT09XCJ0ZFwiKSl7cmV0dXJuIHRydWV9aWYoemUuZm9jdXNGaWVsZHNldCYmbz09PVwiZmllbGRzZXRcIil7cmV0dXJuIHRydWV9dmFyIHM9bz09PVwic3ZnXCI7dmFyIHU9YS5vd25lclNWR0VsZW1lbnQ7dmFyIGM9YS5nZXRBdHRyaWJ1dGUoXCJmb2N1c2FibGVcIik7dmFyIGQ9dGFiaW5kZXhWYWx1ZShhKTtpZihvPT09XCJ1c2VcIiYmZCE9PW51bGwmJiF6ZS5mb2N1c1N2Z1VzZVRhYmluZGV4KXtyZXR1cm4gZmFsc2V9aWYobz09PVwiZm9yZWlnbm9iamVjdFwiKXtyZXR1cm4gZCE9PW51bGwmJnplLmZvY3VzU3ZnRm9yZWlnbm9iamVjdFRhYmluZGV4fWlmKGVsZW1lbnRNYXRjaGVzKGEsXCJzdmcgYVwiKSYmYS5oYXNBdHRyaWJ1dGUoXCJ4bGluazpocmVmXCIpKXtyZXR1cm4gdHJ1ZX1pZigoc3x8dSkmJmEuZm9jdXMmJiF6ZS5mb2N1c1N2Z05lZ2F0aXZlVGFiaW5kZXhBdHRyaWJ1dGUmJmQ8MCl7cmV0dXJuIGZhbHNlfWlmKHMpe3JldHVybiBsfHx6ZS5mb2N1c1N2Z3x8emUuZm9jdXNTdmdJbklmcmFtZXx8Qm9vbGVhbih6ZS5mb2N1c1N2Z0ZvY3VzYWJsZUF0dHJpYnV0ZSYmYyYmYz09PVwidHJ1ZVwiKX1pZih1KXtpZih6ZS5mb2N1c1N2Z1RhYmluZGV4QXR0cmlidXRlJiZsKXtyZXR1cm4gdHJ1ZX1pZih6ZS5mb2N1c1N2Z0ZvY3VzYWJsZUF0dHJpYnV0ZSl7cmV0dXJuIGM9PT1cInRydWVcIn19aWYobCl7cmV0dXJuIHRydWV9dmFyIGY9d2luZG93LmdldENvbXB1dGVkU3R5bGUoYSxudWxsKTtpZihpc1VzZXJNb2RpZnlXcml0YWJsZShmKSl7cmV0dXJuIHRydWV9aWYoemUuZm9jdXNJbWdJc21hcCYmbz09PVwiaW1nXCImJmEuaGFzQXR0cmlidXRlKFwiaXNtYXBcIikpe3ZhciBtPWdldFBhcmVudHMoe2NvbnRleHQ6YX0pLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1cImFcIiYmZS5oYXNBdHRyaWJ1dGUoXCJocmVmXCIpfSkpO2lmKG0pe3JldHVybiB0cnVlfX1pZighbi5zY3JvbGxhYmxlJiZ6ZS5mb2N1c1Njcm9sbENvbnRhaW5lcil7aWYoemUuZm9jdXNTY3JvbGxDb250YWluZXJXaXRob3V0T3ZlcmZsb3cpe2lmKGlzU2Nyb2xsYWJsZUNvbnRhaW5lcihhLG8pKXtyZXR1cm4gdHJ1ZX19ZWxzZSBpZihoYXNDc3NPdmVyZmxvd1Njcm9sbChmKSl7cmV0dXJuIHRydWV9fWlmKCFuLmZsZXhib3gmJnplLmZvY3VzRmxleGJveENvbnRhaW5lciYmaGFzQ3NzRGlzcGxheUZsZXgoZikpe3JldHVybiB0cnVlfXZhciBwPWEucGFyZW50RWxlbWVudDtpZighbi5zY3JvbGxhYmxlJiZwKXt2YXIgYj1wLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7dmFyIHY9d2luZG93LmdldENvbXB1dGVkU3R5bGUocCxudWxsKTtpZih6ZS5mb2N1c1Njcm9sbEJvZHkmJmlzU2Nyb2xsYWJsZUNvbnRhaW5lcihwLG8sYix2KSl7cmV0dXJuIHRydWV9aWYoemUuZm9jdXNDaGlsZHJlbk9mRm9jdXNhYmxlRmxleGJveCl7aWYoaGFzQ3NzRGlzcGxheUZsZXgodikpe3JldHVybiB0cnVlfX19cmV0dXJuIGZhbHNlfWlzRm9jdXNSZWxldmFudFJ1bGVzLmV4Y2VwdD1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fTt2YXIgdD1mdW5jdGlvbiBpc0ZvY3VzUmVsZXZhbnQodCl7cmV0dXJuIGlzRm9jdXNSZWxldmFudFJ1bGVzKHtjb250ZXh0OnQsZXhjZXB0OmV9KX07dC5ydWxlcz1pc0ZvY3VzUmVsZXZhbnRSdWxlcztyZXR1cm4gdH07dmFyIEJlPWlzRm9jdXNSZWxldmFudFJ1bGVzLmV4Y2VwdCh7fSk7ZnVuY3Rpb24gZmluZEluZGV4KGUsdCl7aWYoZS5maW5kSW5kZXgpe3JldHVybiBlLmZpbmRJbmRleCh0KX12YXIgcj1lLmxlbmd0aDtpZihyPT09MCl7cmV0dXJuLTF9Zm9yKHZhciBuPTA7bjxyO24rKyl7aWYodChlW25dLG4sZSkpe3JldHVybiBufX1yZXR1cm4tMX1mdW5jdGlvbiBnZXRDb250ZW50RG9jdW1lbnQoZSl7dHJ5e3JldHVybiBlLmNvbnRlbnREb2N1bWVudHx8ZS5jb250ZW50V2luZG93JiZlLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnR8fGUuZ2V0U1ZHRG9jdW1lbnQmJmUuZ2V0U1ZHRG9jdW1lbnQoKXx8bnVsbH1jYXRjaChlKXtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gZ2V0V2luZG93KGUpe3ZhciB0PWdldERvY3VtZW50KGUpO3JldHVybiB0LmRlZmF1bHRWaWV3fHx3aW5kb3d9dmFyIEhlPXZvaWQgMDtmdW5jdGlvbiBzZWxlY3RJblNoYWRvd3MoZSl7aWYodHlwZW9mIEhlIT09XCJzdHJpbmdcIil7dmFyIHQ9Y3NzU2hhZG93UGllcmNpbmdEZWVwQ29tYmluYXRvcigpO2lmKHQpe0hlPVwiLCBodG1sIFwiK3QrXCIgXCJ9fWlmKCFIZSl7cmV0dXJuIGV9cmV0dXJuIGUrSGUrZS5yZXBsYWNlKC9cXHMqLFxccyovZyxcIixcIikuc3BsaXQoXCIsXCIpLmpvaW4oSGUpfXZhciBxZT12b2lkIDA7ZnVuY3Rpb24gZmluZERvY3VtZW50SG9zdEVsZW1lbnQoZSl7aWYoIXFlKXtxZT1zZWxlY3RJblNoYWRvd3MoXCJvYmplY3QsIGlmcmFtZVwiKX1pZihlLl9mcmFtZUVsZW1lbnQhPT11bmRlZmluZWQpe3JldHVybiBlLl9mcmFtZUVsZW1lbnR9ZS5fZnJhbWVFbGVtZW50PW51bGw7dmFyIHQ9ZS5wYXJlbnQuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChxZSk7W10uc29tZS5jYWxsKHQsKGZ1bmN0aW9uKHQpe3ZhciByPWdldENvbnRlbnREb2N1bWVudCh0KTtpZihyIT09ZS5kb2N1bWVudCl7cmV0dXJuIGZhbHNlfWUuX2ZyYW1lRWxlbWVudD10O3JldHVybiB0cnVlfSkpO3JldHVybiBlLl9mcmFtZUVsZW1lbnR9ZnVuY3Rpb24gZ2V0RnJhbWVFbGVtZW50KGUpe3ZhciB0PWdldFdpbmRvdyhlKTtpZighdC5wYXJlbnR8fHQucGFyZW50PT09dCl7cmV0dXJuIG51bGx9dHJ5e3JldHVybiB0LmZyYW1lRWxlbWVudHx8ZmluZERvY3VtZW50SG9zdEVsZW1lbnQodCl9Y2F0Y2goZSl7cmV0dXJuIG51bGx9fXZhciBQZT0vXihhcmVhKSQvO2Z1bmN0aW9uIGNvbXB1dGVkU3R5bGUoZSx0KXtyZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHQpfWZ1bmN0aW9uIG5vdERpc3BsYXllZChlKXtyZXR1cm4gZS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gY29tcHV0ZWRTdHlsZShlLFwiZGlzcGxheVwiKT09PVwibm9uZVwifSkpfWZ1bmN0aW9uIG5vdFZpc2libGUoZSl7dmFyIHQ9ZmluZEluZGV4KGUsKGZ1bmN0aW9uKGUpe3ZhciB0PWNvbXB1dGVkU3R5bGUoZSxcInZpc2liaWxpdHlcIik7cmV0dXJuIHQ9PT1cImhpZGRlblwifHx0PT09XCJjb2xsYXBzZVwifSkpO2lmKHQ9PT0tMSl7cmV0dXJuIGZhbHNlfXZhciByPWZpbmRJbmRleChlLChmdW5jdGlvbihlKXtyZXR1cm4gY29tcHV0ZWRTdHlsZShlLFwidmlzaWJpbGl0eVwiKT09PVwidmlzaWJsZVwifSkpO2lmKHI9PT0tMSl7cmV0dXJuIHRydWV9aWYodDxyKXtyZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9ZnVuY3Rpb24gY29sbGFwc2VkUGFyZW50KGUpe3ZhciB0PTE7aWYoZVswXS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09XCJzdW1tYXJ5XCIpe3Q9Mn1yZXR1cm4gZS5zbGljZSh0KS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09XCJkZXRhaWxzXCImJmUub3Blbj09PWZhbHNlfSkpfWZ1bmN0aW9uIGlzVmlzaWJsZVJ1bGVzKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9LHQ9ZS5jb250ZXh0LHI9ZS5leGNlcHQsbj1yPT09dW5kZWZpbmVkP3tub3RSZW5kZXJlZDpmYWxzZSxjc3NEaXNwbGF5OmZhbHNlLGNzc1Zpc2liaWxpdHk6ZmFsc2UsZGV0YWlsc0VsZW1lbnQ6ZmFsc2UsYnJvd3NpbmdDb250ZXh0OmZhbHNlfTpyO3ZhciBhPWNvbnRleHRUb0VsZW1lbnQoe2xhYmVsOlwiaXMvdmlzaWJsZVwiLHJlc29sdmVEb2N1bWVudDp0cnVlLGNvbnRleHQ6dH0pO3ZhciBvPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZighbi5ub3RSZW5kZXJlZCYmUGUudGVzdChvKSl7cmV0dXJuIHRydWV9dmFyIGk9Z2V0UGFyZW50cyh7Y29udGV4dDphfSk7dmFyIGw9bz09PVwiYXVkaW9cIiYmIWEuaGFzQXR0cmlidXRlKFwiY29udHJvbHNcIik7aWYoIW4uY3NzRGlzcGxheSYmbm90RGlzcGxheWVkKGw/aS5zbGljZSgxKTppKSl7cmV0dXJuIGZhbHNlfWlmKCFuLmNzc1Zpc2liaWxpdHkmJm5vdFZpc2libGUoaSkpe3JldHVybiBmYWxzZX1pZighbi5kZXRhaWxzRWxlbWVudCYmY29sbGFwc2VkUGFyZW50KGkpKXtyZXR1cm4gZmFsc2V9aWYoIW4uYnJvd3NpbmdDb250ZXh0KXt2YXIgcz1nZXRGcmFtZUVsZW1lbnQoYSk7dmFyIHU9aXNWaXNpYmxlUnVsZXMuZXhjZXB0KG4pO2lmKHMmJiF1KHMpKXtyZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlfWlzVmlzaWJsZVJ1bGVzLmV4Y2VwdD1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fTt2YXIgdD1mdW5jdGlvbiBpc1Zpc2libGUodCl7cmV0dXJuIGlzVmlzaWJsZVJ1bGVzKHtjb250ZXh0OnQsZXhjZXB0OmV9KX07dC5ydWxlcz1pc1Zpc2libGVSdWxlcztyZXR1cm4gdH07dmFyIFdlPWlzVmlzaWJsZVJ1bGVzLmV4Y2VwdCh7fSk7ZnVuY3Rpb24gZ2V0TWFwQnlOYW1lKGUsdCl7dmFyIHI9dC5xdWVyeVNlbGVjdG9yKCdtYXBbbmFtZT1cIicrVCgpKGUpKydcIl0nKTtyZXR1cm4gcnx8bnVsbH1mdW5jdGlvbiBnZXRJbWFnZU9mQXJlYShlKXt2YXIgdD1lLnBhcmVudEVsZW1lbnQ7aWYoIXQubmFtZXx8dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT09XCJtYXBcIil7cmV0dXJuIG51bGx9dmFyIHI9Z2V0RG9jdW1lbnQoZSk7cmV0dXJuIHIucXVlcnlTZWxlY3RvcignaW1nW3VzZW1hcD1cIiMnK1QoKSh0Lm5hbWUpKydcIl0nKXx8bnVsbH12YXIgVmU9dm9pZCAwO2Z1bmN0aW9uIGlzVmFsaWRBcmVhKGUpe2lmKCFWZSl7VmU9X3N1cHBvcnRzKCl9dmFyIHQ9Y29udGV4dFRvRWxlbWVudCh7bGFiZWw6XCJpcy92YWxpZC1hcmVhXCIsY29udGV4dDplfSk7dmFyIHI9dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKHIhPT1cImFyZWFcIil7cmV0dXJuIGZhbHNlfXZhciBuPXQuaGFzQXR0cmlidXRlKFwidGFiaW5kZXhcIik7aWYoIVZlLmZvY3VzQXJlYVRhYmluZGV4JiZuKXtyZXR1cm4gZmFsc2V9dmFyIGE9Z2V0SW1hZ2VPZkFyZWEodCk7aWYoIWF8fCFXZShhKSl7cmV0dXJuIGZhbHNlfWlmKCFWZS5mb2N1c0Jyb2tlbkltYWdlTWFwJiYoIWEuY29tcGxldGV8fCFhLm5hdHVyYWxIZWlnaHR8fGEub2Zmc2V0V2lkdGg8PTB8fGEub2Zmc2V0SGVpZ2h0PD0wKSl7cmV0dXJuIGZhbHNlfWlmKCFWZS5mb2N1c0FyZWFXaXRob3V0SHJlZiYmIXQuaHJlZil7cmV0dXJuIFZlLmZvY3VzQXJlYVRhYmluZGV4JiZufHxWZS5mb2N1c0FyZWFJbWdUYWJpbmRleCYmYS5oYXNBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiKX12YXIgbz1nZXRQYXJlbnRzKHtjb250ZXh0OmF9KS5zbGljZSgxKS5zb21lKChmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHQ9PT1cImJ1dHRvblwifHx0PT09XCJhXCJ9KSk7aWYobyl7cmV0dXJuIGZhbHNlfXJldHVybiB0cnVlfXZhciAkZT12b2lkIDA7dmFyIEtlPXZvaWQgMDt2YXIgWmU9e2lucHV0OnRydWUsc2VsZWN0OnRydWUsdGV4dGFyZWE6dHJ1ZSxidXR0b246dHJ1ZSxmaWVsZHNldDp0cnVlLGZvcm06dHJ1ZX07ZnVuY3Rpb24gaXNOYXRpdmVEaXNhYmxlZFN1cHBvcnRlZChlKXtpZighJGUpeyRlPV9zdXBwb3J0cygpO2lmKCRlLmZvY3VzRmllbGRzZXREaXNhYmxlZCl7ZGVsZXRlIFplLmZpZWxkc2V0fWlmKCRlLmZvY3VzRm9ybURpc2FibGVkKXtkZWxldGUgWmUuZm9ybX1LZT1uZXcgUmVnRXhwKFwiXihcIitPYmplY3Qua2V5cyhaZSkuam9pbihcInxcIikrXCIpJFwiKX12YXIgdD1jb250ZXh0VG9FbGVtZW50KHtsYWJlbDpcImlzL25hdGl2ZS1kaXNhYmxlZC1zdXBwb3J0ZWRcIixjb250ZXh0OmV9KTt2YXIgcj10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIEJvb2xlYW4oS2UudGVzdChyKSl9dmFyIFVlPXZvaWQgMDtmdW5jdGlvbiBpc0Rpc2FibGVkRmllbGRzZXQoZSl7dmFyIHQ9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiB0PT09XCJmaWVsZHNldFwiJiZlLmRpc2FibGVkfWZ1bmN0aW9uIGlzRGlzYWJsZWRGb3JtKGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gdD09PVwiZm9ybVwiJiZlLmRpc2FibGVkfWZ1bmN0aW9uIGlzRGlzYWJsZWQoZSl7aWYoIVVlKXtVZT1fc3VwcG9ydHMoKX12YXIgdD1jb250ZXh0VG9FbGVtZW50KHtsYWJlbDpcImlzL2Rpc2FibGVkXCIsY29udGV4dDplfSk7aWYodC5oYXNBdHRyaWJ1dGUoXCJkYXRhLWFsbHktZGlzYWJsZWRcIikpe3JldHVybiB0cnVlfWlmKCFpc05hdGl2ZURpc2FibGVkU3VwcG9ydGVkKHQpKXtyZXR1cm4gZmFsc2V9aWYodC5kaXNhYmxlZCl7cmV0dXJuIHRydWV9dmFyIHI9Z2V0UGFyZW50cyh7Y29udGV4dDp0fSk7aWYoci5zb21lKGlzRGlzYWJsZWRGaWVsZHNldCkpe3JldHVybiB0cnVlfWlmKCFVZS5mb2N1c0Zvcm1EaXNhYmxlZCYmci5zb21lKGlzRGlzYWJsZWRGb3JtKSl7cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfWZ1bmN0aW9uIGlzT25seVRhYmJhYmxlUnVsZXMoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e30sdD1lLmNvbnRleHQscj1lLmV4Y2VwdCxuPXI9PT11bmRlZmluZWQ/e29ubHlGb2N1c2FibGVCcm93c2luZ0NvbnRleHQ6ZmFsc2UsdmlzaWJsZTpmYWxzZX06cjt2YXIgYT1jb250ZXh0VG9FbGVtZW50KHtsYWJlbDpcImlzL29ubHktdGFiYmFibGVcIixyZXNvbHZlRG9jdW1lbnQ6dHJ1ZSxjb250ZXh0OnR9KTtpZighbi52aXNpYmxlJiYhV2UoYSkpe3JldHVybiBmYWxzZX1pZighbi5vbmx5Rm9jdXNhYmxlQnJvd3NpbmdDb250ZXh0JiYoQS5pcy5HRUNLT3x8QS5pcy5UUklERU5UfHxBLmlzLkVER0UpKXt2YXIgbz1nZXRGcmFtZUVsZW1lbnQoYSk7aWYobyl7aWYodGFiaW5kZXhWYWx1ZShvKTwwKXtyZXR1cm4gZmFsc2V9fX12YXIgaT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7dmFyIGw9dGFiaW5kZXhWYWx1ZShhKTtpZihpPT09XCJsYWJlbFwiJiZBLmlzLkdFQ0tPKXtyZXR1cm4gbCE9PW51bGwmJmw+PTB9aWYoQS5pcy5HRUNLTyYmYS5vd25lclNWR0VsZW1lbnQmJiFhLmZvY3VzKXtpZihpPT09XCJhXCImJmEuaGFzQXR0cmlidXRlKFwieGxpbms6aHJlZlwiKSl7aWYoQS5pcy5HRUNLTyl7cmV0dXJuIHRydWV9fX1yZXR1cm4gZmFsc2V9aXNPbmx5VGFiYmFibGVSdWxlcy5leGNlcHQ9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e307dmFyIHQ9ZnVuY3Rpb24gaXNPbmx5VGFiYmFibGUodCl7cmV0dXJuIGlzT25seVRhYmJhYmxlUnVsZXMoe2NvbnRleHQ6dCxleGNlcHQ6ZX0pfTt0LnJ1bGVzPWlzT25seVRhYmJhYmxlUnVsZXM7cmV0dXJuIHR9O3ZhciBHZT1pc09ubHlUYWJiYWJsZVJ1bGVzLmV4Y2VwdCh7fSk7dmFyIFhlPXZvaWQgMDtmdW5jdGlvbiBpc09ubHlGb2N1c1JlbGV2YW50KGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZih0PT09XCJlbWJlZFwifHx0PT09XCJrZXlnZW5cIil7cmV0dXJuIHRydWV9dmFyIHI9dGFiaW5kZXhWYWx1ZShlKTtpZihlLnNoYWRvd1Jvb3QmJnI9PT1udWxsKXtyZXR1cm4gdHJ1ZX1pZih0PT09XCJsYWJlbFwiKXtyZXR1cm4hWGUuZm9jdXNMYWJlbFRhYmluZGV4fHxyPT09bnVsbH1pZih0PT09XCJsZWdlbmRcIil7cmV0dXJuIHI9PT1udWxsfWlmKFhlLmZvY3VzU3ZnRm9jdXNhYmxlQXR0cmlidXRlJiYoZS5vd25lclNWR0VsZW1lbnR8fHQ9PT1cInN2Z1wiKSl7dmFyIG49ZS5nZXRBdHRyaWJ1dGUoXCJmb2N1c2FibGVcIik7cmV0dXJuIG4mJm49PT1cImZhbHNlXCJ9aWYodD09PVwiaW1nXCImJmUuaGFzQXR0cmlidXRlKFwidXNlbWFwXCIpKXtyZXR1cm4gcj09PW51bGx8fCFYZS5mb2N1c0ltZ1VzZW1hcFRhYmluZGV4fWlmKHQ9PT1cImFyZWFcIil7cmV0dXJuIWlzVmFsaWRBcmVhKGUpfXJldHVybiBmYWxzZX1mdW5jdGlvbiBpc0ZvY3VzYWJsZVJ1bGVzKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9LHQ9ZS5jb250ZXh0LHI9ZS5leGNlcHQsbj1yPT09dW5kZWZpbmVkP3tkaXNhYmxlZDpmYWxzZSx2aXNpYmxlOmZhbHNlLG9ubHlUYWJiYWJsZTpmYWxzZX06cjtpZighWGUpe1hlPV9zdXBwb3J0cygpfXZhciBhPUdlLnJ1bGVzLmV4Y2VwdCh7b25seUZvY3VzYWJsZUJyb3dzaW5nQ29udGV4dDp0cnVlLHZpc2libGU6bi52aXNpYmxlfSk7dmFyIG89Y29udGV4dFRvRWxlbWVudCh7bGFiZWw6XCJpcy9mb2N1c2FibGVcIixyZXNvbHZlRG9jdW1lbnQ6dHJ1ZSxjb250ZXh0OnR9KTt2YXIgaT1CZS5ydWxlcyh7Y29udGV4dDpvLGV4Y2VwdDpufSk7aWYoIWl8fGlzT25seUZvY3VzUmVsZXZhbnQobykpe3JldHVybiBmYWxzZX1pZighbi5kaXNhYmxlZCYmaXNEaXNhYmxlZChvKSl7cmV0dXJuIGZhbHNlfWlmKCFuLm9ubHlUYWJiYWJsZSYmYShvKSl7cmV0dXJuIGZhbHNlfWlmKCFuLnZpc2libGUpe3ZhciBsPXtjb250ZXh0Om8sZXhjZXB0Ont9fTtpZihYZS5mb2N1c0luSGlkZGVuSWZyYW1lKXtsLmV4Y2VwdC5icm93c2luZ0NvbnRleHQ9dHJ1ZX1pZihYZS5mb2N1c09iamVjdFN2Z0hpZGRlbil7dmFyIHM9by5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKHM9PT1cIm9iamVjdFwiKXtsLmV4Y2VwdC5jc3NWaXNpYmlsaXR5PXRydWV9fWlmKCFXZS5ydWxlcyhsKSl7cmV0dXJuIGZhbHNlfX12YXIgdT1nZXRGcmFtZUVsZW1lbnQobyk7aWYodSl7dmFyIGM9dS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKGM9PT1cIm9iamVjdFwiJiYhWGUuZm9jdXNJblplcm9EaW1lbnNpb25PYmplY3Qpe2lmKCF1Lm9mZnNldFdpZHRofHwhdS5vZmZzZXRIZWlnaHQpe3JldHVybiBmYWxzZX19fXZhciBkPW8ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihkPT09XCJzdmdcIiYmWGUuZm9jdXNTdmdJbklmcmFtZSYmIXUmJm8uZ2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIik9PT1udWxsKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9aXNGb2N1c2FibGVSdWxlcy5leGNlcHQ9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e307dmFyIHQ9ZnVuY3Rpb24gaXNGb2N1c2FibGUodCl7cmV0dXJuIGlzRm9jdXNhYmxlUnVsZXMoe2NvbnRleHQ6dCxleGNlcHQ6ZX0pfTt0LnJ1bGVzPWlzRm9jdXNhYmxlUnVsZXM7cmV0dXJuIHR9O3ZhciBKZT1pc0ZvY3VzYWJsZVJ1bGVzLmV4Y2VwdCh7fSk7ZnVuY3Rpb24gY3JlYXRlRmlsdGVyKGUpe3ZhciB0PWZ1bmN0aW9uIGZpbHRlcih0KXtpZih0LnNoYWRvd1Jvb3Qpe3JldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFR9aWYoZSh0KSl7cmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVH1yZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfU0tJUH07dC5hY2NlcHROb2RlPXQ7cmV0dXJuIHR9dmFyIFFlPWNyZWF0ZUZpbHRlcihCZSk7ZnVuY3Rpb24gcXVlcnlGb2N1c2FibGVTdHJpY3QoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e30sdD1lLmNvbnRleHQscj1lLmluY2x1ZGVDb250ZXh0LG49ZS5pbmNsdWRlT25seVRhYmJhYmxlLGE9ZS5zdHJhdGVneTtpZighdCl7dD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnR9dmFyIG89SmUucnVsZXMuZXhjZXB0KHtvbmx5VGFiYmFibGU6bn0pO3ZhciBpPWdldERvY3VtZW50KHQpO3ZhciBsPWkuY3JlYXRlVHJlZVdhbGtlcih0LE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULGE9PT1cImFsbFwiP1FlOmNyZWF0ZUZpbHRlcihvKSxmYWxzZSk7dmFyIHM9W107d2hpbGUobC5uZXh0Tm9kZSgpKXtpZihsLmN1cnJlbnROb2RlLnNoYWRvd1Jvb3Qpe2lmKG8obC5jdXJyZW50Tm9kZSkpe3MucHVzaChsLmN1cnJlbnROb2RlKX1zPXMuY29uY2F0KHF1ZXJ5Rm9jdXNhYmxlU3RyaWN0KHtjb250ZXh0OmwuY3VycmVudE5vZGUuc2hhZG93Um9vdCxpbmNsdWRlT25seVRhYmJhYmxlOm4sc3RyYXRlZ3k6YX0pKX1lbHNle3MucHVzaChsLmN1cnJlbnROb2RlKX19aWYocil7aWYoYT09PVwiYWxsXCIpe2lmKEJlKHQpKXtzLnVuc2hpZnQodCl9fWVsc2UgaWYobyh0KSl7cy51bnNoaWZ0KHQpfX1yZXR1cm4gc312YXIgWWU9dm9pZCAwO3ZhciBldD12b2lkIDA7ZnVuY3Rpb24gc2VsZWN0b3IkMigpe2lmKCFZZSl7WWU9X3N1cHBvcnRzKCl9aWYodHlwZW9mIGV0PT09XCJzdHJpbmdcIil7cmV0dXJuIGV0fWV0PVwiXCIrKFllLmZvY3VzVGFibGU/XCJ0YWJsZSwgdGQsXCI6XCJcIikrKFllLmZvY3VzRmllbGRzZXQ/XCJmaWVsZHNldCxcIjpcIlwiKStcInN2ZyBhLFwiK1wiYVtocmVmXSxcIitcImFyZWFbaHJlZl0sXCIrXCJpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYnV0dG9uLFwiK1wiaWZyYW1lLCBvYmplY3QsIGVtYmVkLFwiK1wia2V5Z2VuLFwiKyhZZS5mb2N1c0F1ZGlvV2l0aG91dENvbnRyb2xzP1wiYXVkaW8sXCI6XCJhdWRpb1tjb250cm9sc10sXCIpKyhZZS5mb2N1c1ZpZGVvV2l0aG91dENvbnRyb2xzP1widmlkZW8sXCI6XCJ2aWRlb1tjb250cm9sc10sXCIpKyhZZS5mb2N1c1N1bW1hcnk/XCJzdW1tYXJ5LFwiOlwiXCIpK1wiW3RhYmluZGV4XSxcIitcIltjb250ZW50ZWRpdGFibGVdXCI7ZXQ9c2VsZWN0SW5TaGFkb3dzKGV0KTtyZXR1cm4gZXR9ZnVuY3Rpb24gcXVlcnlGb2N1c2FibGVRdWljaygpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fSx0PWUuY29udGV4dCxyPWUuaW5jbHVkZUNvbnRleHQsbj1lLmluY2x1ZGVPbmx5VGFiYmFibGU7dmFyIGE9c2VsZWN0b3IkMigpO3ZhciBvPXQucXVlcnlTZWxlY3RvckFsbChhKTt2YXIgaT1KZS5ydWxlcy5leGNlcHQoe29ubHlUYWJiYWJsZTpufSk7dmFyIGw9W10uZmlsdGVyLmNhbGwobyxpKTtpZihyJiZpKHQpKXtsLnVuc2hpZnQodCl9cmV0dXJuIGx9ZnVuY3Rpb24gcXVlcnlGb2N1c2FibGUoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e30sdD1lLmNvbnRleHQscj1lLmluY2x1ZGVDb250ZXh0LG49ZS5pbmNsdWRlT25seVRhYmJhYmxlLGE9ZS5zdHJhdGVneSxvPWE9PT11bmRlZmluZWQ/XCJxdWlja1wiOmE7dmFyIGk9Y29udGV4dFRvRWxlbWVudCh7bGFiZWw6XCJxdWVyeS9mb2N1c2FibGVcIixyZXNvbHZlRG9jdW1lbnQ6dHJ1ZSxkZWZhdWx0VG9Eb2N1bWVudDp0cnVlLGNvbnRleHQ6dH0pO3ZhciBsPXtjb250ZXh0OmksaW5jbHVkZUNvbnRleHQ6cixpbmNsdWRlT25seVRhYmJhYmxlOm4sc3RyYXRlZ3k6b307aWYobz09PVwicXVpY2tcIil7cmV0dXJuIHF1ZXJ5Rm9jdXNhYmxlUXVpY2sobCl9ZWxzZSBpZihvPT09XCJzdHJpY3RcInx8bz09PVwiYWxsXCIpe3JldHVybiBxdWVyeUZvY3VzYWJsZVN0cmljdChsKX10aHJvdyBuZXcgVHlwZUVycm9yKCdxdWVyeS9mb2N1c2FibGUgcmVxdWlyZXMgb3B0aW9uLnN0cmF0ZWd5IHRvIGJlIG9uZSBvZiBbXCJxdWlja1wiLCBcInN0cmljdFwiLCBcImFsbFwiXScpfXZhciB0dD12b2lkIDA7dmFyIHJ0PS9eKGZpZWxkc2V0fHRhYmxlfHRkfGJvZHkpJC87ZnVuY3Rpb24gaXNUYWJiYWJsZVJ1bGVzKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9LHQ9ZS5jb250ZXh0LHI9ZS5leGNlcHQsbj1yPT09dW5kZWZpbmVkP3tmbGV4Ym94OmZhbHNlLHNjcm9sbGFibGU6ZmFsc2Usc2hhZG93OmZhbHNlLHZpc2libGU6ZmFsc2Usb25seVRhYmJhYmxlOmZhbHNlfTpyO2lmKCF0dCl7dHQ9X3N1cHBvcnRzKCl9dmFyIGE9Y29udGV4dFRvRWxlbWVudCh7bGFiZWw6XCJpcy90YWJiYWJsZVwiLHJlc29sdmVEb2N1bWVudDp0cnVlLGNvbnRleHQ6dH0pO2lmKEEuaXMuQkxJTksmJkEuaXMuQU5EUk9JRCYmQS5tYWpvclZlcnNpb24+NDIpe3JldHVybiBmYWxzZX12YXIgbz1nZXRGcmFtZUVsZW1lbnQoYSk7aWYobyl7aWYoQS5pcy5XRUJLSVQmJkEuaXMuSU9TKXtyZXR1cm4gZmFsc2V9aWYodGFiaW5kZXhWYWx1ZShvKTwwKXtyZXR1cm4gZmFsc2V9aWYoIW4udmlzaWJsZSYmKEEuaXMuQkxJTkt8fEEuaXMuV0VCS0lUKSYmIVdlKG8pKXtyZXR1cm4gZmFsc2V9dmFyIGk9by5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKGk9PT1cIm9iamVjdFwiKXt2YXIgbD1BLm5hbWU9PT1cIkNocm9tZVwiJiZBLm1ham9yVmVyc2lvbj49NTR8fEEubmFtZT09PVwiT3BlcmFcIiYmQS5tYWpvclZlcnNpb24+PTQxO2lmKEEuaXMuV0VCS0lUfHxBLmlzLkJMSU5LJiYhbCl7cmV0dXJuIGZhbHNlfX19dmFyIHM9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3ZhciB1PXRhYmluZGV4VmFsdWUoYSk7dmFyIGM9dT09PW51bGw/bnVsbDp1Pj0wO2lmKEEuaXMuRURHRSYmQS5tYWpvclZlcnNpb24+PTE0JiZvJiZhLm93bmVyU1ZHRWxlbWVudCYmdTwwKXtyZXR1cm4gdHJ1ZX12YXIgZD1jIT09ZmFsc2U7dmFyIGY9dSE9PW51bGwmJnU+PTA7aWYoYS5oYXNBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIikpe3JldHVybiBkfWlmKHJ0LnRlc3QocykmJmMhPT10cnVlKXtyZXR1cm4gZmFsc2V9aWYoQS5pcy5XRUJLSVQmJkEuaXMuSU9TKXt2YXIgbT1zPT09XCJpbnB1dFwiJiZhLnR5cGU9PT1cInRleHRcInx8YS50eXBlPT09XCJwYXNzd29yZFwifHxzPT09XCJzZWxlY3RcInx8cz09PVwidGV4dGFyZWFcInx8YS5oYXNBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIik7aWYoIW0pe3ZhciBwPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCk7bT1pc1VzZXJNb2RpZnlXcml0YWJsZShwKX1pZighbSl7cmV0dXJuIGZhbHNlfX1pZihzPT09XCJ1c2VcIiYmdSE9PW51bGwpe2lmKEEuaXMuQkxJTkt8fEEuaXMuV0VCS0lUJiZBLm1ham9yVmVyc2lvbj09PTkpe3JldHVybiB0cnVlfX1pZihlbGVtZW50TWF0Y2hlcyhhLFwic3ZnIGFcIikmJmEuaGFzQXR0cmlidXRlKFwieGxpbms6aHJlZlwiKSl7aWYoZCl7cmV0dXJuIHRydWV9aWYoYS5mb2N1cyYmIXR0LmZvY3VzU3ZnTmVnYXRpdmVUYWJpbmRleEF0dHJpYnV0ZSl7cmV0dXJuIHRydWV9fWlmKHM9PT1cInN2Z1wiJiZ0dC5mb2N1c1N2Z0luSWZyYW1lJiZkKXtyZXR1cm4gdHJ1ZX1pZihBLmlzLlRSSURFTlR8fEEuaXMuRURHRSl7aWYocz09PVwic3ZnXCIpe2lmKHR0LmZvY3VzU3ZnKXtyZXR1cm4gdHJ1ZX1yZXR1cm4gYS5oYXNBdHRyaWJ1dGUoXCJmb2N1c2FibGVcIil8fGZ9aWYoYS5vd25lclNWR0VsZW1lbnQpe2lmKHR0LmZvY3VzU3ZnVGFiaW5kZXhBdHRyaWJ1dGUmJmYpe3JldHVybiB0cnVlfXJldHVybiBhLmhhc0F0dHJpYnV0ZShcImZvY3VzYWJsZVwiKX19aWYoYS50YWJJbmRleD09PXVuZGVmaW5lZCl7cmV0dXJuIEJvb2xlYW4obi5vbmx5VGFiYmFibGUpfWlmKHM9PT1cImF1ZGlvXCIpe2lmKCFhLmhhc0F0dHJpYnV0ZShcImNvbnRyb2xzXCIpKXtyZXR1cm4gZmFsc2V9ZWxzZSBpZihBLmlzLkJMSU5LKXtyZXR1cm4gdHJ1ZX19aWYocz09PVwidmlkZW9cIil7aWYoIWEuaGFzQXR0cmlidXRlKFwiY29udHJvbHNcIikpe2lmKEEuaXMuVFJJREVOVHx8QS5pcy5FREdFKXtyZXR1cm4gZmFsc2V9fWVsc2UgaWYoQS5pcy5CTElOS3x8QS5pcy5HRUNLTyl7cmV0dXJuIHRydWV9fWlmKHM9PT1cIm9iamVjdFwiKXtpZihBLmlzLkJMSU5LfHxBLmlzLldFQktJVCl7cmV0dXJuIGZhbHNlfX1pZihzPT09XCJpZnJhbWVcIil7cmV0dXJuIGZhbHNlfWlmKCFuLnNjcm9sbGFibGUmJkEuaXMuR0VDS08pe3ZhciBiPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCk7aWYoaGFzQ3NzT3ZlcmZsb3dTY3JvbGwoYikpe3JldHVybiBkfX1pZihBLmlzLlRSSURFTlR8fEEuaXMuRURHRSl7aWYocz09PVwiYXJlYVwiKXt2YXIgdj1nZXRJbWFnZU9mQXJlYShhKTtpZih2JiZ0YWJpbmRleFZhbHVlKHYpPDApe3JldHVybiBmYWxzZX19dmFyIGc9d2luZG93LmdldENvbXB1dGVkU3R5bGUoYSxudWxsKTtpZihpc1VzZXJNb2RpZnlXcml0YWJsZShnKSl7cmV0dXJuIGEudGFiSW5kZXg+PTB9aWYoIW4uZmxleGJveCYmaGFzQ3NzRGlzcGxheUZsZXgoZykpe2lmKHUhPT1udWxsKXtyZXR1cm4gZn1yZXR1cm4gbnQoYSkmJmF0KGEpfWlmKGlzU2Nyb2xsYWJsZUNvbnRhaW5lcihhLHMpKXtyZXR1cm4gZmFsc2V9dmFyIGg9YS5wYXJlbnRFbGVtZW50O2lmKGgpe3ZhciB4PWgubm9kZU5hbWUudG9Mb3dlckNhc2UoKTt2YXIgeT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShoLG51bGwpO2lmKGlzU2Nyb2xsYWJsZUNvbnRhaW5lcihoLHMseCx5KSl7cmV0dXJuIGZhbHNlfWlmKGhhc0Nzc0Rpc3BsYXlGbGV4KHkpKXtyZXR1cm4gZn19fXJldHVybiBhLnRhYkluZGV4Pj0wfWlzVGFiYmFibGVSdWxlcy5leGNlcHQ9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e307dmFyIHQ9ZnVuY3Rpb24gaXNUYWJiYWJsZSh0KXtyZXR1cm4gaXNUYWJiYWJsZVJ1bGVzKHtjb250ZXh0OnQsZXhjZXB0OmV9KX07dC5ydWxlcz1pc1RhYmJhYmxlUnVsZXM7cmV0dXJuIHR9O3ZhciBudD1CZS5ydWxlcy5leGNlcHQoe2ZsZXhib3g6dHJ1ZX0pO3ZhciBhdD1pc1RhYmJhYmxlUnVsZXMuZXhjZXB0KHtmbGV4Ym94OnRydWV9KTt2YXIgb3Q9aXNUYWJiYWJsZVJ1bGVzLmV4Y2VwdCh7fSk7ZnVuY3Rpb24gcXVlcnlUYWJiYWJsZSgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fSx0PWUuY29udGV4dCxyPWUuaW5jbHVkZUNvbnRleHQsbj1lLmluY2x1ZGVPbmx5VGFiYmFibGUsYT1lLnN0cmF0ZWd5O3ZhciBvPW90LnJ1bGVzLmV4Y2VwdCh7b25seVRhYmJhYmxlOm59KTtyZXR1cm4gcXVlcnlGb2N1c2FibGUoe2NvbnRleHQ6dCxpbmNsdWRlQ29udGV4dDpyLGluY2x1ZGVPbmx5VGFiYmFibGU6bixzdHJhdGVneTphfSkuZmlsdGVyKG8pfWZ1bmN0aW9uIGNvbXBhcmVEb21Qb3NpdGlvbihlLHQpe3JldHVybiBlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpJk5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HPy0xOjF9ZnVuY3Rpb24gc29ydERvbU9yZGVyKGUpe3JldHVybiBlLnNvcnQoY29tcGFyZURvbVBvc2l0aW9uKX1mdW5jdGlvbiBnZXRGaXJzdFN1Y2Nlc3Nvck9mZnNldChlLHQpe3JldHVybiBmaW5kSW5kZXgoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZSkmTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkd9KSl9ZnVuY3Rpb24gZmluZEluc2VydGlvbk9mZnNldHMoZSx0LHIpe3ZhciBuPVtdO3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGE9dHJ1ZTt2YXIgbz1lLmluZGV4T2YodCk7aWYobz09PS0xKXtvPWdldEZpcnN0U3VjY2Vzc29yT2Zmc2V0KGUsdCk7YT1mYWxzZX1pZihvPT09LTEpe289ZS5sZW5ndGh9dmFyIGk9bm9kZUFycmF5KHI/cih0KTp0KTtpZighaS5sZW5ndGgpe3JldHVybn1uLnB1c2goe29mZnNldDpvLHJlcGxhY2U6YSxlbGVtZW50czppfSl9KSk7cmV0dXJuIG59ZnVuY3Rpb24gaW5zZXJ0RWxlbWVudHNBdE9mZnNldHMoZSx0KXt2YXIgcj0wO3Quc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5vZmZzZXQtdC5vZmZzZXR9KSk7dC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj10LnJlcGxhY2U/MTowO3ZhciBhPVt0Lm9mZnNldCtyLG5dLmNvbmNhdCh0LmVsZW1lbnRzKTtlLnNwbGljZS5hcHBseShlLGEpO3IrPXQuZWxlbWVudHMubGVuZ3RoLW59KSl9ZnVuY3Rpb24gbWVyZ2VJbkRvbU9yZGVyKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9LHQ9ZS5saXN0LHI9ZS5lbGVtZW50cyxuPWUucmVzb2x2ZUVsZW1lbnQ7dmFyIGE9dC5zbGljZSgwKTt2YXIgbz1ub2RlQXJyYXkocikuc2xpY2UoMCk7c29ydERvbU9yZGVyKG8pO3ZhciBpPWZpbmRJbnNlcnRpb25PZmZzZXRzKGEsbyxuKTtpbnNlcnRFbGVtZW50c0F0T2Zmc2V0cyhhLGkpO3JldHVybiBhfXZhciBpdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHxmYWxzZTtuLmNvbmZpZ3VyYWJsZT10cnVlO2lmKFwidmFsdWVcImluIG4pbi53cml0YWJsZT10cnVlO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4ua2V5LG4pfX1yZXR1cm4gZnVuY3Rpb24oZSx0LHIpe2lmKHQpZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSx0KTtpZihyKWRlZmluZVByb3BlcnRpZXMoZSxyKTtyZXR1cm4gZX19KCk7ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9fXZhciBsdD1mdW5jdGlvbigpe2Z1bmN0aW9uIE1hcHMoZSl7X2NsYXNzQ2FsbENoZWNrKHRoaXMsTWFwcyk7dGhpcy5fZG9jdW1lbnQ9Z2V0RG9jdW1lbnQoZSk7dGhpcy5tYXBzPXt9fWl0KE1hcHMsW3trZXk6XCJnZXRBcmVhc0ZvclwiLHZhbHVlOmZ1bmN0aW9uIGdldEFyZWFzRm9yKGUpe2lmKCF0aGlzLm1hcHNbZV0pe3RoaXMuYWRkTWFwQnlOYW1lKGUpfXJldHVybiB0aGlzLm1hcHNbZV19fSx7a2V5OlwiYWRkTWFwQnlOYW1lXCIsdmFsdWU6ZnVuY3Rpb24gYWRkTWFwQnlOYW1lKGUpe3ZhciB0PWdldE1hcEJ5TmFtZShlLHRoaXMuX2RvY3VtZW50KTtpZighdCl7cmV0dXJufXRoaXMubWFwc1t0Lm5hbWVdPXF1ZXJ5VGFiYmFibGUoe2NvbnRleHQ6dH0pfX0se2tleTpcImV4dHJhY3RBcmVhc0Zyb21MaXN0XCIsdmFsdWU6ZnVuY3Rpb24gZXh0cmFjdEFyZWFzRnJvbUxpc3QoZSl7cmV0dXJuIGUuZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYodCE9PVwiYXJlYVwiKXtyZXR1cm4gdHJ1ZX12YXIgcj1lLnBhcmVudE5vZGU7aWYoIXRoaXMubWFwc1tyLm5hbWVdKXt0aGlzLm1hcHNbci5uYW1lXT1bXX10aGlzLm1hcHNbci5uYW1lXS5wdXNoKGUpO3JldHVybiBmYWxzZX0pLHRoaXMpfX1dKTtyZXR1cm4gTWFwc30oKTtmdW5jdGlvbiBzb3J0QXJlYShlLHQpe3ZhciByPXQucXVlcnlTZWxlY3RvckFsbChcImltZ1t1c2VtYXBdXCIpO3ZhciBuPW5ldyBsdCh0KTt2YXIgYT1uLmV4dHJhY3RBcmVhc0Zyb21MaXN0KGUpO2lmKCFyLmxlbmd0aCl7cmV0dXJuIGF9cmV0dXJuIG1lcmdlSW5Eb21PcmRlcih7bGlzdDphLGVsZW1lbnRzOnIscmVzb2x2ZUVsZW1lbnQ6ZnVuY3Rpb24gcmVzb2x2ZUVsZW1lbnQoZSl7dmFyIHQ9ZS5nZXRBdHRyaWJ1dGUoXCJ1c2VtYXBcIikuc2xpY2UoMSk7cmV0dXJuIG4uZ2V0QXJlYXNGb3IodCl9fSl9dmFyIHN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fGZhbHNlO24uY29uZmlndXJhYmxlPXRydWU7aWYoXCJ2YWx1ZVwiaW4gbiluLndyaXRhYmxlPXRydWU7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fXJldHVybiBmdW5jdGlvbihlLHQscil7aWYodClkZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLHQpO2lmKHIpZGVmaW5lUHJvcGVydGllcyhlLHIpO3JldHVybiBlfX0oKTtmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2skMShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfX12YXIgdXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBTaGFkb3dzKGUsdCl7X2NsYXNzQ2FsbENoZWNrJDEodGhpcyxTaGFkb3dzKTt0aGlzLmNvbnRleHQ9ZTt0aGlzLnNvcnRFbGVtZW50cz10O3RoaXMuaG9zdENvdW50ZXI9MTt0aGlzLmluSG9zdD17fTt0aGlzLmluRG9jdW1lbnQ9W107dGhpcy5ob3N0cz17fTt0aGlzLmVsZW1lbnRzPXt9fXN0KFNoYWRvd3MsW3trZXk6XCJfcmVnaXN0ZXJIb3N0XCIsdmFsdWU6ZnVuY3Rpb24gX3JlZ2lzdGVySG9zdChlKXtpZihlLl9zb3J0aW5nSWQpe3JldHVybn1lLl9zb3J0aW5nSWQ9XCJzaGFkb3ctXCIrdGhpcy5ob3N0Q291bnRlcisrO3RoaXMuaG9zdHNbZS5fc29ydGluZ0lkXT1lO3ZhciB0PWdldFNoYWRvd0hvc3Qoe2NvbnRleHQ6ZX0pO2lmKHQpe3RoaXMuX3JlZ2lzdGVySG9zdCh0KTt0aGlzLl9yZWdpc3Rlckhvc3RQYXJlbnQoZSx0KX1lbHNle3RoaXMuaW5Eb2N1bWVudC5wdXNoKGUpfX19LHtrZXk6XCJfcmVnaXN0ZXJIb3N0UGFyZW50XCIsdmFsdWU6ZnVuY3Rpb24gX3JlZ2lzdGVySG9zdFBhcmVudChlLHQpe2lmKCF0aGlzLmluSG9zdFt0Ll9zb3J0aW5nSWRdKXt0aGlzLmluSG9zdFt0Ll9zb3J0aW5nSWRdPVtdfXRoaXMuaW5Ib3N0W3QuX3NvcnRpbmdJZF0ucHVzaChlKX19LHtrZXk6XCJfcmVnaXN0ZXJFbGVtZW50XCIsdmFsdWU6ZnVuY3Rpb24gX3JlZ2lzdGVyRWxlbWVudChlLHQpe2lmKCF0aGlzLmVsZW1lbnRzW3QuX3NvcnRpbmdJZF0pe3RoaXMuZWxlbWVudHNbdC5fc29ydGluZ0lkXT1bXX10aGlzLmVsZW1lbnRzW3QuX3NvcnRpbmdJZF0ucHVzaChlKX19LHtrZXk6XCJleHRyYWN0RWxlbWVudHNcIix2YWx1ZTpmdW5jdGlvbiBleHRyYWN0RWxlbWVudHMoZSl7cmV0dXJuIGUuZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgdD1nZXRTaGFkb3dIb3N0KHtjb250ZXh0OmV9KTtpZighdCl7cmV0dXJuIHRydWV9dGhpcy5fcmVnaXN0ZXJIb3N0KHQpO3RoaXMuX3JlZ2lzdGVyRWxlbWVudChlLHQpO3JldHVybiBmYWxzZX0pLHRoaXMpfX0se2tleTpcInNvcnRcIix2YWx1ZTpmdW5jdGlvbiBzb3J0KGUpe3ZhciB0PXRoaXMuX2luamVjdEhvc3RzKGUpO3Q9dGhpcy5fcmVwbGFjZUhvc3RzKHQpO3RoaXMuX2NsZWFudXAoKTtyZXR1cm4gdH19LHtrZXk6XCJfaW5qZWN0SG9zdHNcIix2YWx1ZTpmdW5jdGlvbiBfaW5qZWN0SG9zdHMoZSl7T2JqZWN0LmtleXModGhpcy5ob3N0cykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5lbGVtZW50c1tlXTt2YXIgcj10aGlzLmluSG9zdFtlXTt2YXIgbj10aGlzLmhvc3RzW2VdLnNoYWRvd1Jvb3Q7dGhpcy5lbGVtZW50c1tlXT10aGlzLl9tZXJnZSh0LHIsbil9KSx0aGlzKTtyZXR1cm4gdGhpcy5fbWVyZ2UoZSx0aGlzLmluRG9jdW1lbnQsdGhpcy5jb250ZXh0KX19LHtrZXk6XCJfbWVyZ2VcIix2YWx1ZTpmdW5jdGlvbiBfbWVyZ2UoZSx0LHIpe3ZhciBuPW1lcmdlSW5Eb21PcmRlcih7bGlzdDplLGVsZW1lbnRzOnR9KTtyZXR1cm4gdGhpcy5zb3J0RWxlbWVudHMobixyKX19LHtrZXk6XCJfcmVwbGFjZUhvc3RzXCIsdmFsdWU6ZnVuY3Rpb24gX3JlcGxhY2VIb3N0cyhlKXtyZXR1cm4gbWVyZ2VJbkRvbU9yZGVyKHtsaXN0OmUsZWxlbWVudHM6dGhpcy5pbkRvY3VtZW50LHJlc29sdmVFbGVtZW50OnRoaXMuX3Jlc29sdmVIb3N0RWxlbWVudC5iaW5kKHRoaXMpfSl9fSx7a2V5OlwiX3Jlc29sdmVIb3N0RWxlbWVudFwiLHZhbHVlOmZ1bmN0aW9uIF9yZXNvbHZlSG9zdEVsZW1lbnQoZSl7dmFyIHQ9bWVyZ2VJbkRvbU9yZGVyKHtsaXN0OnRoaXMuZWxlbWVudHNbZS5fc29ydGluZ0lkXSxlbGVtZW50czp0aGlzLmluSG9zdFtlLl9zb3J0aW5nSWRdLHJlc29sdmVFbGVtZW50OnRoaXMuX3Jlc29sdmVIb3N0RWxlbWVudC5iaW5kKHRoaXMpfSk7dmFyIHI9dGFiaW5kZXhWYWx1ZShlKTtpZihyIT09bnVsbCYmcj4tMSl7cmV0dXJuW2VdLmNvbmNhdCh0KX1yZXR1cm4gdH19LHtrZXk6XCJfY2xlYW51cFwiLHZhbHVlOmZ1bmN0aW9uIF9jbGVhbnVwKCl7T2JqZWN0LmtleXModGhpcy5ob3N0cykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZGVsZXRlIHRoaXMuaG9zdHNbZV0uX3NvcnRpbmdJZH0pLHRoaXMpfX1dKTtyZXR1cm4gU2hhZG93c30oKTtmdW5jdGlvbiBzb3J0U2hhZG93ZWQoZSx0LHIpe3ZhciBuPW5ldyB1dCh0LHIpO3ZhciBhPW4uZXh0cmFjdEVsZW1lbnRzKGUpO2lmKGEubGVuZ3RoPT09ZS5sZW5ndGgpe3JldHVybiByKGUpfXJldHVybiBuLnNvcnQoYSl9ZnVuY3Rpb24gc29ydFRhYmluZGV4KGUpe3ZhciB0PXt9O3ZhciByPVtdO3ZhciBuPWUuZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgbj1lLnRhYkluZGV4O2lmKG49PT11bmRlZmluZWQpe249dGFiaW5kZXhWYWx1ZShlKX1pZihuPD0wfHxuPT09bnVsbHx8bj09PXVuZGVmaW5lZCl7cmV0dXJuIHRydWV9aWYoIXRbbl0pe3Rbbl09W107ci5wdXNoKG4pfXRbbl0ucHVzaChlKTtyZXR1cm4gZmFsc2V9KSk7dmFyIGE9ci5zb3J0KCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pKS5yZWR1Y2VSaWdodCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5jb25jYXQoZSl9KSxuKTtyZXR1cm4gYX12YXIgY3Q9dm9pZCAwO2Z1bmN0aW9uIG1vdmVDb250ZXh0VG9CZWdpbm5pbmcoZSx0KXt2YXIgcj1lLmluZGV4T2YodCk7aWYocj4wKXt2YXIgbj1lLnNwbGljZShyLDEpO3JldHVybiBuLmNvbmNhdChlKX1yZXR1cm4gZX1mdW5jdGlvbiBzb3J0RWxlbWVudHMoZSx0KXtpZihjdC50YWJzZXF1ZW5jZUFyZWFBdEltZ1Bvc2l0aW9uKXtlPXNvcnRBcmVhKGUsdCl9ZT1zb3J0VGFiaW5kZXgoZSk7cmV0dXJuIGV9ZnVuY3Rpb24gcXVlcnlUYWJzZXF1ZW5jZSgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fSx0PWUuY29udGV4dCxyPWUuaW5jbHVkZUNvbnRleHQsbj1lLmluY2x1ZGVPbmx5VGFiYmFibGUsYT1lLnN0cmF0ZWd5O2lmKCFjdCl7Y3Q9X3N1cHBvcnRzKCl9dmFyIG89bm9kZUFycmF5KHQpWzBdfHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dmFyIGk9cXVlcnlUYWJiYWJsZSh7Y29udGV4dDpvLGluY2x1ZGVDb250ZXh0OnIsaW5jbHVkZU9ubHlUYWJiYWJsZTpuLHN0cmF0ZWd5OmF9KTtpZihkb2N1bWVudC5ib2R5LmNyZWF0ZVNoYWRvd1Jvb3QmJkEuaXMuQkxJTkspe2k9c29ydFNoYWRvd2VkKGksbyxzb3J0RWxlbWVudHMpfWVsc2V7aT1zb3J0RWxlbWVudHMoaSxvKX1pZihyKXtpPW1vdmVDb250ZXh0VG9CZWdpbm5pbmcoaSxvKX1yZXR1cm4gaX12YXIgZHQ9e3RhYjo5LGxlZnQ6MzcsdXA6MzgscmlnaHQ6MzksZG93bjo0MCxwYWdlVXA6MzMsXCJwYWdlLXVwXCI6MzMscGFnZURvd246MzQsXCJwYWdlLWRvd25cIjozNCxlbmQ6MzUsaG9tZTozNixlbnRlcjoxMyxlc2NhcGU6Mjcsc3BhY2U6MzIsc2hpZnQ6MTYsY2Fwc0xvY2s6MjAsXCJjYXBzLWxvY2tcIjoyMCxjdHJsOjE3LGFsdDoxOCxtZXRhOjkxLHBhdXNlOjE5LGluc2VydDo0NSxkZWxldGU6NDYsYmFja3NwYWNlOjgsX2FsaWFzOns5MTpbOTIsOTMsMjI0XX19O2Zvcih2YXIgZnQ9MTtmdDwyNjtmdCsrKXtkdFtcImZcIitmdF09ZnQrMTExfWZvcih2YXIgbXQ9MDttdDwxMDttdCsrKXt2YXIgcHQ9bXQrNDg7dmFyIGJ0PW10Kzk2O2R0W210XT1wdDtkdFtcIm51bS1cIittdF09YnQ7ZHQuX2FsaWFzW3B0XT1bYnRdfWZvcih2YXIgdnQ9MDt2dDwyNjt2dCsrKXt2YXIgZ3Q9dnQrNjU7dmFyIGh0PVN0cmluZy5mcm9tQ2hhckNvZGUoZ3QpLnRvTG93ZXJDYXNlKCk7ZHRbaHRdPWd0fXZhciB4dD17YWx0OlwiYWx0S2V5XCIsY3RybDpcImN0cmxLZXlcIixtZXRhOlwibWV0YUtleVwiLHNoaWZ0Olwic2hpZnRLZXlcIn07dmFyIHl0PU9iamVjdC5rZXlzKHh0KS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB4dFtlXX0pKTtmdW5jdGlvbiBjcmVhdGVFeHBlY3RlZE1vZGlmaWVycyhlKXt2YXIgdD1lP251bGw6ZmFsc2U7cmV0dXJue2FsdEtleTp0LGN0cmxLZXk6dCxtZXRhS2V5OnQsc2hpZnRLZXk6dH19ZnVuY3Rpb24gcmVzb2x2ZU1vZGlmaWVycyhlKXt2YXIgdD1lLmluZGV4T2YoXCIqXCIpIT09LTE7dmFyIHI9Y3JlYXRlRXhwZWN0ZWRNb2RpZmllcnModCk7ZS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZihlPT09XCIqXCIpe3JldHVybn12YXIgdD10cnVlO3ZhciBuPWUuc2xpY2UoMCwxKTtpZihuPT09XCI/XCIpe3Q9bnVsbH1lbHNlIGlmKG49PT1cIiFcIil7dD1mYWxzZX1pZih0IT09dHJ1ZSl7ZT1lLnNsaWNlKDEpfXZhciBhPXh0W2VdO2lmKCFhKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIG1vZGlmaWVyIFwiJytlKydcIicpfXJbYV09dH0pKTtyZXR1cm4gcn1mdW5jdGlvbiByZXNvbHZlS2V5KGUpe3ZhciB0PWR0W2VdfHxwYXJzZUludChlLDEwKTtpZighdHx8dHlwZW9mIHQhPT1cIm51bWJlclwifHxpc05hTih0KSl7dGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBrZXkgXCInK2UrJ1wiJyl9cmV0dXJuW3RdLmNvbmNhdChkdC5fYWxpYXNbdF18fFtdKX1mdW5jdGlvbiBtYXRjaE1vZGlmaWVycyhlLHQpe3JldHVybiF5dC5zb21lKChmdW5jdGlvbihyKXtyZXR1cm4gdHlwZW9mIGVbcl09PT1cImJvb2xlYW5cIiYmQm9vbGVhbih0W3JdKSE9PWVbcl19KSl9ZnVuY3Rpb24ga2V5QmluZGluZyhlKXtyZXR1cm4gZS5zcGxpdCgvXFxzKy8pLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zcGxpdChcIitcIik7dmFyIHI9cmVzb2x2ZU1vZGlmaWVycyh0LnNsaWNlKDAsLTEpKTt2YXIgbj1yZXNvbHZlS2V5KHQuc2xpY2UoLTEpKTtyZXR1cm57a2V5Q29kZXM6bixtb2RpZmllcnM6cixtYXRjaE1vZGlmaWVyczptYXRjaE1vZGlmaWVycy5iaW5kKG51bGwscil9fSkpfWZ1bmN0aW9uIGdldFBhcmVudENvbXBhcmF0b3IoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e30sdD1lLnBhcmVudCxyPWUuZWxlbWVudCxuPWUuaW5jbHVkZVNlbGY7aWYodCl7cmV0dXJuIGZ1bmN0aW9uIGlzQ2hpbGRPZihlKXtyZXR1cm4gQm9vbGVhbihuJiZlPT09dHx8dC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKSZOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSl9fWVsc2UgaWYocil7cmV0dXJuIGZ1bmN0aW9uIGlzUGFyZW50T2YoZSl7cmV0dXJuIEJvb2xlYW4obiYmcj09PWV8fGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24ocikmTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpfX10aHJvdyBuZXcgVHlwZUVycm9yKFwidXRpbC9jb21wYXJlLXBvc2l0aW9uI2dldFBhcmVudENvbXBhcmF0b3IgcmVxdWlyZWQgZWl0aGVyIG9wdGlvbnMucGFyZW50IG9yIG9wdGlvbnMuZWxlbWVudFwiKX1mdW5jdGlvbiB3aGVuS2V5KCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9O3ZhciB0PXt9O3ZhciByPW5vZGVBcnJheShlLmNvbnRleHQpWzBdfHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7ZGVsZXRlIGUuY29udGV4dDt2YXIgbj1ub2RlQXJyYXkoZS5maWx0ZXIpO2RlbGV0ZSBlLmZpbHRlcjt2YXIgYT1PYmplY3Qua2V5cyhlKTtpZighYS5sZW5ndGgpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJ3aGVuL2tleSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgb3B0aW9uIGtleVwiKX12YXIgbz1mdW5jdGlvbiByZWdpc3RlckJpbmRpbmcoZSl7ZS5rZXlDb2Rlcy5mb3JFYWNoKChmdW5jdGlvbihyKXtpZighdFtyXSl7dFtyXT1bXX10W3JdLnB1c2goZSl9KSl9O2EuZm9yRWFjaCgoZnVuY3Rpb24odCl7aWYodHlwZW9mIGVbdF0hPT1cImZ1bmN0aW9uXCIpe3Rocm93IG5ldyBUeXBlRXJyb3IoJ3doZW4va2V5IHJlcXVpcmVzIG9wdGlvbltcIicrdCsnXCJdIHRvIGJlIGEgZnVuY3Rpb24nKX12YXIgcj1mdW5jdGlvbiBhZGRDYWxsYmFjayhyKXtyLmNhbGxiYWNrPWVbdF07cmV0dXJuIHJ9O2tleUJpbmRpbmcodCkubWFwKHIpLmZvckVhY2gobyl9KSk7dmFyIGk9ZnVuY3Rpb24gaGFuZGxlS2V5RG93bihlKXtpZihlLmRlZmF1bHRQcmV2ZW50ZWQpe3JldHVybn1pZihuLmxlbmd0aCl7dmFyIGE9Z2V0UGFyZW50Q29tcGFyYXRvcih7ZWxlbWVudDplLnRhcmdldCxpbmNsdWRlU2VsZjp0cnVlfSk7aWYobi5zb21lKGEpKXtyZXR1cm59fXZhciBvPWUua2V5Q29kZXx8ZS53aGljaDtpZighdFtvXSl7cmV0dXJufXRbb10uZm9yRWFjaCgoZnVuY3Rpb24odCl7aWYoIXQubWF0Y2hNb2RpZmllcnMoZSkpe3JldHVybn10LmNhbGxiYWNrLmNhbGwocixlLGwpfSkpfTtyLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsaSxmYWxzZSk7dmFyIGw9ZnVuY3Rpb24gZGlzZW5nYWdlKCl7ci5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLGksZmFsc2UpfTtyZXR1cm57ZGlzZW5nYWdlOmx9fWZ1bmN0aW9uIG1haW50YWluX3RhYl9mb2N1cyh7Y29udGV4dDplfT17fSl7aWYoIWUpe2U9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fXF1ZXJ5VGFic2VxdWVuY2UoKTtyZXR1cm4gd2hlbktleSh7XCI/YWx0Kz9zaGlmdCt0YWJcIjpmdW5jdGlvbiBhbHRTaGlmdFRhYih0KXt0LnByZXZlbnREZWZhdWx0KCk7dmFyIHI9cXVlcnlUYWJzZXF1ZW5jZSh7Y29udGV4dDplfSk7dmFyIG49dC5zaGlmdEtleTt2YXIgYT1yWzBdO3ZhciBvPXJbci5sZW5ndGgtMV07dmFyIGk9bj9hOm87dmFyIGw9bj9vOmE7aWYoaXNBY3RpdmVFbGVtZW50KGkpKXtsLmZvY3VzKCk7cmV0dXJufXZhciBzPXZvaWQgMDt2YXIgdT1yLnNvbWUoKGZ1bmN0aW9uKGUsdCl7aWYoIWlzQWN0aXZlRWxlbWVudChlKSl7cmV0dXJuIGZhbHNlfXM9dDtyZXR1cm4gdHJ1ZX0pKTtpZighdSl7YS5mb2N1cygpO3JldHVybn12YXIgYz1uPy0xOjE7cltzK2NdLmZvY3VzKCl9fSl9bGV0IEV0O2xldCB3dDtsZXQga3Q9MDtmdW5jdGlvbiBsb2NrKCl7c2V0VGltZW91dCgoKCk9PntpZihrdCsrPjApe3JldHVybn1jb25zdCBlPXdpbmRvdy5pbm5lcldpZHRoLWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtpZihlPjApe0V0PWRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0O2RvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0PWAke2V9cHhgfXd0PWRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c7ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz1cImhpZGRlblwifSkpfWZ1bmN0aW9uIHVubG9jaygpe3NldFRpbWVvdXQoKCgpPT57aWYoa3Q9PT0wfHwtLWt0IT09MCl7cmV0dXJufWlmKEV0IT09dW5kZWZpbmVkKXtkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodD1FdDtFdD11bmRlZmluZWR9aWYod3QhPT11bmRlZmluZWQpe2RvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c9d3Q7d3Q9dW5kZWZpbmVkfX0pKX1jb25zdCBTdD1mdW5jdGlvbiBPdmVybGF5KHtjbGFzc05hbWU6ZSxjaGlsZHJlbjp0LGZpeGVkOnJ9KXtwLnVzZUVmZmVjdCgoKCk9Pntsb2NrKCk7cmV0dXJuKCk9Pnt1bmxvY2soKX19KSxbXSk7Y29uc3RbbixhXT1wLnVzZVN0YXRlKG51bGwpO2NvbnN0IG89cC51c2VDYWxsYmFjaygoZT0+e2EoZSl9KSxbXSk7cC51c2VFZmZlY3QoKCgpPT57aWYobj09bnVsbCl7cmV0dXJufWNvbnN0IGU9bWFpbnRhaW5fdGFiX2ZvY3VzKHtjb250ZXh0Om59KTtyZXR1cm4oKT0+e2UuZGlzZW5nYWdlKCl9fSksW25dKTtyZXR1cm4gcC5jcmVhdGVFbGVtZW50KFwiZGl2XCIse1wiZGF0YS1uZXh0anMtZGlhbG9nLW92ZXJsYXlcIjp0cnVlLGNsYXNzTmFtZTplLHJlZjpvfSxwLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7XCJkYXRhLW5leHRqcy1kaWFsb2ctYmFja2Ryb3BcIjp0cnVlLFwiZGF0YS1uZXh0anMtZGlhbG9nLWJhY2tkcm9wLWZpeGVkXCI6cj90cnVlOnVuZGVmaW5lZH0pLHQpfTt2YXIgX3Q9cmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9hbnNlclwiKTt2YXIgVHQ9X19uY2N3cGNrX3JlcXVpcmVfXy5uKF90KTtjb25zdCBDdD1mdW5jdGlvbiBUZXJtaW5hbCh7Y29udGVudDplfSl7Y29uc3QgdD1wLnVzZU1lbW8oKCgpPT5UdCgpLmFuc2lUb0pzb24oZSx7anNvbjp0cnVlLHVzZV9jbGFzc2VzOnRydWUscmVtb3ZlX2VtcHR5OnRydWV9KSksW2VdKTtyZXR1cm4gcC5jcmVhdGVFbGVtZW50KFwiZGl2XCIse1wiZGF0YS1uZXh0anMtdGVybWluYWxcIjp0cnVlfSxwLmNyZWF0ZUVsZW1lbnQoXCJwcmVcIixudWxsLHQubWFwKCgoZSx0KT0+cC5jcmVhdGVFbGVtZW50KFwic3BhblwiLHtrZXk6YHRlcm1pbmFsLWVudHJ5LSR7dH1gLHN0eWxlOntjb2xvcjplLmZnP2B2YXIoLS1jb2xvci0ke2UuZmd9KWA6dW5kZWZpbmVkLC4uLmUuZGVjb3JhdGlvbj09PVwiYm9sZFwiP3tmb250V2VpZ2h0OjgwMH06ZS5kZWNvcmF0aW9uPT09XCJpdGFsaWNcIj97Zm9udFN0eWxlOlwiaXRhbGljXCJ9OnVuZGVmaW5lZH19LGUuY29udGVudCkpKSkpfTtjb25zdCBqdD1mdW5jdGlvbiBCdWlsZEVycm9yKHttZXNzYWdlOmV9KXtjb25zdCB0PXAudXNlQ2FsbGJhY2soKCgpPT57fSksW10pO3JldHVybiBwLmNyZWF0ZUVsZW1lbnQoU3Qse2ZpeGVkOnRydWV9LHAuY3JlYXRlRWxlbWVudChoLHt0eXBlOlwiZXJyb3JcIixcImFyaWEtbGFiZWxsZWRieVwiOlwibmV4dGpzX19jb250YWluZXJfYnVpbGRfZXJyb3JfbGFiZWxcIixcImFyaWEtZGVzY3JpYmVkYnlcIjpcIm5leHRqc19fY29udGFpbmVyX2J1aWxkX2Vycm9yX2Rlc2NcIixvbkNsb3NlOnR9LHAuY3JlYXRlRWxlbWVudCh5LG51bGwscC5jcmVhdGVFbGVtZW50KEUse2NsYXNzTmFtZTpcIm5leHRqcy1jb250YWluZXItYnVpbGQtZXJyb3ItaGVhZGVyXCJ9LHAuY3JlYXRlRWxlbWVudChcImg0XCIse2lkOlwibmV4dGpzX19jb250YWluZXJfYnVpbGRfZXJyb3JfbGFiZWxcIn0sXCJGYWlsZWQgdG8gY29tcGlsZVwiKSkscC5jcmVhdGVFbGVtZW50KHgse2NsYXNzTmFtZTpcIm5leHRqcy1jb250YWluZXItYnVpbGQtZXJyb3ItYm9keVwifSxwLmNyZWF0ZUVsZW1lbnQoQ3Qse2NvbnRlbnQ6ZX0pLHAuY3JlYXRlRWxlbWVudChcImZvb3RlclwiLG51bGwscC5jcmVhdGVFbGVtZW50KFwicFwiLHtpZDpcIm5leHRqc19fY29udGFpbmVyX2J1aWxkX2Vycm9yX2Rlc2NcIn0scC5jcmVhdGVFbGVtZW50KFwic21hbGxcIixudWxsLFwiVGhpcyBlcnJvciBvY2N1cnJlZCBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGNhbiBvbmx5IGJlIGRpc21pc3NlZCBieSBmaXhpbmcgdGhlIGVycm9yLlwiKSkpKSkpKX07Y29uc3QgQXQ9bm9vcGBcbiAgLm5leHRqcy1jb250YWluZXItYnVpbGQtZXJyb3ItaGVhZGVyID4gaDQge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAubmV4dGpzLWNvbnRhaW5lci1idWlsZC1lcnJvci1ib2R5IGZvb3RlciB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc2l6ZS1nYXApO1xuICB9XG4gIC5uZXh0anMtY29udGFpbmVyLWJ1aWxkLWVycm9yLWJvZHkgZm9vdGVyIHAge1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gIC5uZXh0anMtY29udGFpbmVyLWJ1aWxkLWVycm9yLWJvZHkgc21hbGwge1xuICAgIGNvbG9yOiAjNzU3NTc1O1xuICB9XG5gO2NvbnN0IENsb3NlSWNvbj0oKT0+cC5jcmVhdGVFbGVtZW50KFwic3ZnXCIse3dpZHRoOlwiMjRcIixoZWlnaHQ6XCIyNFwiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0scC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLHtkOlwiTTE4IDZMNiAxOFwiLHN0cm9rZTpcImN1cnJlbnRDb2xvclwiLHN0cm9rZVdpZHRoOlwiMlwiLHN0cm9rZUxpbmVjYXA6XCJyb3VuZFwiLHN0cm9rZUxpbmVqb2luOlwicm91bmRcIn0pLHAuY3JlYXRlRWxlbWVudChcInBhdGhcIix7ZDpcIk02IDZMMTggMThcIixzdHJva2U6XCJjdXJyZW50Q29sb3JcIixzdHJva2VXaWR0aDpcIjJcIixzdHJva2VMaW5lY2FwOlwicm91bmRcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCJ9KSk7Y29uc3QgT3Q9ZnVuY3Rpb24gTGVmdFJpZ2h0RGlhbG9nSGVhZGVyKHtjaGlsZHJlbjplLGNsYXNzTmFtZTp0LHByZXZpb3VzOnIsbmV4dDpuLGNsb3NlOmF9KXtjb25zdCBvPXAudXNlUmVmKG51bGwpO2NvbnN0IGk9cC51c2VSZWYobnVsbCk7Y29uc3QgbD1wLnVzZVJlZihudWxsKTtjb25zdFtzLHVdPXAudXNlU3RhdGUobnVsbCk7Y29uc3QgYz1wLnVzZUNhbGxiYWNrKChlPT57dShlKX0pLFtdKTtwLnVzZUVmZmVjdCgoKCk9PntpZihzPT1udWxsKXtyZXR1cm59Y29uc3QgZT1zLmdldFJvb3ROb2RlKCk7Y29uc3QgdD1zZWxmLmRvY3VtZW50O2Z1bmN0aW9uIGhhbmRsZXIodCl7aWYodC5rZXk9PT1cIkFycm93TGVmdFwiKXt0LnN0b3BQcm9wYWdhdGlvbigpO2lmKG8uY3VycmVudCl7by5jdXJyZW50LmZvY3VzKCl9ciYmcigpfWVsc2UgaWYodC5rZXk9PT1cIkFycm93UmlnaHRcIil7dC5zdG9wUHJvcGFnYXRpb24oKTtpZihpLmN1cnJlbnQpe2kuY3VycmVudC5mb2N1cygpfW4mJm4oKX1lbHNlIGlmKHQua2V5PT09XCJFc2NhcGVcIil7dC5zdG9wUHJvcGFnYXRpb24oKTtpZihlIGluc3RhbmNlb2YgU2hhZG93Um9vdCl7Y29uc3QgdD1lLmFjdGl2ZUVsZW1lbnQ7aWYodCYmdCE9PWwuY3VycmVudCYmdCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KXt0LmJsdXIoKTtyZXR1cm59fWlmKGEpe2EoKX19fWUuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixoYW5kbGVyKTtpZihlIT09dCl7dC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLGhhbmRsZXIpfXJldHVybiBmdW5jdGlvbigpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixoYW5kbGVyKTtpZihlIT09dCl7dC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLGhhbmRsZXIpfX19KSxbYSxzLG4scl0pO3AudXNlRWZmZWN0KCgoKT0+e2lmKHM9PW51bGwpe3JldHVybn1jb25zdCBlPXMuZ2V0Um9vdE5vZGUoKTtpZihlIGluc3RhbmNlb2YgU2hhZG93Um9vdCl7Y29uc3QgdD1lLmFjdGl2ZUVsZW1lbnQ7aWYocj09bnVsbCl7aWYoby5jdXJyZW50JiZ0PT09by5jdXJyZW50KXtvLmN1cnJlbnQuYmx1cigpfX1lbHNlIGlmKG49PW51bGwpe2lmKGkuY3VycmVudCYmdD09PWkuY3VycmVudCl7aS5jdXJyZW50LmJsdXIoKX19fX0pLFtzLG4scl0pO3JldHVybiBwLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7XCJkYXRhLW5leHRqcy1kaWFsb2ctbGVmdC1yaWdodFwiOnRydWUsY2xhc3NOYW1lOnR9LHAuY3JlYXRlRWxlbWVudChcIm5hdlwiLHtyZWY6Y30scC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIse3JlZjpvLHR5cGU6XCJidXR0b25cIixkaXNhYmxlZDpyPT1udWxsP3RydWU6dW5kZWZpbmVkLFwiYXJpYS1kaXNhYmxlZFwiOnI9PW51bGw/dHJ1ZTp1bmRlZmluZWQsb25DbGljazpyPz91bmRlZmluZWR9LHAuY3JlYXRlRWxlbWVudChcInN2Z1wiLHt2aWV3Qm94OlwiMCAwIDE0IDE0XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LHAuY3JlYXRlRWxlbWVudChcInRpdGxlXCIsbnVsbCxcInByZXZpb3VzXCIpLHAuY3JlYXRlRWxlbWVudChcInBhdGhcIix7ZDpcIk02Ljk5OTk2IDEuMTY2NjZMMS4xNjY2MyA2Ljk5OTk5TDYuOTk5OTYgMTIuODMzM00xMi44MzMzIDYuOTk5OTlIMS45OTk5NkgxMi44MzMzWlwiLHN0cm9rZTpcImN1cnJlbnRDb2xvclwiLHN0cm9rZVdpZHRoOlwiMlwiLHN0cm9rZUxpbmVjYXA6XCJyb3VuZFwiLHN0cm9rZUxpbmVqb2luOlwicm91bmRcIn0pKSkscC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIse3JlZjppLHR5cGU6XCJidXR0b25cIixkaXNhYmxlZDpuPT1udWxsP3RydWU6dW5kZWZpbmVkLFwiYXJpYS1kaXNhYmxlZFwiOm49PW51bGw/dHJ1ZTp1bmRlZmluZWQsb25DbGljazpuPz91bmRlZmluZWR9LHAuY3JlYXRlRWxlbWVudChcInN2Z1wiLHt2aWV3Qm94OlwiMCAwIDE0IDE0XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LHAuY3JlYXRlRWxlbWVudChcInRpdGxlXCIsbnVsbCxcIm5leHRcIikscC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLHtkOlwiTTYuOTk5OTYgMS4xNjY2NkwxMi44MzMzIDYuOTk5OTlMNi45OTk5NiAxMi44MzMzTTEuMTY2NjMgNi45OTk5OUgxMkgxLjE2NjYzWlwiLHN0cm9rZTpcImN1cnJlbnRDb2xvclwiLHN0cm9rZVdpZHRoOlwiMlwiLHN0cm9rZUxpbmVjYXA6XCJyb3VuZFwiLHN0cm9rZUxpbmVqb2luOlwicm91bmRcIn0pKSksXCLCoFwiLGUpLGE/cC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIse1wiZGF0YS1uZXh0anMtZXJyb3JzLWRpYWxvZy1sZWZ0LXJpZ2h0LWNsb3NlLWJ1dHRvblwiOnRydWUscmVmOmwsdHlwZTpcImJ1dHRvblwiLG9uQ2xpY2s6YSxcImFyaWEtbGFiZWxcIjpcIkNsb3NlXCJ9LHAuY3JlYXRlRWxlbWVudChcInNwYW5cIix7XCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwifSxwLmNyZWF0ZUVsZW1lbnQoQ2xvc2VJY29uLG51bGwpKSk6bnVsbCl9O2NvbnN0IE50PW5vb3BgXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctbGVmdC1yaWdodF0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1sZWZ0LXJpZ2h0XSA+IG5hdiA+IGJ1dHRvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgIHdpZHRoOiBjYWxjKHZhcigtLXNpemUtZ2FwLWRvdWJsZSkgKyB2YXIoLS1zaXplLWdhcCkpO1xuICAgIGhlaWdodDogY2FsYyh2YXIoLS1zaXplLWdhcC1kb3VibGUpICsgdmFyKC0tc2l6ZS1nYXApKTtcbiAgICBmb250LXNpemU6IDA7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA4NSwgODUsIDAuMSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktcmVkKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjI1cyBlYXNlO1xuICB9XG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctbGVmdC1yaWdodF0gPiBuYXYgPiBidXR0b24gPiBzdmcge1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogY2FsYyh2YXIoLS1zaXplLWdhcCkgKyB2YXIoLS1zaXplLWdhcC1oYWxmKSk7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1sZWZ0LXJpZ2h0XSA+IG5hdiA+IGJ1dHRvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDg1LCA4NSwgMC4yKTtcbiAgfVxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWxlZnQtcmlnaHRdID4gbmF2ID4gYnV0dG9uOmRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgODUsIDg1LCAwLjEpO1xuICAgIGNvbG9yOiByZ2JhKDI1NSwgODUsIDg1LCAwLjQpO1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIH1cblxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWxlZnQtcmlnaHRdID4gbmF2ID4gYnV0dG9uOmZpcnN0LW9mLXR5cGUge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNpemUtZ2FwLWhhbGYpIDAgMCB2YXIoLS1zaXplLWdhcC1oYWxmKTtcbiAgICBtYXJnaW4tcmlnaHQ6IDFweDtcbiAgfVxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWxlZnQtcmlnaHRdID4gbmF2ID4gYnV0dG9uOmxhc3Qtb2YtdHlwZSB7XG4gICAgYm9yZGVyLXJhZGl1czogMCB2YXIoLS1zaXplLWdhcC1oYWxmKSB2YXIoLS1zaXplLWdhcC1oYWxmKSAwO1xuICB9XG5cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1sZWZ0LXJpZ2h0XSA+IGJ1dHRvbjpsYXN0LW9mLXR5cGUge1xuICAgIGJvcmRlcjogMDtcbiAgICBwYWRkaW5nOiAwO1xuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcblxuICAgIG9wYWNpdHk6IDAuNDtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMjVzIGVhc2U7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1sZWZ0LXJpZ2h0XSA+IGJ1dHRvbjpsYXN0LW9mLXR5cGU6aG92ZXIge1xuICAgIG9wYWNpdHk6IDAuNztcbiAgfVxuYDtjb25zdCBJdD1ub29wYFxuICBbZGF0YS1uZXh0anMtdG9hc3RdIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgYm90dG9tOiB2YXIoLS1zaXplLWdhcC1kb3VibGUpO1xuICAgIGxlZnQ6IHZhcigtLXNpemUtZ2FwLWRvdWJsZSk7XG4gICAgbWF4LXdpZHRoOiA0MjBweDtcbiAgICB6LWluZGV4OiA5MDAwO1xuICB9XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDQ0MHB4KSB7XG4gICAgW2RhdGEtbmV4dGpzLXRvYXN0XSB7XG4gICAgICBtYXgtd2lkdGg6IDkwdnc7XG4gICAgICBsZWZ0OiA1dnc7XG4gICAgfVxuICB9XG5cbiAgW2RhdGEtbmV4dGpzLXRvYXN0LXdyYXBwZXJdIHtcbiAgICBwYWRkaW5nOiAxNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNpemUtZ2FwLWhhbGYpO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktYnJpZ2h0LXdoaXRlKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLXJlZCk7XG4gICAgYm94LXNoYWRvdzogMHB4IHZhcigtLXNpemUtZ2FwLWRvdWJsZSkgdmFyKC0tc2l6ZS1nYXAtcXVhZClcbiAgICAgIHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIH1cbmA7Y29uc3QgTHQ9ZnVuY3Rpb24gVG9hc3Qoe29uQ2xpY2s6ZSxjaGlsZHJlbjp0LGNsYXNzTmFtZTpyfSl7cmV0dXJuIHAuY3JlYXRlRWxlbWVudChcImRpdlwiLHtcImRhdGEtbmV4dGpzLXRvYXN0XCI6dHJ1ZSxvbkNsaWNrOmUsY2xhc3NOYW1lOnJ9LHAuY3JlYXRlRWxlbWVudChcImRpdlwiLHtcImRhdGEtbmV4dGpzLXRvYXN0LXdyYXBwZXJcIjp0cnVlfSx0KSl9O3ZhciBGdD1yZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3N0cmlwLWFuc2lcIik7dmFyIER0PV9fbmNjd3Bja19yZXF1aXJlX18ubihGdCk7Y29uc3QgTXQ9ZnVuY3Rpb24gQ29kZUZyYW1lKHtzdGFja0ZyYW1lOmUsY29kZUZyYW1lOnR9KXtjb25zdCByPXAudXNlTWVtbygoKCk9Pntjb25zdCBlPXQuc3BsaXQoL1xccj9cXG4vZyk7Y29uc3Qgcj1lLm1hcCgoZT0+L14+PyArXFxkKyArXFx8IFsgXSsvLmV4ZWMoRHQoKShlKSk9PT1udWxsP251bGw6L14+PyArXFxkKyArXFx8ICggKikvLmV4ZWMoRHQoKShlKSkpKS5maWx0ZXIoQm9vbGVhbikubWFwKChlPT5lLnBvcCgpKSkucmVkdWNlKCgoZSx0KT0+aXNOYU4oZSk/dC5sZW5ndGg6TWF0aC5taW4oZSx0Lmxlbmd0aCkpLE5hTik7aWYocj4xKXtjb25zdCB0PVwiIFwiLnJlcGVhdChyKTtyZXR1cm4gZS5tYXAoKChlLHIpPT5+KHI9ZS5pbmRleE9mKFwifFwiKSk/ZS5zdWJzdHJpbmcoMCxyKStlLnN1YnN0cmluZyhyKS5yZXBsYWNlKHQsXCJcIik6ZSkpLmpvaW4oXCJcXG5cIil9cmV0dXJuIGUuam9pbihcIlxcblwiKX0pLFt0XSk7Y29uc3Qgbj1wLnVzZU1lbW8oKCgpPT5UdCgpLmFuc2lUb0pzb24ocix7anNvbjp0cnVlLHVzZV9jbGFzc2VzOnRydWUscmVtb3ZlX2VtcHR5OnRydWV9KSksW3JdKTtjb25zdCBhPXAudXNlQ2FsbGJhY2soKCgpPT57Y29uc3QgdD1uZXcgVVJMU2VhcmNoUGFyYW1zO2Zvcihjb25zdCByIGluIGUpe3QuYXBwZW5kKHIsKGVbcl0/P1wiXCIpLnRvU3RyaW5nKCkpfXNlbGYuZmV0Y2goYCR7cHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSHx8XCJcIn0vX19uZXh0anNfbGF1bmNoLWVkaXRvcj8ke3QudG9TdHJpbmcoKX1gKS50aGVuKCgoKT0+e30pLCgoKT0+e2NvbnNvbGUuZXJyb3IoXCJUaGVyZSB3YXMgYW4gaXNzdWUgb3BlbmluZyB0aGlzIGNvZGUgaW4geW91ciBlZGl0b3IuXCIpfSkpfSksW2VdKTtyZXR1cm4gcC5jcmVhdGVFbGVtZW50KFwiZGl2XCIse1wiZGF0YS1uZXh0anMtY29kZWZyYW1lXCI6dHJ1ZX0scC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsbnVsbCxwLmNyZWF0ZUVsZW1lbnQoXCJwXCIse3JvbGU6XCJsaW5rXCIsb25DbGljazphLHRhYkluZGV4OjEsdGl0bGU6XCJDbGljayB0byBvcGVuIGluIHlvdXIgZWRpdG9yXCJ9LHAuY3JlYXRlRWxlbWVudChcInNwYW5cIixudWxsLGdldEZyYW1lU291cmNlKGUpLFwiIEAgXCIsZS5tZXRob2ROYW1lKSxwLmNyZWF0ZUVsZW1lbnQoXCJzdmdcIix7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwiLHN0cm9rZTpcImN1cnJlbnRDb2xvclwiLHN0cm9rZVdpZHRoOlwiMlwiLHN0cm9rZUxpbmVjYXA6XCJyb3VuZFwiLHN0cm9rZUxpbmVqb2luOlwicm91bmRcIn0scC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLHtkOlwiTTE4IDEzdjZhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDZcIn0pLHAuY3JlYXRlRWxlbWVudChcInBvbHlsaW5lXCIse3BvaW50czpcIjE1IDMgMjEgMyAyMSA5XCJ9KSxwLmNyZWF0ZUVsZW1lbnQoXCJsaW5lXCIse3gxOlwiMTBcIix5MTpcIjE0XCIseDI6XCIyMVwiLHkyOlwiM1wifSkpKSkscC5jcmVhdGVFbGVtZW50KFwicHJlXCIsbnVsbCxuLm1hcCgoKGUsdCk9PnAuY3JlYXRlRWxlbWVudChcInNwYW5cIix7a2V5OmBmcmFtZS0ke3R9YCxzdHlsZTp7Y29sb3I6ZS5mZz9gdmFyKC0tY29sb3ItJHtlLmZnfSlgOnVuZGVmaW5lZCwuLi5lLmRlY29yYXRpb249PT1cImJvbGRcIj97Zm9udFdlaWdodDo4MDB9OmUuZGVjb3JhdGlvbj09PVwiaXRhbGljXCI/e2ZvbnRTdHlsZTpcIml0YWxpY1wifTp1bmRlZmluZWR9fSxlLmNvbnRlbnQpKSkpKX07Y29uc3QgUnQ9ZnVuY3Rpb24gQ2FsbFN0YWNrRnJhbWUoe2ZyYW1lOmV9KXtjb25zdCB0PWUub3JpZ2luYWxTdGFja0ZyYW1lPz9lLnNvdXJjZVN0YWNrRnJhbWU7Y29uc3Qgcj1Cb29sZWFuKGUub3JpZ2luYWxDb2RlRnJhbWUpO2NvbnN0IG49cC51c2VDYWxsYmFjaygoKCk9PntpZighcilyZXR1cm47Y29uc3QgZT1uZXcgVVJMU2VhcmNoUGFyYW1zO2Zvcihjb25zdCByIGluIHQpe2UuYXBwZW5kKHIsKHRbcl0/P1wiXCIpLnRvU3RyaW5nKCkpfXNlbGYuZmV0Y2goYCR7cHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSHx8XCJcIn0vX19uZXh0anNfbGF1bmNoLWVkaXRvcj8ke2UudG9TdHJpbmcoKX1gKS50aGVuKCgoKT0+e30pLCgoKT0+e2NvbnNvbGUuZXJyb3IoXCJUaGVyZSB3YXMgYW4gaXNzdWUgb3BlbmluZyB0aGlzIGNvZGUgaW4geW91ciBlZGl0b3IuXCIpfSkpfSksW3IsdF0pO3JldHVybiBwLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7XCJkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWZyYW1lXCI6dHJ1ZX0scC5jcmVhdGVFbGVtZW50KFwiaDNcIix7XCJkYXRhLW5leHRqcy1mcmFtZS1leHBhbmRlZFwiOkJvb2xlYW4oZS5leHBhbmRlZCl9LHQubWV0aG9kTmFtZSkscC5jcmVhdGVFbGVtZW50KFwiZGl2XCIse1wiZGF0YS1oYXMtc291cmNlXCI6cj9cInRydWVcIjp1bmRlZmluZWQsdGFiSW5kZXg6cj8xMDp1bmRlZmluZWQscm9sZTpyP1wibGlua1wiOnVuZGVmaW5lZCxvbkNsaWNrOm4sdGl0bGU6cj9cIkNsaWNrIHRvIG9wZW4gaW4geW91ciBlZGl0b3JcIjp1bmRlZmluZWR9LHAuY3JlYXRlRWxlbWVudChcInNwYW5cIixudWxsLGdldEZyYW1lU291cmNlKHQpKSxwLmNyZWF0ZUVsZW1lbnQoXCJzdmdcIix7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwiLHN0cm9rZTpcImN1cnJlbnRDb2xvclwiLHN0cm9rZVdpZHRoOlwiMlwiLHN0cm9rZUxpbmVjYXA6XCJyb3VuZFwiLHN0cm9rZUxpbmVqb2luOlwicm91bmRcIn0scC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLHtkOlwiTTE4IDEzdjZhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDZcIn0pLHAuY3JlYXRlRWxlbWVudChcInBvbHlsaW5lXCIse3BvaW50czpcIjE1IDMgMjEgMyAyMSA5XCJ9KSxwLmNyZWF0ZUVsZW1lbnQoXCJsaW5lXCIse3gxOlwiMTBcIix5MTpcIjE0XCIseDI6XCIyMVwiLHkyOlwiM1wifSkpKSl9O2NvbnN0IHp0PWZ1bmN0aW9uIFJ1bnRpbWVFcnJvcih7ZXJyb3I6ZX0pe2NvbnN0IHQ9cC51c2VNZW1vKCgoKT0+ZS5mcmFtZXMuZmluZEluZGV4KChlPT5lLmV4cGFuZGVkJiZCb29sZWFuKGUub3JpZ2luYWxDb2RlRnJhbWUpJiZCb29sZWFuKGUub3JpZ2luYWxTdGFja0ZyYW1lKSkpKSxbZS5mcmFtZXNdKTtjb25zdCByPXAudXNlTWVtbygoKCk9PmUuZnJhbWVzW3RdPz9udWxsKSxbZS5mcmFtZXMsdF0pO2NvbnN0IG49cC51c2VNZW1vKCgoKT0+dDwwP1tdOmUuZnJhbWVzLnNsaWNlKDAsdCkpLFtlLmZyYW1lcyx0XSk7Y29uc3RbYSxvXT1wLnVzZVN0YXRlKHI9PW51bGwpO2NvbnN0IGk9cC51c2VDYWxsYmFjaygoKCk9PntvKChlPT4hZSkpfSksW10pO2NvbnN0IGw9cC51c2VNZW1vKCgoKT0+bi5maWx0ZXIoKGU9PmUuZXhwYW5kZWR8fGEpKSksW2Esbl0pO2NvbnN0IHM9cC51c2VNZW1vKCgoKT0+ZS5mcmFtZXMuc2xpY2UodCsxKSksW2UuZnJhbWVzLHRdKTtjb25zdCB1PXAudXNlTWVtbygoKCk9PnMuZmlsdGVyKChlPT5lLmV4cGFuZGVkfHxhKSkpLFthLHNdKTtjb25zdCBjPXAudXNlTWVtbygoKCk9PnMubGVuZ3RoIT09dS5sZW5ndGh8fGEmJnIhPW51bGwpLFthLHMubGVuZ3RoLHIsdS5sZW5ndGhdKTtyZXR1cm4gcC5jcmVhdGVFbGVtZW50KHAuRnJhZ21lbnQsbnVsbCxyP3AuY3JlYXRlRWxlbWVudChwLkZyYWdtZW50LG51bGwscC5jcmVhdGVFbGVtZW50KFwiaDJcIixudWxsLFwiU291cmNlXCIpLGwubWFwKCgoZSx0KT0+cC5jcmVhdGVFbGVtZW50KFJ0LHtrZXk6YGxlYWRpbmctZnJhbWUtJHt0fS0ke2F9YCxmcmFtZTplfSkpKSxwLmNyZWF0ZUVsZW1lbnQoTXQse3N0YWNrRnJhbWU6ci5vcmlnaW5hbFN0YWNrRnJhbWUsY29kZUZyYW1lOnIub3JpZ2luYWxDb2RlRnJhbWV9KSk6dW5kZWZpbmVkLGUuY29tcG9uZW50U3RhY2s/cC5jcmVhdGVFbGVtZW50KHAuRnJhZ21lbnQsbnVsbCxwLmNyZWF0ZUVsZW1lbnQoXCJoMlwiLG51bGwsXCJDb21wb25lbnQgU3RhY2tcIiksZS5jb21wb25lbnRTdGFjay5tYXAoKChlLHQpPT5wLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7a2V5OnQsXCJkYXRhLW5leHRqcy1jb21wb25lbnQtc3RhY2stZnJhbWVcIjp0cnVlfSxwLmNyZWF0ZUVsZW1lbnQoXCJoM1wiLG51bGwsZSkpKSkpOm51bGwsdS5sZW5ndGg/cC5jcmVhdGVFbGVtZW50KHAuRnJhZ21lbnQsbnVsbCxwLmNyZWF0ZUVsZW1lbnQoXCJoMlwiLG51bGwsXCJDYWxsIFN0YWNrXCIpLHUubWFwKCgoZSx0KT0+cC5jcmVhdGVFbGVtZW50KFJ0LHtrZXk6YGNhbGwtc3RhY2stJHt0fS0ke2F9YCxmcmFtZTplfSkpKSk6dW5kZWZpbmVkLGM/cC5jcmVhdGVFbGVtZW50KHAuRnJhZ21lbnQsbnVsbCxwLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7dGFiSW5kZXg6MTAsXCJkYXRhLW5leHRqcy1kYXRhLXJ1bnRpbWUtZXJyb3ItY29sbGFwc2VkLWFjdGlvblwiOnRydWUsdHlwZTpcImJ1dHRvblwiLG9uQ2xpY2s6aX0sYT9cIkhpZGVcIjpcIlNob3dcIixcIiBjb2xsYXBzZWQgZnJhbWVzXCIpKTp1bmRlZmluZWQpfTtjb25zdCBCdD1ub29wYFxuICBidXR0b25bZGF0YS1uZXh0anMtZGF0YS1ydW50aW1lLWVycm9yLWNvbGxhcHNlZC1hY3Rpb25dIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS1mb250LXNtYWxsKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZS1mb250LWJpZ2dlcik7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudHMtMyk7XG4gIH1cblxuICBbZGF0YS1uZXh0anMtY2FsbC1zdGFjay1mcmFtZV06bm90KDpsYXN0LWNoaWxkKSxcbiAgW2RhdGEtbmV4dGpzLWNvbXBvbmVudC1zdGFjay1mcmFtZV06bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc2l6ZS1nYXAtZG91YmxlKTtcbiAgfVxuXG4gIFtkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWZyYW1lXSA+IGgzLFxuICBbZGF0YS1uZXh0anMtY29tcG9uZW50LXN0YWNrLWZyYW1lXSA+IGgzIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNpemUtZ2FwKTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1tb25vc3BhY2UpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS1mb250KTtcbiAgICBjb2xvcjogIzIyMjtcbiAgfVxuICBbZGF0YS1uZXh0anMtY2FsbC1zdGFjay1mcmFtZV0gPiBoM1tkYXRhLW5leHRqcy1mcmFtZS1leHBhbmRlZD0nZmFsc2UnXSB7XG4gICAgY29sb3I6ICM2NjY7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWNhbGwtc3RhY2stZnJhbWVdID4gZGl2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLXNpemUtZ2FwKSArIHZhcigtLXNpemUtZ2FwLWhhbGYpKTtcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtZm9udC1zbWFsbCk7XG4gICAgY29sb3I6ICM5OTk7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWNhbGwtc3RhY2stZnJhbWVdID4gZGl2ID4gc3ZnIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBoZWlnaHQ6IHZhcigtLXNpemUtZm9udC1zbWFsbCk7XG4gICAgbWFyZ2luLWxlZnQ6IHZhcigtLXNpemUtZ2FwKTtcblxuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICBbZGF0YS1uZXh0anMtY2FsbC1zdGFjay1mcmFtZV0gPiBkaXZbZGF0YS1oYXMtc291cmNlXSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG4gIFtkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWZyYW1lXSA+IGRpdltkYXRhLWhhcy1zb3VyY2VdOmhvdmVyIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWNhbGwtc3RhY2stZnJhbWVdID4gZGl2W2RhdGEtaGFzLXNvdXJjZV0gPiBzdmcge1xuICAgIGRpc3BsYXk6IHVuc2V0O1xuICB9XG5gO2Z1bmN0aW9uIGdldEVycm9yU2lnbmF0dXJlKGUpe2NvbnN0e2V2ZW50OnR9PWU7c3dpdGNoKHQudHlwZSl7Y2FzZSBvOmNhc2UgaTp7cmV0dXJuYCR7dC5yZWFzb24ubmFtZX06OiR7dC5yZWFzb24ubWVzc2FnZX06OiR7dC5yZWFzb24uc3RhY2t9YH1kZWZhdWx0Ont9fWNvbnN0IHI9dDtyZXR1cm5cIlwifWNvbnN0IEh0PWZ1bmN0aW9uIEhvdGxpbmtlZFRleHQoZSl7Y29uc3R7dGV4dDp0fT1lO2NvbnN0IHI9L2h0dHBzPzpcXC9cXC9bXlxccy8kLj8jXS5bXlxccyknXCJdKi9pO3JldHVybiBwLmNyZWF0ZUVsZW1lbnQocC5GcmFnbWVudCxudWxsLHIudGVzdCh0KT90LnNwbGl0KFwiIFwiKS5tYXAoKChlLHQsbik9PntpZihyLnRlc3QoZSkpe2NvbnN0IGE9ci5leGVjKGUpO3JldHVybiBwLmNyZWF0ZUVsZW1lbnQocC5GcmFnbWVudCx7a2V5OmBsaW5rLSR7dH1gfSxhJiZwLmNyZWF0ZUVsZW1lbnQoXCJhXCIse2hyZWY6YVswXSx0YXJnZXQ6XCJfYmxhbmtcIixyZWw6XCJub3JlZmVycmVyIG5vb3BlbmVyXCJ9LGUpLHQ9PT1uLmxlbmd0aC0xP1wiXCI6XCIgXCIpfXJldHVybiB0PT09bi5sZW5ndGgtMT9wLmNyZWF0ZUVsZW1lbnQocC5GcmFnbWVudCx7a2V5OmB0ZXh0LSR7dH1gfSxlKTpwLmNyZWF0ZUVsZW1lbnQocC5GcmFnbWVudCx7a2V5OmB0ZXh0LSR7dH1gfSxlLFwiIFwiKX0pKTp0KX07Y29uc3QgcXQ9ZnVuY3Rpb24gRXJyb3JzKHtlcnJvcnM6ZX0pe2NvbnN0W3Qscl09cC51c2VTdGF0ZSh7fSk7Y29uc3RbbixhXT1wLnVzZU1lbW8oKCgpPT57bGV0IHI9W107bGV0IG49bnVsbDtmb3IobGV0IGE9MDthPGUubGVuZ3RoOysrYSl7Y29uc3Qgbz1lW2FdO2NvbnN0e2lkOml9PW87aWYoaSBpbiB0KXtyLnB1c2godFtpXSk7Y29udGludWV9aWYoYT4wKXtjb25zdCB0PWVbYS0xXTtpZihnZXRFcnJvclNpZ25hdHVyZSh0KT09PWdldEVycm9yU2lnbmF0dXJlKG8pKXtjb250aW51ZX19bj1vO2JyZWFrfXJldHVybltyLG5dfSksW2UsdF0pO2NvbnN0IG89cC51c2VNZW1vKCgoKT0+bi5sZW5ndGg8MSYmQm9vbGVhbihlLmxlbmd0aCkpLFtlLmxlbmd0aCxuLmxlbmd0aF0pO3AudXNlRWZmZWN0KCgoKT0+e2lmKGE9PW51bGwpe3JldHVybn1sZXQgZT10cnVlO2dldEVycm9yQnlUeXBlKGEpLnRoZW4oKHQ9PntpZihlKXtyKChlPT4oey4uLmUsW3QuaWRdOnR9KSkpfX0pLCgoKT0+e30pKTtyZXR1cm4oKT0+e2U9ZmFsc2V9fSksW2FdKTtjb25zdFtpLGxdPXAudXNlU3RhdGUoXCJmdWxsc2NyZWVuXCIpO2NvbnN0W3MsdV09cC51c2VTdGF0ZSgwKTtjb25zdCBjPXAudXNlQ2FsbGJhY2soKGU9PntlPy5wcmV2ZW50RGVmYXVsdCgpO3UoKGU9Pk1hdGgubWF4KDAsZS0xKSkpfSksW10pO2NvbnN0IGQ9cC51c2VDYWxsYmFjaygoZT0+e2U/LnByZXZlbnREZWZhdWx0KCk7dSgoZT0+TWF0aC5tYXgoMCxNYXRoLm1pbihuLmxlbmd0aC0xLGUrMSkpKSl9KSxbbi5sZW5ndGhdKTtjb25zdCBmPXAudXNlTWVtbygoKCk9Pm5bc10/P251bGwpLFtzLG5dKTtwLnVzZUVmZmVjdCgoKCk9PntpZihlLmxlbmd0aDwxKXtyKHt9KTtsKFwiaGlkZGVuXCIpO3UoMCl9fSksW2UubGVuZ3RoXSk7Y29uc3QgbT1wLnVzZUNhbGxiYWNrKChlPT57ZT8ucHJldmVudERlZmF1bHQoKTtsKFwibWluaW1pemVkXCIpfSksW10pO2NvbnN0IGI9cC51c2VDYWxsYmFjaygoZT0+e2U/LnByZXZlbnREZWZhdWx0KCk7bChcImhpZGRlblwiKX0pLFtdKTtjb25zdCB2PXAudXNlQ2FsbGJhY2soKGU9PntlPy5wcmV2ZW50RGVmYXVsdCgpO2woXCJmdWxsc2NyZWVuXCIpfSksW10pO2lmKGUubGVuZ3RoPDF8fGY9PW51bGwpe3JldHVybiBudWxsfWlmKG8pe3JldHVybiBwLmNyZWF0ZUVsZW1lbnQoU3QsbnVsbCl9aWYoaT09PVwiaGlkZGVuXCIpe3JldHVybiBudWxsfWlmKGk9PT1cIm1pbmltaXplZFwiKXtyZXR1cm4gcC5jcmVhdGVFbGVtZW50KEx0LHtjbGFzc05hbWU6XCJuZXh0anMtdG9hc3QtZXJyb3JzLXBhcmVudFwiLG9uQ2xpY2s6dn0scC5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTpcIm5leHRqcy10b2FzdC1lcnJvcnNcIn0scC5jcmVhdGVFbGVtZW50KFwic3ZnXCIse3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix3aWR0aDpcIjI0XCIsaGVpZ2h0OlwiMjRcIix2aWV3Qm94OlwiMCAwIDI0IDI0XCIsZmlsbDpcIm5vbmVcIixzdHJva2U6XCJjdXJyZW50Q29sb3JcIixzdHJva2VXaWR0aDpcIjJcIixzdHJva2VMaW5lY2FwOlwicm91bmRcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCJ9LHAuY3JlYXRlRWxlbWVudChcImNpcmNsZVwiLHtjeDpcIjEyXCIsY3k6XCIxMlwiLHI6XCIxMFwifSkscC5jcmVhdGVFbGVtZW50KFwibGluZVwiLHt4MTpcIjEyXCIseTE6XCI4XCIseDI6XCIxMlwiLHkyOlwiMTJcIn0pLHAuY3JlYXRlRWxlbWVudChcImxpbmVcIix7eDE6XCIxMlwiLHkxOlwiMTZcIix4MjpcIjEyLjAxXCIseTI6XCIxNlwifSkpLHAuY3JlYXRlRWxlbWVudChcInNwYW5cIixudWxsLG4ubGVuZ3RoLFwiIGVycm9yXCIsbi5sZW5ndGg+MT9cInNcIjpcIlwiKSxwLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7XCJkYXRhLW5leHRqcy10b2FzdC1lcnJvcnMtaGlkZS1idXR0b25cIjp0cnVlLGNsYXNzTmFtZTpcIm5leHRqcy10b2FzdC1lcnJvcnMtaGlkZS1idXR0b25cIix0eXBlOlwiYnV0dG9uXCIsb25DbGljazplPT57ZS5zdG9wUHJvcGFnYXRpb24oKTtiKCl9LFwiYXJpYS1sYWJlbFwiOlwiSGlkZSBFcnJvcnNcIn0scC5jcmVhdGVFbGVtZW50KENsb3NlSWNvbixudWxsKSkpKX1jb25zdCBnPVtcInNlcnZlclwiLFwiZWRnZS1zZXJ2ZXJcIl0uaW5jbHVkZXMoZ2V0RXJyb3JTb3VyY2UoZi5lcnJvcil8fFwiXCIpO3JldHVybiBwLmNyZWF0ZUVsZW1lbnQoU3QsbnVsbCxwLmNyZWF0ZUVsZW1lbnQoaCx7dHlwZTpcImVycm9yXCIsXCJhcmlhLWxhYmVsbGVkYnlcIjpcIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19sYWJlbFwiLFwiYXJpYS1kZXNjcmliZWRieVwiOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX2Rlc2NcIixvbkNsb3NlOmc/dW5kZWZpbmVkOm19LHAuY3JlYXRlRWxlbWVudCh5LG51bGwscC5jcmVhdGVFbGVtZW50KEUse2NsYXNzTmFtZTpcIm5leHRqcy1jb250YWluZXItZXJyb3JzLWhlYWRlclwifSxwLmNyZWF0ZUVsZW1lbnQoT3Qse3ByZXZpb3VzOnM+MD9jOm51bGwsbmV4dDpzPG4ubGVuZ3RoLTE/ZDpudWxsLGNsb3NlOmc/dW5kZWZpbmVkOm19LHAuY3JlYXRlRWxlbWVudChcInNtYWxsXCIsbnVsbCxwLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsbnVsbCxzKzEpLFwiIG9mXCIsXCIgXCIscC5jcmVhdGVFbGVtZW50KFwic3BhblwiLG51bGwsbi5sZW5ndGgpLFwiIHVuaGFuZGxlZCBlcnJvclwiLG4ubGVuZ3RoPDI/XCJcIjpcInNcIikpLHAuY3JlYXRlRWxlbWVudChcImgxXCIse2lkOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX2xhYmVsXCJ9LGc/XCJTZXJ2ZXIgRXJyb3JcIjpcIlVuaGFuZGxlZCBSdW50aW1lIEVycm9yXCIpLHAuY3JlYXRlRWxlbWVudChcInBcIix7aWQ6XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfZGVzY1wifSxmLmVycm9yLm5hbWUsXCI6XCIsXCIgXCIscC5jcmVhdGVFbGVtZW50KEh0LHt0ZXh0OmYuZXJyb3IubWVzc2FnZX0pKSxnP3AuY3JlYXRlRWxlbWVudChcImRpdlwiLG51bGwscC5jcmVhdGVFbGVtZW50KFwic21hbGxcIixudWxsLFwiVGhpcyBlcnJvciBoYXBwZW5lZCB3aGlsZSBnZW5lcmF0aW5nIHRoZSBwYWdlLiBBbnkgY29uc29sZSBsb2dzIHdpbGwgYmUgZGlzcGxheWVkIGluIHRoZSB0ZXJtaW5hbCB3aW5kb3cuXCIpKTp1bmRlZmluZWQpLHAuY3JlYXRlRWxlbWVudCh4LHtjbGFzc05hbWU6XCJuZXh0anMtY29udGFpbmVyLWVycm9ycy1ib2R5XCJ9LHAuY3JlYXRlRWxlbWVudCh6dCx7a2V5OmYuaWQudG9TdHJpbmcoKSxlcnJvcjpmfSkpKSkpfTtjb25zdCBQdD1ub29wYFxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtaGVhZGVyID4gaDEge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS1mb250LWJpZyk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtZm9udC1iaWdnZXIpO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIG1hcmdpbjogMDtcbiAgICBtYXJnaW4tdG9wOiBjYWxjKHZhcigtLXNpemUtZ2FwLWRvdWJsZSkgKyB2YXIoLS1zaXplLWdhcC1oYWxmKSk7XG4gIH1cbiAgLm5leHRqcy1jb250YWluZXItZXJyb3JzLWhlYWRlciBzbWFsbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLWZvbnQtc21hbGwpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnRzLTEpO1xuICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1zaXplLWdhcC1kb3VibGUpO1xuICB9XG4gIC5uZXh0anMtY29udGFpbmVyLWVycm9ycy1oZWFkZXIgc21hbGwgPiBzcGFuIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1tb25vc3BhY2UpO1xuICB9XG4gIC5uZXh0anMtY29udGFpbmVyLWVycm9ycy1oZWFkZXIgPiBwIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1tb25vc3BhY2UpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS1mb250LXNtYWxsKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZS1mb250LWJpZyk7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgbWFyZ2luOiAwO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXNpemUtZ2FwLWhhbGYpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLXJlZCk7XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICB9XG4gIC5uZXh0anMtY29udGFpbmVyLWVycm9ycy1oZWFkZXIgPiBkaXYgPiBzbWFsbCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXNpemUtZ2FwLWhhbGYpO1xuICB9XG4gIC5uZXh0anMtY29udGFpbmVyLWVycm9ycy1oZWFkZXIgPiBwID4gYSB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktcmVkKTtcbiAgfVxuXG4gIC5uZXh0anMtY29udGFpbmVyLWVycm9ycy1ib2R5ID4gaDI6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgIG1hcmdpbi10b3A6IGNhbGModmFyKC0tc2l6ZS1nYXAtZG91YmxlKSArIHZhcigtLXNpemUtZ2FwKSk7XG4gIH1cbiAgLm5leHRqcy1jb250YWluZXItZXJyb3JzLWJvZHkgPiBoMiB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc2l6ZS1nYXApO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS1mb250LWJpZyk7XG4gIH1cblxuICAubmV4dGpzLXRvYXN0LWVycm9ycy1wYXJlbnQge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlO1xuICB9XG4gIC5uZXh0anMtdG9hc3QtZXJyb3JzLXBhcmVudDpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICB9XG4gIC5uZXh0anMtdG9hc3QtZXJyb3JzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICB9XG4gIC5uZXh0anMtdG9hc3QtZXJyb3JzID4gc3ZnIHtcbiAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLXNpemUtZ2FwKTtcbiAgfVxuICAubmV4dGpzLXRvYXN0LWVycm9ycy1oaWRlLWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IHZhcigtLXNpemUtZ2FwLXRyaXBsZSk7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktYnJpZ2h0LXdoaXRlKTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4yNXMgZWFzZTtcbiAgICBvcGFjaXR5OiAwLjc7XG4gIH1cbiAgLm5leHRqcy10b2FzdC1lcnJvcnMtaGlkZS1idXR0b246aG92ZXIge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbmA7Y2xhc3MgRXJyb3JCb3VuZGFyeSBleHRlbmRzIGIoKS5QdXJlQ29tcG9uZW50e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKTt0aGlzLnN0YXRlPXtlcnJvcjpudWxsfX1zdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKGUpe3JldHVybntlcnJvcjplfX1jb21wb25lbnREaWRDYXRjaChlLHQpe3RoaXMucHJvcHMub25FcnJvcihlLHQ/LmNvbXBvbmVudFN0YWNrfHxudWxsKTtpZighdGhpcy5wcm9wcy5nbG9iYWxPdmVybGF5KXt0aGlzLnNldFN0YXRlKHtlcnJvcjplfSl9fXJlbmRlcigpe3JldHVybiB0aGlzLnN0YXRlLmVycm9yfHx0aGlzLnByb3BzLmdsb2JhbE92ZXJsYXkmJnRoaXMucHJvcHMuaXNNb3VudGVkP3RoaXMucHJvcHMuZ2xvYmFsT3ZlcmxheT9iKCkuY3JlYXRlRWxlbWVudChcImh0bWxcIixudWxsLGIoKS5jcmVhdGVFbGVtZW50KFwiaGVhZFwiLG51bGwpLGIoKS5jcmVhdGVFbGVtZW50KFwiYm9keVwiLG51bGwpKTpudWxsOnRoaXMucHJvcHMuY2hpbGRyZW59fWZ1bmN0aW9uIEJhc2UoKXtyZXR1cm4gcC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIixudWxsLG5vb3BgXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICAtLXNpemUtZ2FwLWhhbGY6IDRweDtcbiAgICAgICAgICAtLXNpemUtZ2FwOiA4cHg7XG4gICAgICAgICAgLS1zaXplLWdhcC1kb3VibGU6IDE2cHg7XG4gICAgICAgICAgLS1zaXplLWdhcC10cmlwbGU6IDI0cHg7XG4gICAgICAgICAgLS1zaXplLWdhcC1xdWFkOiAzMnB4O1xuXG4gICAgICAgICAgLS1zaXplLWZvbnQtc21hbGw6IDE0cHg7XG4gICAgICAgICAgLS1zaXplLWZvbnQ6IDE2cHg7XG4gICAgICAgICAgLS1zaXplLWZvbnQtYmlnOiAyMHB4O1xuICAgICAgICAgIC0tc2l6ZS1mb250LWJpZ2dlcjogMjRweDtcblxuICAgICAgICAgIC0tY29sb3ItYWNjZW50cy0xOiAjODA4MDgwO1xuICAgICAgICAgIC0tY29sb3ItYWNjZW50cy0yOiAjMjIyMjIyO1xuICAgICAgICAgIC0tY29sb3ItYWNjZW50cy0zOiAjNDA0MDQwO1xuXG4gICAgICAgICAgLS1mb250LXN0YWNrLW1vbm9zcGFjZTogJ1NGTW9uby1SZWd1bGFyJywgQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLFxuICAgICAgICAgICAgTWVubG8sIENvdXJpZXIsIG1vbm9zcGFjZTtcblxuICAgICAgICAgIC0tY29sb3ItYW5zaS1zZWxlY3Rpb246IHJnYmEoOTUsIDEyNiwgMTUxLCAwLjQ4KTtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktYmc6ICMxMTExMTE7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLWZnOiAjY2NjY2NjO1xuXG4gICAgICAgICAgLS1jb2xvci1hbnNpLXdoaXRlOiAjNzc3Nzc3O1xuICAgICAgICAgIC0tY29sb3ItYW5zaS1ibGFjazogIzE0MTQxNDtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktYmx1ZTogIzAwYWFmZjtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktY3lhbjogIzg4ZGRmZjtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktZ3JlZW46ICM5OGVjNjU7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLW1hZ2VudGE6ICNhYTg4ZmY7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLXJlZDogI2ZmNTU1NTtcbiAgICAgICAgICAtLWNvbG9yLWFuc2kteWVsbG93OiAjZmZjYzMzO1xuICAgICAgICAgIC0tY29sb3ItYW5zaS1icmlnaHQtd2hpdGU6ICNmZmZmZmY7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLWJyaWdodC1ibGFjazogIzc3Nzc3NztcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktYnJpZ2h0LWJsdWU6ICMzM2JiZmY7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLWJyaWdodC1jeWFuOiAjYmJlY2ZmO1xuICAgICAgICAgIC0tY29sb3ItYW5zaS1icmlnaHQtZ3JlZW46ICNiNmYyOTI7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLWJyaWdodC1tYWdlbnRhOiAjY2ViYmZmO1xuICAgICAgICAgIC0tY29sb3ItYW5zaS1icmlnaHQtcmVkOiAjZmY4ODg4O1xuICAgICAgICAgIC0tY29sb3ItYW5zaS1icmlnaHQteWVsbG93OiAjZmZkOTY2O1xuICAgICAgICB9XG5cbiAgICAgICAgLm1vbm8ge1xuICAgICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLW1vbm9zcGFjZSk7XG4gICAgICAgIH1cblxuICAgICAgICBoMSxcbiAgICAgICAgaDIsXG4gICAgICAgIGgzLFxuICAgICAgICBoNCxcbiAgICAgICAgaDUsXG4gICAgICAgIGg2IHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zaXplLWdhcCk7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICB9XG5cbiAgICAgICAgaDEge1xuICAgICAgICAgIGZvbnQtc2l6ZTogNDBweDtcbiAgICAgICAgfVxuICAgICAgICBoMiB7XG4gICAgICAgICAgZm9udC1zaXplOiAzMnB4O1xuICAgICAgICB9XG4gICAgICAgIGgzIHtcbiAgICAgICAgICBmb250LXNpemU6IDI4cHg7XG4gICAgICAgIH1cbiAgICAgICAgaDQge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgICAgfVxuICAgICAgICBoNSB7XG4gICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICB9XG4gICAgICAgIGg2IHtcbiAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIH1cbiAgICAgIGApfWNvbnN0IFd0PW5vb3BgXG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWVdIHtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zaXplLWdhcC1oYWxmKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLWJnKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYW5zaS1mZyk7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZV06OnNlbGVjdGlvbixcbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZV0gKjo6c2VsZWN0aW9uIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLXNlbGVjdGlvbik7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZV0gKiB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stbW9ub3NwYWNlKTtcbiAgfVxuXG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWVdID4gKiB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IGNhbGModmFyKC0tc2l6ZS1nYXApICsgdmFyKC0tc2l6ZS1nYXAtaGFsZikpXG4gICAgICBjYWxjKHZhcigtLXNpemUtZ2FwLWRvdWJsZSkgKyB2YXIoLS1zaXplLWdhcC1oYWxmKSk7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZV0gPiBkaXYge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogYXV0bztcbiAgICBtaW4td2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWFuc2ktYnJpZ2h0LWJsYWNrKTtcbiAgfVxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXSA+IGRpdiA+IHAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXSA+IGRpdiA+IHA6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcbiAgfVxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXSBkaXYgPiBwID4gc3ZnIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBoZWlnaHQ6IDFlbTtcbiAgICBtYXJnaW4tbGVmdDogOHB4O1xuICB9XG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWVdIGRpdiA+IHByZSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cbmA7Y29uc3QgVnQ9bm9vcGBcbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1vdmVybGF5XSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICB6LWluZGV4OiA5MDAwO1xuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHBhZGRpbmc6IDEwdmggMTVweCAwO1xuICB9XG5cbiAgQG1lZGlhIChtYXgtaGVpZ2h0OiA4MTJweCkge1xuICAgIFtkYXRhLW5leHRqcy1kaWFsb2ctb3ZlcmxheV0ge1xuICAgICAgcGFkZGluZzogMTVweCAxNXB4IDA7XG4gICAgfVxuICB9XG5cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1iYWNrZHJvcF0ge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNywgMTcsIDE3LCAwLjIpO1xuICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7XG4gICAgei1pbmRleDogLTE7XG4gIH1cblxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWJhY2tkcm9wLWZpeGVkXSB7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xuICB9XG5gO2NvbnN0ICR0PW5vb3BgXG4gIFtkYXRhLW5leHRqcy10ZXJtaW5hbF0ge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNpemUtZ2FwLWhhbGYpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktYmcpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLWZnKTtcbiAgfVxuICBbZGF0YS1uZXh0anMtdGVybWluYWxdOjpzZWxlY3Rpb24sXG4gIFtkYXRhLW5leHRqcy10ZXJtaW5hbF0gKjo6c2VsZWN0aW9uIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLXNlbGVjdGlvbik7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLXRlcm1pbmFsXSAqIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1tb25vc3BhY2UpO1xuICB9XG4gIFtkYXRhLW5leHRqcy10ZXJtaW5hbF0gPiAqIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogY2FsYyh2YXIoLS1zaXplLWdhcCkgKyB2YXIoLS1zaXplLWdhcC1oYWxmKSlcbiAgICAgIGNhbGModmFyKC0tc2l6ZS1nYXAtZG91YmxlKSArIHZhcigtLXNpemUtZ2FwLWhhbGYpKTtcbiAgfVxuXG4gIFtkYXRhLW5leHRqcy10ZXJtaW5hbF0gcHJlIHtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgfVxuYDtmdW5jdGlvbiBDb21wb25lbnRTdHlsZXMoKXtyZXR1cm4gcC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIixudWxsLG5vb3BgXG4gICAgICAgICR7VnR9XG4gICAgICAgICR7SXR9XG4gICAgICAgICR7d31cbiAgICAgICAgJHtOdH1cbiAgICAgICAgJHtXdH1cbiAgICAgICAgJHskdH1cbiAgICAgICAgXG4gICAgICAgICR7QXR9XG4gICAgICAgICR7UHR9XG4gICAgICAgICR7QnR9XG4gICAgICBgKX1mdW5jdGlvbiBDc3NSZXNldCgpe3JldHVybiBwLmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLG51bGwsbm9vcGBcbiAgICAgICAgOmhvc3Qge1xuICAgICAgICAgIGFsbDogaW5pdGlhbDtcblxuICAgICAgICAgIC8qIHRoZSBkaXJlY3Rpb24gcHJvcGVydHkgaXMgbm90IHJlc2V0IGJ5ICdhbGwnICovXG4gICAgICAgICAgZGlyZWN0aW9uOiBsdHI7XG4gICAgICAgIH1cblxuICAgICAgICAvKiFcbiAgICAgICAgICogQm9vdHN0cmFwIFJlYm9vdCB2NC40LjEgKGh0dHBzOi8vZ2V0Ym9vdHN0cmFwLmNvbS8pXG4gICAgICAgICAqIENvcHlyaWdodCAyMDExLTIwMTkgVGhlIEJvb3RzdHJhcCBBdXRob3JzXG4gICAgICAgICAqIENvcHlyaWdodCAyMDExLTIwMTkgVHdpdHRlciwgSW5jLlxuICAgICAgICAgKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9MSUNFTlNFKVxuICAgICAgICAgKiBGb3JrZWQgZnJvbSBOb3JtYWxpemUuY3NzLCBsaWNlbnNlZCBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZClcbiAgICAgICAgICovXG4gICAgICAgICosXG4gICAgICAgICo6OmJlZm9yZSxcbiAgICAgICAgKjo6YWZ0ZXIge1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gICAgICAgICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAgICAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFydGljbGUsXG4gICAgICAgIGFzaWRlLFxuICAgICAgICBmaWdjYXB0aW9uLFxuICAgICAgICBmaWd1cmUsXG4gICAgICAgIGZvb3RlcixcbiAgICAgICAgaGVhZGVyLFxuICAgICAgICBoZ3JvdXAsXG4gICAgICAgIG1haW4sXG4gICAgICAgIG5hdixcbiAgICAgICAgc2VjdGlvbiB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90byxcbiAgICAgICAgICAgICdIZWx2ZXRpY2EgTmV1ZScsIEFyaWFsLCAnTm90byBTYW5zJywgc2Fucy1zZXJpZixcbiAgICAgICAgICAgICdBcHBsZSBDb2xvciBFbW9qaScsICdTZWdvZSBVSSBFbW9qaScsICdTZWdvZSBVSSBTeW1ib2wnLFxuICAgICAgICAgICAgJ05vdG8gQ29sb3IgRW1vamknO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgICAgY29sb3I6ICMyMTI1Mjk7XG4gICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgICB9XG5cbiAgICAgICAgW3RhYmluZGV4PSctMSddOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkge1xuICAgICAgICAgIG91dGxpbmU6IDAgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGhyIHtcbiAgICAgICAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgIH1cblxuICAgICAgICBoMSxcbiAgICAgICAgaDIsXG4gICAgICAgIGgzLFxuICAgICAgICBoNCxcbiAgICAgICAgaDUsXG4gICAgICAgIGg2IHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgICAgfVxuXG4gICAgICAgIHAge1xuICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgICAgfVxuXG4gICAgICAgIGFiYnJbdGl0bGVdLFxuICAgICAgICBhYmJyW2RhdGEtb3JpZ2luYWwtdGl0bGVdIHtcbiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcbiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7XG4gICAgICAgICAgY3Vyc29yOiBoZWxwO1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgICAgICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcC1pbms6IG5vbmU7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uLXNraXAtaW5rOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgYWRkcmVzcyB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgICAgIH1cblxuICAgICAgICBvbCxcbiAgICAgICAgdWwsXG4gICAgICAgIGRsIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICAgIH1cblxuICAgICAgICBvbCBvbCxcbiAgICAgICAgdWwgdWwsXG4gICAgICAgIG9sIHVsLFxuICAgICAgICB1bCBvbCB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGR0IHtcbiAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICB9XG5cbiAgICAgICAgZGQge1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGJsb2NrcXVvdGUge1xuICAgICAgICAgIG1hcmdpbjogMCAwIDE2cHg7XG4gICAgICAgIH1cblxuICAgICAgICBiLFxuICAgICAgICBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG4gICAgICAgIH1cblxuICAgICAgICBzbWFsbCB7XG4gICAgICAgICAgZm9udC1zaXplOiA4MCU7XG4gICAgICAgIH1cblxuICAgICAgICBzdWIsXG4gICAgICAgIHN1cCB7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIGZvbnQtc2l6ZTogNzUlO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1YiB7XG4gICAgICAgICAgYm90dG9tOiAtMC4yNWVtO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VwIHtcbiAgICAgICAgICB0b3A6IC0wLjVlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGEge1xuICAgICAgICAgIGNvbG9yOiAjMDA3YmZmO1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGE6aG92ZXIge1xuICAgICAgICAgIGNvbG9yOiAjMDA1NmIzO1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB9XG5cbiAgICAgICAgYTpub3QoW2hyZWZdKSB7XG4gICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgYTpub3QoW2hyZWZdKTpob3ZlciB7XG4gICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJlLFxuICAgICAgICBjb2RlLFxuICAgICAgICBrYmQsXG4gICAgICAgIHNhbXAge1xuICAgICAgICAgIGZvbnQtZmFtaWx5OiBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsXG4gICAgICAgICAgICAnTGliZXJhdGlvbiBNb25vJywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJlIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgIH1cblxuICAgICAgICBmaWd1cmUge1xuICAgICAgICAgIG1hcmdpbjogMCAwIDE2cHg7XG4gICAgICAgIH1cblxuICAgICAgICBpbWcge1xuICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgYm9yZGVyLXN0eWxlOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIH1cblxuICAgICAgICB0YWJsZSB7XG4gICAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhcHRpb24ge1xuICAgICAgICAgIHBhZGRpbmctdG9wOiAxMnB4O1xuICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxMnB4O1xuICAgICAgICAgIGNvbG9yOiAjNmM3NTdkO1xuICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgY2FwdGlvbi1zaWRlOiBib3R0b207XG4gICAgICAgIH1cblxuICAgICAgICB0aCB7XG4gICAgICAgICAgdGV4dC1hbGlnbjogaW5oZXJpdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgYnV0dG9uOmZvY3VzIHtcbiAgICAgICAgICBvdXRsaW5lOiAxcHggZG90dGVkO1xuICAgICAgICAgIG91dGxpbmU6IDVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlucHV0LFxuICAgICAgICBidXR0b24sXG4gICAgICAgIHNlbGVjdCxcbiAgICAgICAgb3B0Z3JvdXAsXG4gICAgICAgIHRleHRhcmVhIHtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgICAgICB9XG5cbiAgICAgICAgYnV0dG9uLFxuICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgIH1cblxuICAgICAgICBidXR0b24sXG4gICAgICAgIHNlbGVjdCB7XG4gICAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICBzZWxlY3Qge1xuICAgICAgICAgIHdvcmQtd3JhcDogbm9ybWFsO1xuICAgICAgICB9XG5cbiAgICAgICAgYnV0dG9uLFxuICAgICAgICBbdHlwZT0nYnV0dG9uJ10sXG4gICAgICAgIFt0eXBlPSdyZXNldCddLFxuICAgICAgICBbdHlwZT0nc3VibWl0J10ge1xuICAgICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xuICAgICAgICB9XG5cbiAgICAgICAgYnV0dG9uOm5vdCg6ZGlzYWJsZWQpLFxuICAgICAgICBbdHlwZT0nYnV0dG9uJ106bm90KDpkaXNhYmxlZCksXG4gICAgICAgIFt0eXBlPSdyZXNldCddOm5vdCg6ZGlzYWJsZWQpLFxuICAgICAgICBbdHlwZT0nc3VibWl0J106bm90KDpkaXNhYmxlZCkge1xuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcbiAgICAgICAgW3R5cGU9J2J1dHRvbiddOjotbW96LWZvY3VzLWlubmVyLFxuICAgICAgICBbdHlwZT0ncmVzZXQnXTo6LW1vei1mb2N1cy1pbm5lcixcbiAgICAgICAgW3R5cGU9J3N1Ym1pdCddOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlucHV0W3R5cGU9J3JhZGlvJ10sXG4gICAgICAgIGlucHV0W3R5cGU9J2NoZWNrYm94J10ge1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlucHV0W3R5cGU9J2RhdGUnXSxcbiAgICAgICAgaW5wdXRbdHlwZT0ndGltZSddLFxuICAgICAgICBpbnB1dFt0eXBlPSdkYXRldGltZS1sb2NhbCddLFxuICAgICAgICBpbnB1dFt0eXBlPSdtb250aCddIHtcbiAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGxpc3Rib3g7XG4gICAgICAgIH1cblxuICAgICAgICB0ZXh0YXJlYSB7XG4gICAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZpZWxkc2V0IHtcbiAgICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgbGVnZW5kIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICAgICAgZm9udC1zaXplOiAyNHB4O1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9ncmVzcyB7XG4gICAgICAgICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICAgICAgICB9XG5cbiAgICAgICAgW3R5cGU9J251bWJlciddOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuICAgICAgICBbdHlwZT0nbnVtYmVyJ106Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIFt0eXBlPSdzZWFyY2gnXSB7XG4gICAgICAgICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgW3R5cGU9J3NlYXJjaCddOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICA6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xuICAgICAgICB9XG5cbiAgICAgICAgb3V0cHV0IHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICBzdW1tYXJ5IHtcbiAgICAgICAgICBkaXNwbGF5OiBsaXN0LWl0ZW07XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgdGVtcGxhdGUge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICBbaGlkZGVuXSB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICBgKX1mdW5jdGlvbiBwdXNoRXJyb3JGaWx0ZXJEdXBsaWNhdGVzKGUsdCl7cmV0dXJuWy4uLmUuZmlsdGVyKChlPT5lLmV2ZW50LnJlYXNvbiE9PXQuZXZlbnQucmVhc29uKSksdF19ZnVuY3Rpb24gcmVkdWNlcihyLGwpe3N3aXRjaChsLnR5cGUpe2Nhc2UgZTp7cmV0dXJuey4uLnIsYnVpbGRFcnJvcjpudWxsfX1jYXNlIHQ6e3JldHVybnsuLi5yLGJ1aWxkRXJyb3I6bC5tZXNzYWdlfX1jYXNlIGE6e3JldHVybnsuLi5yLHJlZnJlc2hTdGF0ZTp7dHlwZTpcInBlbmRpbmdcIixlcnJvcnM6W119fX1jYXNlIG46e3JldHVybnsuLi5yLGJ1aWxkRXJyb3I6bnVsbCxlcnJvcnM6ci5yZWZyZXNoU3RhdGUudHlwZT09PVwicGVuZGluZ1wiP3IucmVmcmVzaFN0YXRlLmVycm9yczpbXSxyZWZyZXNoU3RhdGU6e3R5cGU6XCJpZGxlXCJ9fX1jYXNlIG86Y2FzZSBpOntzd2l0Y2goci5yZWZyZXNoU3RhdGUudHlwZSl7Y2FzZVwiaWRsZVwiOntyZXR1cm57Li4ucixuZXh0SWQ6ci5uZXh0SWQrMSxlcnJvcnM6cHVzaEVycm9yRmlsdGVyRHVwbGljYXRlcyhyLmVycm9ycyx7aWQ6ci5uZXh0SWQsZXZlbnQ6bH0pfX1jYXNlXCJwZW5kaW5nXCI6e3JldHVybnsuLi5yLG5leHRJZDpyLm5leHRJZCsxLHJlZnJlc2hTdGF0ZTp7Li4uci5yZWZyZXNoU3RhdGUsZXJyb3JzOnB1c2hFcnJvckZpbHRlckR1cGxpY2F0ZXMoci5yZWZyZXNoU3RhdGUuZXJyb3JzLHtpZDpyLm5leHRJZCxldmVudDpsfSl9fX1kZWZhdWx0OmNvbnN0IGU9ci5yZWZyZXNoU3RhdGU7cmV0dXJuIHJ9fWRlZmF1bHQ6e2NvbnN0IGU9bDtyZXR1cm4gcn19fWNvbnN0IHNob3VsZFByZXZlbnREaXNwbGF5PShlLHQpPT57aWYoIXR8fCFlKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHQuaW5jbHVkZXMoZSl9O2NvbnN0IEt0PWZ1bmN0aW9uIFJlYWN0RGV2T3ZlcmxheSh7Y2hpbGRyZW46ZSxwcmV2ZW50RGlzcGxheTp0LGdsb2JhbE92ZXJsYXk6cn0pe2NvbnN0W24sYV09cC51c2VSZWR1Y2VyKHJlZHVjZXIse25leHRJZDoxLGJ1aWxkRXJyb3I6bnVsbCxlcnJvcnM6W10scmVmcmVzaFN0YXRlOnt0eXBlOlwiaWRsZVwifX0pO3AudXNlRWZmZWN0KCgoKT0+e29uKGEpO3JldHVybiBmdW5jdGlvbigpe29mZihhKX19KSxbYV0pO2NvbnN0IG89cC51c2VDYWxsYmFjaygoKGUsdCk9Pnt9KSxbXSk7Y29uc3QgaT1uLmJ1aWxkRXJyb3IhPW51bGw7Y29uc3QgbD1Cb29sZWFuKG4uZXJyb3JzLmxlbmd0aCk7Y29uc3Qgcz1pP1wiYnVpbGRcIjpsP1wicnVudGltZVwiOm51bGw7Y29uc3QgdT1zIT09bnVsbDtyZXR1cm4gcC5jcmVhdGVFbGVtZW50KHAuRnJhZ21lbnQsbnVsbCxwLmNyZWF0ZUVsZW1lbnQoRXJyb3JCb3VuZGFyeSx7Z2xvYmFsT3ZlcmxheTpyLGlzTW91bnRlZDp1LG9uRXJyb3I6b30sZT8/bnVsbCksdT9wLmNyZWF0ZUVsZW1lbnQoZyx7Z2xvYmFsT3ZlcmxheTpyfSxwLmNyZWF0ZUVsZW1lbnQoQ3NzUmVzZXQsbnVsbCkscC5jcmVhdGVFbGVtZW50KEJhc2UsbnVsbCkscC5jcmVhdGVFbGVtZW50KENvbXBvbmVudFN0eWxlcyxudWxsKSxzaG91bGRQcmV2ZW50RGlzcGxheShzLHQpP251bGw6aT9wLmNyZWF0ZUVsZW1lbnQoanQse21lc3NhZ2U6bi5idWlsZEVycm9yfSk6bD9wLmNyZWF0ZUVsZW1lbnQocXQse2Vycm9yczpuLmVycm9yc30pOnVuZGVmaW5lZCk6dW5kZWZpbmVkKX07dmFyIFp0PUt0OygwLGYucGF0Y2hDb25zb2xlRXJyb3IpKCk7bGV0IFV0PWZhbHNlO2xldCBHdD11bmRlZmluZWQ7ZnVuY3Rpb24gb25VbmhhbmRsZWRFcnJvcihlKXtjb25zdCB0PWU/LmVycm9yO2lmKCF0fHwhKHQgaW5zdGFuY2VvZiBFcnJvcil8fHR5cGVvZiB0LnN0YWNrIT09XCJzdHJpbmdcIil7cmV0dXJufWlmKHQubWVzc2FnZS5tYXRjaCgvKGh5ZHJhdGlvbnxjb250ZW50IGRvZXMgbm90IG1hdGNofGRpZCBub3QgbWF0Y2gpL2kpKXtpZihmLmh5ZHJhdGlvbkVycm9yV2FybmluZyl7dC5tZXNzYWdlKz1cIlxcblxcblwiK2YuaHlkcmF0aW9uRXJyb3JXYXJuaW5nfXQubWVzc2FnZSs9YFxcblxcblNlZSBtb3JlIGluZm8gaGVyZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvcmVhY3QtaHlkcmF0aW9uLWVycm9yYH1jb25zdCByPXQ7Y29uc3Qgbj10eXBlb2YgZi5oeWRyYXRpb25FcnJvckNvbXBvbmVudFN0YWNrPT09XCJzdHJpbmdcIj8oMCxkLnBhcnNlQ29tcG9uZW50U3RhY2spKGYuaHlkcmF0aW9uRXJyb3JDb21wb25lbnRTdGFjaykubWFwKChlPT5lLmNvbXBvbmVudCkpOnVuZGVmaW5lZDtlbWl0KHt0eXBlOm8scmVhc29uOnQsZnJhbWVzOnBhcnNlU3RhY2soci5zdGFjayksY29tcG9uZW50U3RhY2s6bn0pfWZ1bmN0aW9uIG9uVW5oYW5kbGVkUmVqZWN0aW9uKGUpe2NvbnN0IHQ9ZT8ucmVhc29uO2lmKCF0fHwhKHQgaW5zdGFuY2VvZiBFcnJvcil8fHR5cGVvZiB0LnN0YWNrIT09XCJzdHJpbmdcIil7cmV0dXJufWNvbnN0IHI9dDtlbWl0KHt0eXBlOmkscmVhc29uOnQsZnJhbWVzOnBhcnNlU3RhY2soci5zdGFjayl9KX1mdW5jdGlvbiByZWdpc3Rlcigpe2lmKFV0KXtyZXR1cm59VXQ9dHJ1ZTt0cnl7Y29uc3QgZT1FcnJvci5zdGFja1RyYWNlTGltaXQ7RXJyb3Iuc3RhY2tUcmFjZUxpbWl0PTUwO0d0PWV9Y2F0Y2h7fXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIixvblVuaGFuZGxlZEVycm9yKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInVuaGFuZGxlZHJlamVjdGlvblwiLG9uVW5oYW5kbGVkUmVqZWN0aW9uKX1mdW5jdGlvbiB1bnJlZ2lzdGVyKCl7aWYoIVV0KXtyZXR1cm59VXQ9ZmFsc2U7aWYoR3QhPT11bmRlZmluZWQpe3RyeXtFcnJvci5zdGFja1RyYWNlTGltaXQ9R3R9Y2F0Y2h7fUd0PXVuZGVmaW5lZH13aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsb25VbmhhbmRsZWRFcnJvcik7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ1bmhhbmRsZWRyZWplY3Rpb25cIixvblVuaGFuZGxlZFJlamVjdGlvbil9ZnVuY3Rpb24gb25CdWlsZE9rKCl7ZW1pdCh7dHlwZTplfSl9ZnVuY3Rpb24gb25CdWlsZEVycm9yKGUpe2VtaXQoe3R5cGU6dCxtZXNzYWdlOmV9KX1mdW5jdGlvbiBvblJlZnJlc2goKXtlbWl0KHt0eXBlOm59KX1mdW5jdGlvbiBvbkJlZm9yZVJlZnJlc2goKXtlbWl0KHt0eXBlOmF9KX19KCk7bW9kdWxlLmV4cG9ydHM9cn0pKCk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/add-base-path.js": +/*!********************************************************!*\ + !*** ./node_modules/next/dist/client/add-base-path.js ***! + \********************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"addBasePath\", ({\n enumerable: true,\n get: function() {\n return addBasePath;\n }\n}));\nconst _addpathprefix = __webpack_require__(/*! ../shared/lib/router/utils/add-path-prefix */ \"./node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js\");\nconst _normalizetrailingslash = __webpack_require__(/*! ./normalize-trailing-slash */ \"./node_modules/next/dist/client/normalize-trailing-slash.js\");\nconst basePath = false || \"\";\nfunction addBasePath(path, required) {\n if (false) {}\n return (0, _normalizetrailingslash.normalizePathTrailingSlash)((0, _addpathprefix.addPathPrefix)(path, basePath));\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=add-base-path.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9hZGQtYmFzZS1wYXRoLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTyxJQUFJO0FBQ2YsQ0FBQyxFQUFDO0FBQ0ZILCtDQUE4QztJQUMxQ0ksWUFBWSxJQUFJO0lBQ2hCQyxLQUFLLFdBQVc7UUFDWixPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsTUFBTUMsaUJBQWlCQyxtQkFBT0EsQ0FBQyx1SEFBNEM7QUFDM0UsTUFBTUMsMEJBQTBCRCxtQkFBT0EsQ0FBQywrRkFBNEI7QUFDcEUsTUFBTUUsV0FBV0MsTUFBa0MsSUFBSTtBQUN2RCxTQUFTTCxZQUFZUSxJQUFJLEVBQUVDLFFBQVEsRUFBRTtJQUNqQyxJQUFJSixLQUEwQyxFQUFFLEVBSS9DO0lBQ0QsT0FBTyxDQUFDLEdBQUdGLHdCQUF3QlEsMEJBQTBCLEVBQUUsQ0FBQyxHQUFHVixlQUFlVyxhQUFhLEVBQUVKLE1BQU1KO0FBQzNHO0FBRUEsSUFBSSxDQUFDLE9BQU9SLFFBQVFpQixPQUFPLEtBQUssY0FBZSxPQUFPakIsUUFBUWlCLE9BQU8sS0FBSyxZQUFZakIsUUFBUWlCLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT2pCLFFBQVFpQixPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLcEIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRaUIsT0FBTyxFQUFFLGNBQWM7UUFBRWhCLE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPcUIsTUFBTSxDQUFDbkIsUUFBUWlCLE9BQU8sRUFBRWpCO0lBQy9Cb0IsT0FBT3BCLE9BQU8sR0FBR0EsUUFBUWlCLE9BQU87QUFDbEMsQ0FBQyxDQUVELHlDQUF5QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9hZGQtYmFzZS1wYXRoLmpzPzYxMzEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJhZGRCYXNlUGF0aFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYWRkQmFzZVBhdGg7XG4gICAgfVxufSk7XG5jb25zdCBfYWRkcGF0aHByZWZpeCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9hZGQtcGF0aC1wcmVmaXhcIik7XG5jb25zdCBfbm9ybWFsaXpldHJhaWxpbmdzbGFzaCA9IHJlcXVpcmUoXCIuL25vcm1hbGl6ZS10cmFpbGluZy1zbGFzaFwiKTtcbmNvbnN0IGJhc2VQYXRoID0gcHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSCB8fCBcIlwiO1xuZnVuY3Rpb24gYWRkQmFzZVBhdGgocGF0aCwgcmVxdWlyZWQpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX01BTlVBTF9DTElFTlRfQkFTRV9QQVRIKSB7XG4gICAgICAgIGlmICghcmVxdWlyZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAoMCwgX25vcm1hbGl6ZXRyYWlsaW5nc2xhc2gubm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2gpKCgwLCBfYWRkcGF0aHByZWZpeC5hZGRQYXRoUHJlZml4KShwYXRoLCBiYXNlUGF0aCkpO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1hZGQtYmFzZS1wYXRoLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJhZGRCYXNlUGF0aCIsIl9hZGRwYXRocHJlZml4IiwicmVxdWlyZSIsIl9ub3JtYWxpemV0cmFpbGluZ3NsYXNoIiwiYmFzZVBhdGgiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1JPVVRFUl9CQVNFUEFUSCIsInBhdGgiLCJyZXF1aXJlZCIsIl9fTkVYVF9NQU5VQUxfQ0xJRU5UX0JBU0VfUEFUSCIsIm5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoIiwiYWRkUGF0aFByZWZpeCIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/add-base-path.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/add-locale.js": +/*!*****************************************************!*\ + !*** ./node_modules/next/dist/client/add-locale.js ***! + \*****************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"addLocale\", ({\n enumerable: true,\n get: function() {\n return addLocale;\n }\n}));\nconst _normalizetrailingslash = __webpack_require__(/*! ./normalize-trailing-slash */ \"./node_modules/next/dist/client/normalize-trailing-slash.js\");\nconst addLocale = function(path) {\n for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n args[_key - 1] = arguments[_key];\n }\n if (false) {}\n return path;\n};\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=add-locale.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9hZGQtbG9jYWxlLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTyxJQUFJO0FBQ2YsQ0FBQyxFQUFDO0FBQ0ZILDZDQUE0QztJQUN4Q0ksWUFBWSxJQUFJO0lBQ2hCQyxLQUFLLFdBQVc7UUFDWixPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsTUFBTUMsMEJBQTBCQyxtQkFBT0EsQ0FBQywrRkFBNEI7QUFDcEUsTUFBTUYsWUFBWSxTQUFTRyxJQUFJLEVBQUU7SUFDN0IsSUFBSSxJQUFJQyxPQUFPQyxVQUFVQyxNQUFNLEVBQUVDLE9BQU8sSUFBSUMsTUFBTUosT0FBTyxJQUFJQSxPQUFPLElBQUksQ0FBQyxHQUFHSyxPQUFPLEdBQUdBLE9BQU9MLE1BQU1LLE9BQU87UUFDdEdGLElBQUksQ0FBQ0UsT0FBTyxFQUFFLEdBQUdKLFNBQVMsQ0FBQ0ksS0FBSztJQUNwQztJQUNBLElBQUlDLEtBQStCLEVBQUUsRUFFcEM7SUFDRCxPQUFPUDtBQUNYO0FBRUEsSUFBSSxDQUFDLE9BQU9QLFFBQVFrQixPQUFPLEtBQUssY0FBZSxPQUFPbEIsUUFBUWtCLE9BQU8sS0FBSyxZQUFZbEIsUUFBUWtCLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT2xCLFFBQVFrQixPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLckIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRa0IsT0FBTyxFQUFFLGNBQWM7UUFBRWpCLE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPc0IsTUFBTSxDQUFDcEIsUUFBUWtCLE9BQU8sRUFBRWxCO0lBQy9CcUIsT0FBT3JCLE9BQU8sR0FBR0EsUUFBUWtCLE9BQU87QUFDbEMsQ0FBQyxDQUVELHNDQUFzQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9hZGQtbG9jYWxlLmpzP2UyZDkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJhZGRMb2NhbGVcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGFkZExvY2FsZTtcbiAgICB9XG59KTtcbmNvbnN0IF9ub3JtYWxpemV0cmFpbGluZ3NsYXNoID0gcmVxdWlyZShcIi4vbm9ybWFsaXplLXRyYWlsaW5nLXNsYXNoXCIpO1xuY29uc3QgYWRkTG9jYWxlID0gZnVuY3Rpb24ocGF0aCkge1xuICAgIGZvcih2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKyl7XG4gICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICByZXR1cm4gKDAsIF9ub3JtYWxpemV0cmFpbGluZ3NsYXNoLm5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoKShyZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvYWRkLWxvY2FsZVwiKS5hZGRMb2NhbGUocGF0aCwgLi4uYXJncykpO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aDtcbn07XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFkZC1sb2NhbGUuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsImFkZExvY2FsZSIsIl9ub3JtYWxpemV0cmFpbGluZ3NsYXNoIiwicmVxdWlyZSIsInBhdGgiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfSTE4Tl9TVVBQT1JUIiwibm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2giLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/add-locale.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/detect-domain-locale.js": +/*!***************************************************************!*\ + !*** ./node_modules/next/dist/client/detect-domain-locale.js ***! + \***************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"detectDomainLocale\", ({\n enumerable: true,\n get: function() {\n return detectDomainLocale;\n }\n}));\nconst detectDomainLocale = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (false) {}\n};\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=detect-domain-locale.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXRlY3QtZG9tYWluLWxvY2FsZS5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU8sSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGSCxzREFBcUQ7SUFDakRJLFlBQVksSUFBSTtJQUNoQkMsS0FBSyxXQUFXO1FBQ1osT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLE1BQU1BLHFCQUFxQixXQUFXO0lBQ2xDLElBQUksSUFBSUMsT0FBT0MsVUFBVUMsTUFBTSxFQUFFQyxPQUFPLElBQUlDLE1BQU1KLE9BQU9LLE9BQU8sR0FBR0EsT0FBT0wsTUFBTUssT0FBTztRQUNuRkYsSUFBSSxDQUFDRSxLQUFLLEdBQUdKLFNBQVMsQ0FBQ0ksS0FBSztJQUNoQztJQUNBLElBQUlDLEtBQStCLEVBQUUsRUFFcEM7QUFDTDtBQUVBLElBQUksQ0FBQyxPQUFPWCxRQUFRZSxPQUFPLEtBQUssY0FBZSxPQUFPZixRQUFRZSxPQUFPLEtBQUssWUFBWWYsUUFBUWUsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPZixRQUFRZSxPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLbEIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRZSxPQUFPLEVBQUUsY0FBYztRQUFFZCxPQUFPLElBQUk7SUFBQztJQUNuRUgsT0FBT21CLE1BQU0sQ0FBQ2pCLFFBQVFlLE9BQU8sRUFBRWY7SUFDL0JrQixPQUFPbEIsT0FBTyxHQUFHQSxRQUFRZSxPQUFPO0FBQ2xDLENBQUMsQ0FFRCxnREFBZ0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV0ZWN0LWRvbWFpbi1sb2NhbGUuanM/MDNiNSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRldGVjdERvbWFpbkxvY2FsZVwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZGV0ZWN0RG9tYWluTG9jYWxlO1xuICAgIH1cbn0pO1xuY29uc3QgZGV0ZWN0RG9tYWluTG9jYWxlID0gZnVuY3Rpb24oKSB7XG4gICAgZm9yKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5Kyspe1xuICAgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICByZXR1cm4gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvaTE4bi9kZXRlY3QtZG9tYWluLWxvY2FsZVwiKS5kZXRlY3REb21haW5Mb2NhbGUoLi4uYXJncyk7XG4gICAgfVxufTtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGV0ZWN0LWRvbWFpbi1sb2NhbGUuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsImRldGVjdERvbWFpbkxvY2FsZSIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9JMThOX1NVUFBPUlQiLCJyZXF1aXJlIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/detect-domain-locale.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/dev/dev-build-watcher.js": +/*!****************************************************************!*\ + !*** ./node_modules/next/dist/client/dev/dev-build-watcher.js ***! + \****************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("// TODO: Remove use of `any` type. Fix no-use-before-define violations.\n/* eslint-disable @typescript-eslint/no-use-before-define */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return initializeBuildWatcher;\n }\n}));\nconst _websocket = __webpack_require__(/*! ./error-overlay/websocket */ \"./node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nfunction initializeBuildWatcher(toggleCallback, position) {\n if (position === void 0) position = \"bottom-right\";\n const shadowHost = document.createElement(\"div\");\n const [verticalProperty, horizontalProperty] = position.split(\"-\");\n shadowHost.id = \"__next-build-watcher\";\n // Make sure container is fixed and on a high zIndex so it shows\n shadowHost.style.position = \"fixed\";\n shadowHost.style[verticalProperty] = \"10px\";\n shadowHost.style[horizontalProperty] = \"20px\";\n shadowHost.style.width = 0;\n shadowHost.style.height = 0;\n shadowHost.style.zIndex = 99999;\n document.body.appendChild(shadowHost);\n let shadowRoot;\n let prefix = \"\";\n if (shadowHost.attachShadow) {\n shadowRoot = shadowHost.attachShadow({\n mode: \"open\"\n });\n } else {\n // If attachShadow is undefined then the browser does not support\n // the Shadow DOM, we need to prefix all the names so there\n // will be no conflicts\n shadowRoot = shadowHost;\n prefix = \"__next-build-watcher-\";\n }\n // Container\n const container = createContainer(prefix);\n shadowRoot.appendChild(container);\n // CSS\n const css = createCss(prefix, {\n horizontalProperty,\n verticalProperty\n });\n shadowRoot.appendChild(css);\n // State\n let isVisible = false;\n let isBuilding = false;\n let timeoutId = null;\n // Handle events\n (0, _websocket.addMessageListener)((event)=>{\n // This is the heartbeat event\n if (event.data === \"\\uD83D\\uDC93\") {\n return;\n }\n try {\n handleMessage(event);\n } catch (e) {}\n });\n function handleMessage(event) {\n const obj = typeof event === \"string\" ? {\n action: event\n } : JSON.parse(event.data);\n // eslint-disable-next-line default-case\n switch(obj.action){\n case \"building\":\n timeoutId && clearTimeout(timeoutId);\n isVisible = true;\n isBuilding = true;\n updateContainer();\n break;\n case \"built\":\n case \"sync\":\n isBuilding = false;\n // Wait for the fade out transition to complete\n timeoutId = setTimeout(()=>{\n isVisible = false;\n updateContainer();\n }, 100);\n updateContainer();\n break;\n }\n }\n toggleCallback(handleMessage);\n function updateContainer() {\n if (isBuilding) {\n container.classList.add(\"\" + prefix + \"building\");\n } else {\n container.classList.remove(\"\" + prefix + \"building\");\n }\n if (isVisible) {\n container.classList.add(\"\" + prefix + \"visible\");\n } else {\n container.classList.remove(\"\" + prefix + \"visible\");\n }\n }\n}\nfunction createContainer(prefix) {\n const container = document.createElement(\"div\");\n container.id = \"\" + prefix + \"container\";\n container.innerHTML = '\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n ';\n return container;\n}\nfunction createCss(prefix, param) {\n let { horizontalProperty , verticalProperty } = param;\n const css = document.createElement(\"style\");\n css.textContent = \"\\n #\" + prefix + \"container {\\n position: absolute;\\n \" + verticalProperty + \": 10px;\\n \" + horizontalProperty + \": 30px;\\n\\n border-radius: 3px;\\n background: #000;\\n color: #fff;\\n font: initial;\\n cursor: initial;\\n letter-spacing: initial;\\n text-shadow: initial;\\n text-transform: initial;\\n visibility: initial;\\n\\n padding: 7px 10px 8px 10px;\\n align-items: center;\\n box-shadow: 0 11px 40px 0 rgba(0, 0, 0, 0.25), 0 2px 10px 0 rgba(0, 0, 0, 0.12);\\n\\n display: none;\\n opacity: 0;\\n transition: opacity 0.1s ease, \" + verticalProperty + \" 0.1s ease;\\n animation: \" + prefix + \"fade-in 0.1s ease-in-out;\\n }\\n\\n #\" + prefix + \"container.\" + prefix + \"visible {\\n display: flex;\\n }\\n\\n #\" + prefix + \"container.\" + prefix + \"building {\\n \" + verticalProperty + \": 20px;\\n opacity: 1;\\n }\\n\\n #\" + prefix + \"icon-wrapper {\\n width: 16px;\\n height: 16px;\\n }\\n\\n #\" + prefix + \"icon-wrapper > svg {\\n width: 100%;\\n height: 100%;\\n }\\n\\n #\" + prefix + \"icon-group {\\n animation: \" + prefix + \"strokedash 1s ease-in-out both infinite;\\n }\\n\\n @keyframes \" + prefix + \"fade-in {\\n from {\\n \" + verticalProperty + \": 10px;\\n opacity: 0;\\n }\\n to {\\n \" + verticalProperty + \": 20px;\\n opacity: 1;\\n }\\n }\\n\\n @keyframes \" + prefix + \"strokedash {\\n 0% {\\n stroke-dasharray: 0 226;\\n }\\n 80%,\\n 100% {\\n stroke-dasharray: 659 226;\\n }\\n }\\n \";\n return css;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=dev-build-watcher.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZGV2LWJ1aWxkLXdhdGNoZXIuanMuanMiLCJtYXBwaW5ncyI6IkFBQUEsdUVBQXVFO0FBQ3ZFLDBEQUEwRCxHQUFnQjtBQUMxRUEsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRkgsMkNBQTBDO0lBQ3RDSSxZQUFZLElBQUk7SUFDaEJDLEtBQUssV0FBVztRQUNaLE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQyxhQUFhQyxtQkFBT0EsQ0FBQyxpR0FBMkI7QUFDdEQsU0FBU0YsdUJBQXVCRyxjQUFjLEVBQUVDLFFBQVEsRUFBRTtJQUN0RCxJQUFJQSxhQUFhLEtBQUssR0FBR0EsV0FBVztJQUNwQyxNQUFNQyxhQUFhQyxTQUFTQyxhQUFhLENBQUM7SUFDMUMsTUFBTSxDQUFDQyxrQkFBa0JDLG1CQUFtQixHQUFHTCxTQUFTTSxLQUFLLENBQUM7SUFDOURMLFdBQVdNLEVBQUUsR0FBRztJQUNoQixnRUFBZ0U7SUFDaEVOLFdBQVdPLEtBQUssQ0FBQ1IsUUFBUSxHQUFHO0lBQzVCQyxXQUFXTyxLQUFLLENBQUNKLGlCQUFpQixHQUFHO0lBQ3JDSCxXQUFXTyxLQUFLLENBQUNILG1CQUFtQixHQUFHO0lBQ3ZDSixXQUFXTyxLQUFLLENBQUNDLEtBQUssR0FBRztJQUN6QlIsV0FBV08sS0FBSyxDQUFDRSxNQUFNLEdBQUc7SUFDMUJULFdBQVdPLEtBQUssQ0FBQ0csTUFBTSxHQUFHO0lBQzFCVCxTQUFTVSxJQUFJLENBQUNDLFdBQVcsQ0FBQ1o7SUFDMUIsSUFBSWE7SUFDSixJQUFJQyxTQUFTO0lBQ2IsSUFBSWQsV0FBV2UsWUFBWSxFQUFFO1FBQ3pCRixhQUFhYixXQUFXZSxZQUFZLENBQUM7WUFDakNDLE1BQU07UUFDVjtJQUNKLE9BQU87UUFDSCxpRUFBaUU7UUFDakUsMkRBQTJEO1FBQzNELHVCQUF1QjtRQUN2QkgsYUFBYWI7UUFDYmMsU0FBUztJ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LENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLdEQsT0FBT0MsY0FBYyxDQUFDQyxRQUFRbUQsT0FBTyxFQUFFLGNBQWM7UUFBRWxELE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPdUQsTUFBTSxDQUFDckQsUUFBUW1ELE9BQU8sRUFBRW5EO0lBQy9Cc0QsT0FBT3RELE9BQU8sR0FBR0EsUUFBUW1ELE9BQU87QUFDbEMsQ0FBQyxDQUVELDZDQUE2QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZGV2LWJ1aWxkLXdhdGNoZXIuanM/N2IzNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUT0RPOiBSZW1vdmUgdXNlIG9mIGBhbnlgIHR5cGUuIEZpeCBuby11c2UtYmVmb3JlLWRlZmluZSB2aW9sYXRpb25zLlxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lICovIFwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGVmYXVsdFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaW5pdGlhbGl6ZUJ1aWxkV2F0Y2hlcjtcbiAgICB9XG59KTtcbmNvbnN0IF93ZWJzb2NrZXQgPSByZXF1aXJlKFwiLi9lcnJvci1vdmVybGF5L3dlYnNvY2tldFwiKTtcbmZ1bmN0aW9uIGluaXRpYWxpemVCdWlsZFdhdGNoZXIodG9nZ2xlQ2FsbGJhY2ssIHBvc2l0aW9uKSB7XG4gICAgaWYgKHBvc2l0aW9uID09PSB2b2lkIDApIHBvc2l0aW9uID0gXCJib3R0b20tcmlnaHRcIjtcbiAgICBjb25zdCBzaGFkb3dIb3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICBjb25zdCBbdmVydGljYWxQcm9wZXJ0eSwgaG9yaXpvbnRhbFByb3BlcnR5XSA9IHBvc2l0aW9uLnNwbGl0KFwiLVwiKTtcbiAgICBzaGFkb3dIb3N0LmlkID0gXCJfX25leHQtYnVpbGQtd2F0Y2hlclwiO1xuICAgIC8vIE1ha2Ugc3VyZSBjb250YWluZXIgaXMgZml4ZWQgYW5kIG9uIGEgaGlnaCB6SW5kZXggc28gaXQgc2hvd3NcbiAgICBzaGFkb3dIb3N0LnN0eWxlLnBvc2l0aW9uID0gXCJmaXhlZFwiO1xuICAgIHNoYWRvd0hvc3Quc3R5bGVbdmVydGljYWxQcm9wZXJ0eV0gPSBcIjEwcHhcIjtcbiAgICBzaGFkb3dIb3N0LnN0eWxlW2hvcml6b250YWxQcm9wZXJ0eV0gPSBcIjIwcHhcIjtcbiAgICBzaGFkb3dIb3N0LnN0eWxlLndpZHRoID0gMDtcbiAgICBzaGFkb3dIb3N0LnN0eWxlLmhlaWdodCA9IDA7XG4gICAgc2hhZG93SG9zdC5zdHlsZS56SW5kZXggPSA5OTk5OTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNoYWRvd0hvc3QpO1xuICAgIGxldCBzaGFkb3dSb290O1xuICAgIGxldCBwcmVmaXggPSBcIlwiO1xuICAgIGlmIChzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdykge1xuICAgICAgICBzaGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRhY2hTaGFkb3coe1xuICAgICAgICAgICAgbW9kZTogXCJvcGVuXCJcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgYXR0YWNoU2hhZG93IGlzIHVuZGVmaW5lZCB0aGVuIHRoZSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnRcbiAgICAgICAgLy8gdGhlIFNoYWRvdyBET00sIHdlIG5lZWQgdG8gcHJlZml4IGFsbCB0aGUgbmFtZXMgc28gdGhlcmVcbiAgICAgICAgLy8gd2lsbCBiZSBubyBjb25mbGljdHNcbiAgICAgICAgc2hhZG93Um9vdCA9IHNoYWRvd0hvc3Q7XG4gICAgICAgIHByZWZpeCA9IFwiX19uZXh0LWJ1aWxkLXdhdGNoZXItXCI7XG4gICAgfVxuICAgIC8vIENvbnRhaW5lclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNyZWF0ZUNvbnRhaW5lcihwcmVmaXgpO1xuICAgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICAvLyBDU1NcbiAgICBjb25zdCBjc3MgPSBjcmVhdGVDc3MocHJlZml4LCB7XG4gICAgICAgIGhvcml6b250YWxQcm9wZXJ0eSxcbiAgICAgICAgdmVydGljYWxQcm9wZXJ0eVxuICAgIH0pO1xuICAgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoY3NzKTtcbiAgICAvLyBTdGF0ZVxuICAgIGxldCBpc1Zpc2libGUgPSBmYWxzZTtcbiAgICBsZXQgaXNCdWlsZGluZyA9IGZhbHNlO1xuICAgIGxldCB0aW1lb3V0SWQgPSBudWxsO1xuICAgIC8vIEhhbmRsZSBldmVudHNcbiAgICAoMCwgX3dlYnNvY2tldC5hZGRNZXNzYWdlTGlzdGVuZXIpKChldmVudCk9PntcbiAgICAgICAgLy8gVGhpcyBpcyB0aGUgaGVhcnRiZWF0IGV2ZW50XG4gICAgICAgIGlmIChldmVudC5kYXRhID09PSBcIlxcdUQ4M0RcXHVEQzkzXCIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaGFuZGxlTWVzc2FnZShldmVudCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShldmVudCkge1xuICAgICAgICBjb25zdCBvYmogPSB0eXBlb2YgZXZlbnQgPT09IFwic3RyaW5nXCIgPyB7XG4gICAgICAgICAgICBhY3Rpb246IGV2ZW50XG4gICAgICAgIH0gOiBKU09OLnBhcnNlKGV2ZW50LmRhdGEpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVmYXVsdC1jYXNlXG4gICAgICAgIHN3aXRjaChvYmouYWN0aW9uKXtcbiAgICAgICAgICAgIGNhc2UgXCJidWlsZGluZ1wiOlxuICAgICAgICAgICAgICAgIHRpbWVvdXRJZCAmJiBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICAgICAgICBpc1Zpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlzQnVpbGRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHVwZGF0ZUNvbnRhaW5lcigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImJ1aWx0XCI6XG4gICAgICAgICAgICBjYXNlIFwic3luY1wiOlxuICAgICAgICAgICAgICAgIGlzQnVpbGRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAvLyBXYWl0IGZvciB0aGUgZmFkZSBvdXQgdHJhbnNpdGlvbiB0byBjb21wbGV0ZVxuICAgICAgICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgICAgICAgICAgaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNvbnRhaW5lcigpO1xuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgdXBkYXRlQ29udGFpbmVyKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdG9nZ2xlQ2FsbGJhY2soaGFuZGxlTWVzc2FnZSk7XG4gICAgZnVuY3Rpb24gdXBkYXRlQ29udGFpbmVyKCkge1xuICAgICAgICBpZiAoaXNCdWlsZGluZykge1xuICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJcIiArIHByZWZpeCArIFwiYnVpbGRpbmdcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZShcIlwiICsgcHJlZml4ICsgXCJidWlsZGluZ1wiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChcIlwiICsgcHJlZml4ICsgXCJ2aXNpYmxlXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoXCJcIiArIHByZWZpeCArIFwidmlzaWJsZVwiKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZUNvbnRhaW5lcihwcmVmaXgpIHtcbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIGNvbnRhaW5lci5pZCA9IFwiXCIgKyBwcmVmaXggKyBcImNvbnRhaW5lclwiO1xuICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSAnXFxuICAgIDxkaXYgaWQ9XCInICsgcHJlZml4ICsgJ2ljb24td3JhcHBlclwiPlxcbiAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyMjYgMjAwXCI+XFxuICAgICAgICA8ZGVmcz5cXG4gICAgICAgICAgPGxpbmVhckdyYWRpZW50XFxuICAgICAgICAgICAgeDE9XCIxMTQuNzIwNzc1JVwiXFxuICAgICAgICAgICAgeTE9XCIxODEuMjgzMjQ1JVwiXFxuICAgICAgICAgICAgeDI9XCIzOS41Mzk5MzA2JVwiXFxuICAgICAgICAgICAgeTI9XCIxMDAlXCJcXG4gICAgICAgICAgICBpZD1cIicgKyBwcmVmaXggKyAnbGluZWFyLWdyYWRpZW50XCJcXG4gICAgICAgICAgPlxcbiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCIjMDAwMDAwXCIgb2Zmc2V0PVwiMCVcIiAvPlxcbiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCIjRkZGRkZGXCIgb2Zmc2V0PVwiMTAwJVwiIC8+XFxuICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XFxuICAgICAgICA8L2RlZnM+XFxuICAgICAgICA8ZyBpZD1cIicgKyBwcmVmaXggKyAnaWNvbi1ncm91cFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwidXJsKCMnICsgcHJlZml4ICsgJ2xpbmVhci1ncmFkaWVudClcIiBzdHJva2Utd2lkdGg9XCIxOFwiPlxcbiAgICAgICAgICA8cGF0aCBkPVwiTTExMyw1LjA4MjE5MTE3IEw0LjI4MzkzODAxLDE5Ny41IEwyMjEuNzE2MDYyLDE5Ny41IEwxMTMsNS4wODIxOTExNyBaXCIgLz5cXG4gICAgICAgIDwvZz5cXG4gICAgICA8L3N2Zz5cXG4gICAgPC9kaXY+XFxuICAnO1xuICAgIHJldHVybiBjb250YWluZXI7XG59XG5mdW5jdGlvbiBjcmVhdGVDc3MocHJlZml4LCBwYXJhbSkge1xuICAgIGxldCB7IGhvcml6b250YWxQcm9wZXJ0eSAsIHZlcnRpY2FsUHJvcGVydHkgIH0gPSBwYXJhbTtcbiAgICBjb25zdCBjc3MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gICAgY3NzLnRleHRDb250ZW50ID0gXCJcXG4gICAgI1wiICsgcHJlZml4ICsgXCJjb250YWluZXIge1xcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICBcIiArIHZlcnRpY2FsUHJvcGVydHkgKyBcIjogMTBweDtcXG4gICAgICBcIiArIGhvcml6b250YWxQcm9wZXJ0eSArIFwiOiAzMHB4O1xcblxcbiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcXG4gICAgICBiYWNrZ3JvdW5kOiAjMDAwO1xcbiAgICAgIGNvbG9yOiAjZmZmO1xcbiAgICAgIGZvbnQ6IGluaXRpYWw7XFxuICAgICAgY3Vyc29yOiBpbml0aWFsO1xcbiAgICAgIGxldHRlci1zcGFjaW5nOiBpbml0aWFsO1xcbiAgICAgIHRleHQtc2hhZG93OiBpbml0aWFsO1xcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBpbml0aWFsO1xcbiAgICAgIHZpc2liaWxpdHk6IGluaXRpYWw7XFxuXFxuICAgICAgcGFkZGluZzogN3B4IDEwcHggOHB4IDEwcHg7XFxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICBib3gtc2hhZG93OiAwIDExcHggNDBweCAwIHJnYmEoMCwgMCwgMCwgMC4yNSksIDAgMnB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcblxcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgb3BhY2l0eTogMDtcXG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMXMgZWFzZSwgXCIgKyB2ZXJ0aWNhbFByb3BlcnR5ICsgXCIgMC4xcyBlYXNlO1xcbiAgICAgIGFuaW1hdGlvbjogXCIgKyBwcmVmaXggKyBcImZhZGUtaW4gMC4xcyBlYXNlLWluLW91dDtcXG4gICAgfVxcblxcbiAgICAjXCIgKyBwcmVmaXggKyBcImNvbnRhaW5lci5cIiArIHByZWZpeCArIFwidmlzaWJsZSB7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgfVxcblxcbiAgICAjXCIgKyBwcmVmaXggKyBcImNvbnRhaW5lci5cIiArIHByZWZpeCArIFwiYnVpbGRpbmcge1xcbiAgICAgIFwiICsgdmVydGljYWxQcm9wZXJ0eSArIFwiOiAyMHB4O1xcbiAgICAgIG9wYWNpdHk6IDE7XFxuICAgIH1cXG5cXG4gICAgI1wiICsgcHJlZml4ICsgXCJpY29uLXdyYXBwZXIge1xcbiAgICAgIHdpZHRoOiAxNnB4O1xcbiAgICAgIGhlaWdodDogMTZweDtcXG4gICAgfVxcblxcbiAgICAjXCIgKyBwcmVmaXggKyBcImljb24td3JhcHBlciA+IHN2ZyB7XFxuICAgICAgd2lkdGg6IDEwMCU7XFxuICAgICAgaGVpZ2h0OiAxMDAlO1xcbiAgICB9XFxuXFxuICAgICNcIiArIHByZWZpeCArIFwiaWNvbi1ncm91cCB7XFxuICAgICAgYW5pbWF0aW9uOiBcIiArIHByZWZpeCArIFwic3Ryb2tlZGFzaCAxcyBlYXNlLWluLW91dCBib3RoIGluZmluaXRlO1xcbiAgICB9XFxuXFxuICAgIEBrZXlmcmFtZXMgXCIgKyBwcmVmaXggKyBcImZhZGUtaW4ge1xcbiAgICAgIGZyb20ge1xcbiAgICAgICAgXCIgKyB2ZXJ0aWNhbFByb3BlcnR5ICsgXCI6IDEwcHg7XFxuICAgICAgICBvcGFjaXR5OiAwO1xcbiAgICAgIH1cXG4gICAgICB0byB7XFxuICAgICAgICBcIiArIHZlcnRpY2FsUHJvcGVydHkgKyBcIjogMjBweDtcXG4gICAgICAgIG9wYWNpdHk6IDE7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIEBrZXlmcmFtZXMgXCIgKyBwcmVmaXggKyBcInN0cm9rZWRhc2gge1xcbiAgICAgIDAlIHtcXG4gICAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IDAgMjI2O1xcbiAgICAgIH1cXG4gICAgICA4MCUsXFxuICAgICAgMTAwJSB7XFxuICAgICAgICBzdHJva2UtZGFzaGFycmF5OiA2NTkgMjI2O1xcbiAgICAgIH1cXG4gICAgfVxcbiAgXCI7XG4gICAgcmV0dXJuIGNzcztcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGV2LWJ1aWxkLXdhdGNoZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsImluaXRpYWxpemVCdWlsZFdhdGNoZXIiLCJfd2Vic29ja2V0IiwicmVxdWlyZSIsInRvZ2dsZUNhbGxiYWNrIiwicG9zaXRpb24iLCJzaGFkb3dIb3N0IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidmVydGljYWxQcm9wZXJ0eSIsImhvcml6b250YWxQcm9wZXJ0eSIsInNwbGl0IiwiaWQiLCJzdHlsZSIsIndpZHRoIiwiaGVpZ2h0IiwiekluZGV4IiwiYm9keSIsImFwcGVuZENoaWxkIiwic2hhZG93Um9vdCIsInByZWZpeCIsImF0dGFjaFNoYWRvdyIsIm1vZGUiLCJjb250YWluZXIiLCJjcmVhdGVDb250YWluZXIiLCJjc3MiLCJjcmVhdGVDc3MiLCJpc1Zpc2libGUiLCJpc0J1aWxkaW5nIiwidGltZW91dElkIiwiYWRkTWVzc2FnZUxpc3RlbmVyIiwiZXZlbnQiLCJkYXRhIiwiaGFuZGxlTWVzc2FnZSIsImUiLCJvYmoiLCJhY3Rpb24iLCJKU09OIiwicGFyc2UiLCJjbGVhclRpbWVvdXQiLCJ1cGRhdGVDb250YWluZXIiLCJzZXRUaW1lb3V0IiwiY2xhc3NMaXN0IiwiYWRkIiwicmVtb3ZlIiwiaW5uZXJIVE1MIiwicGFyYW0iLCJ0ZXh0Q29udGVudCIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/dev-build-watcher.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/dev/error-overlay/format-webpack-messages.js": +/*!************************************************************************************!*\ + !*** ./node_modules/next/dist/client/dev/error-overlay/format-webpack-messages.js ***! + \************************************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("/**\nMIT License\n\nCopyright (c) 2015-present, Facebook, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return formatWebpackMessages;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _stripansi = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! next/dist/compiled/strip-ansi */ \"./node_modules/next/dist/compiled/strip-ansi/index.js\"));\n// This file is based on https://github.com/facebook/create-react-app/blob/7b1a32be6ec9f99a6c9a3c66813f3ac09c4736b9/packages/react-dev-utils/formatWebpackMessages.js\n// It's been edited to remove chalk and CRA-specific logic\nconst friendlySyntaxErrorLabel = \"Syntax error:\";\nconst WEBPACK_BREAKING_CHANGE_POLYFILLS = \"\\n\\nBREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.\";\nfunction isLikelyASyntaxError(message) {\n return (0, _stripansi.default)(message).includes(friendlySyntaxErrorLabel);\n}\nlet hadMissingSassError = false;\n// Cleans up webpack error messages.\nfunction formatMessage(message, verbose, importTraceNote) {\n // TODO: Replace this once webpack 5 is stable\n if (typeof message === \"object\" && message.message) {\n const filteredModuleTrace = message.moduleTrace && message.moduleTrace.filter((trace)=>!/next-(middleware|client-pages|edge-function)-loader\\.js/.test(trace.originName));\n let body = message.message;\n const breakingChangeIndex = body.indexOf(WEBPACK_BREAKING_CHANGE_POLYFILLS);\n if (breakingChangeIndex >= 0) {\n body = body.slice(0, breakingChangeIndex);\n }\n message = (message.moduleName ? (0, _stripansi.default)(message.moduleName) + \"\\n\" : \"\") + (message.file ? (0, _stripansi.default)(message.file) + \"\\n\" : \"\") + body + (message.details && verbose ? \"\\n\" + message.details : \"\") + (filteredModuleTrace && filteredModuleTrace.length ? (importTraceNote || \"\\n\\nImport trace for requested module:\") + filteredModuleTrace.map((trace)=>\"\\n\" + trace.moduleName).join(\"\") : \"\") + (message.stack && verbose ? \"\\n\" + message.stack : \"\");\n }\n let lines = message.split(\"\\n\");\n // Strip Webpack-added headers off errors/warnings\n // https://github.com/webpack/webpack/blob/master/lib/ModuleError.js\n lines = lines.filter((line)=>!/Module [A-z ]+\\(from/.test(line));\n // Transform parsing error into syntax error\n // TODO: move this to our ESLint formatter?\n lines = lines.map((line)=>{\n const parsingError = /Line (\\d+):(?:(\\d+):)?\\s*Parsing error: (.+)$/.exec(line);\n if (!parsingError) {\n return line;\n }\n const [, errorLine, errorColumn, errorMessage] = parsingError;\n return friendlySyntaxErrorLabel + \" \" + errorMessage + \" (\" + errorLine + \":\" + errorColumn + \")\";\n });\n message = lines.join(\"\\n\");\n // Smoosh syntax errors (commonly found in CSS)\n message = message.replace(/SyntaxError\\s+\\((\\d+):(\\d+)\\)\\s*(.+?)\\n/g, \"\" + friendlySyntaxErrorLabel + \" $3 ($1:$2)\\n\");\n // Clean up export errors\n message = message.replace(/^.*export '(.+?)' was not found in '(.+?)'.*$/gm, \"Attempted import error: '$1' is not exported from '$2'.\");\n message = message.replace(/^.*export 'default' \\(imported as '(.+?)'\\) was not found in '(.+?)'.*$/gm, \"Attempted import error: '$2' does not contain a default export (imported as '$1').\");\n message = message.replace(/^.*export '(.+?)' \\(imported as '(.+?)'\\) was not found in '(.+?)'.*$/gm, \"Attempted import error: '$1' is not exported from '$3' (imported as '$2').\");\n lines = message.split(\"\\n\");\n // Remove leading newline\n if (lines.length > 2 && lines[1].trim() === \"\") {\n lines.splice(1, 1);\n }\n // Cleans up verbose \"module not found\" messages for files and packages.\n if (lines[1] && lines[1].indexOf(\"Module not found: \") === 0) {\n lines = [\n lines[0],\n lines[1].replace(\"Error: \", \"\").replace(\"Module not found: Cannot find file:\", \"Cannot find file:\"),\n ...lines.slice(2)\n ];\n }\n // Add helpful message for users trying to use Sass for the first time\n if (lines[1] && lines[1].match(/Cannot find module.+sass/)) {\n // ./file.module.scss (<>) => ./file.module.scss\n const firstLine = lines[0].split(\"!\");\n lines[0] = firstLine[firstLine.length - 1];\n lines[1] = \"To use Next.js' built-in Sass support, you first need to install `sass`.\\n\";\n lines[1] += \"Run `npm i sass` or `yarn add sass` inside your workspace.\\n\";\n lines[1] += \"\\nLearn more: https://nextjs.org/docs/messages/install-sass\";\n // dispose of unhelpful stack trace\n lines = lines.slice(0, 2);\n hadMissingSassError = true;\n } else if (hadMissingSassError && message.match(/(sass-loader|resolve-url-loader: CSS error)/)) {\n // dispose of unhelpful stack trace following missing sass module\n lines = [];\n }\n if (!verbose) {\n message = lines.join(\"\\n\");\n // Internal stacks are generally useless so we strip them... with the\n // exception of stacks containing `webpack:` because they're normally\n // from user code generated by Webpack. For more information see\n // https://github.com/facebook/create-react-app/pull/1050\n message = message.replace(/^\\s*at\\s((?!webpack:).)*:\\d+:\\d+[\\s)]*(\\n|$)/gm, \"\") // at ... ...:x:y\n ;\n message = message.replace(/^\\s*at\\s(\\n|$)/gm, \"\") // at \n ;\n message = message.replace(/File was processed with these loaders:\\n(.+[\\\\/](next[\\\\/]dist[\\\\/].+|@next[\\\\/]react-refresh-utils[\\\\/]loader)\\.js\\n)*You may need an additional loader to handle the result of these loaders.\\n/g, \"\");\n lines = message.split(\"\\n\");\n }\n // Remove duplicated newlines\n lines = lines.filter((line, index, arr)=>index === 0 || line.trim() !== \"\" || line.trim() !== arr[index - 1].trim());\n // Reassemble the message\n message = lines.join(\"\\n\");\n return message.trim();\n}\nfunction formatWebpackMessages(json, verbose) {\n const formattedErrors = json.errors.map((message)=>{\n const isUnknownNextFontError = message.message.includes(\"An error occured in `next/font`.\");\n return formatMessage(message, isUnknownNextFontError || verbose);\n });\n const formattedWarnings = json.warnings.map((message)=>{\n return formatMessage(message, verbose);\n });\n // Reorder errors to put the most relevant ones first.\n let reactServerComponentsError = -1;\n for(let i = 0; i < formattedErrors.length; i++){\n const error = formattedErrors[i];\n if (error.includes(\"ReactServerComponentsError\")) {\n reactServerComponentsError = i;\n break;\n }\n }\n // Move the reactServerComponentsError to the top if it exists\n if (reactServerComponentsError !== -1) {\n const error = formattedErrors.splice(reactServerComponentsError, 1);\n formattedErrors.unshift(error[0]);\n }\n const result = {\n ...json,\n errors: formattedErrors,\n warnings: formattedWarnings\n };\n if (!verbose && result.errors.some(isLikelyASyntaxError)) {\n // If there are any syntax errors, show just them.\n result.errors = result.errors.filter(isLikelyASyntaxError);\n result.warnings = [];\n }\n return result;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=format-webpack-messages.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZXJyb3Itb3ZlcmxheS9mb3JtYXQtd2VicGFjay1tZXNzYWdlcy5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQSxHQUFnQjtBQUNoQkEsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRkgsMkNBQTBDO0lBQ3RDSSxZQUFZLElBQUk7SUFDaEJDLEtBQUssV0FBVztRQUNaLE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQywyQkFBMkJDLG1CQUFPQSxDQUFDLDRHQUF5QztBQUNsRixNQUFNQyxhQUFhLFdBQVcsR0FBR0YseUJBQXlCRyxDQUFDLENBQUNGLG1CQUFPQSxDQUFDLDRGQUErQjtBQUNuRyxxS0FBcUs7QUFDckssMERBQTBEO0FBQzFELE1BQU1HLDJCQUEyQjtBQUNqQyxNQUFNQyxvQ0FBb0M7QUFDMUMsU0FBU0MscUJBQXFCQyxPQUFPLEVBQUU7SUFDbkMsT0FBTyxDQUFDLEdBQUdMLFdBQVdNLE9BQU8sRUFBRUQsU0FBU0UsUUFBUSxDQUFDTDtBQUNyRDtBQUNBLElBQUlNLHNCQUFzQixLQUFLO0FBQy9CLG9DQUFvQztBQUNwQyxTQUFTQyxjQUFjSixPQUFPLEVBQUVLLE9BQU8sRUFBRUMsZUFBZSxFQUFFO0lBQ3RELDhDQUE4QztJQUM5QyxJQUFJLE9BQU9OLFlBQVksWUFBWUEsUUFBUUEsT0FBTyxFQUFFO1FBQ2hELE1BQU1PLHNCQUFzQlAsUUFBUVEsV0FBVyxJQUFJUixRQUFRUSxXQUFXLENBQUNDLE1BQU0sQ0FBQyxDQUFDQyxRQUFRLENBQUMsMERBQTBEQyxJQUFJLENBQUNELE1BQU1FLFVBQVU7UUFDdkssSUFBSUMsT0FBT2IsUUFBUUEsT0FBTztRQUMxQixNQUFNYyxzQkFBc0JELEtBQUtFLE9BQU8sQ0FBQ2pCO1FBQ3pDLElBQUlnQix1QkFBdUIsR0FBRztZQUMxQkQsT0FBT0EsS0FBS0cs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Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L2Vycm9yLW92ZXJsYXkvZm9ybWF0LXdlYnBhY2stbWVzc2FnZXMuanM/NzVlYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbk1JVCBMaWNlbnNlXG5cbkNvcHlyaWdodCAoYykgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXG5QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG5vZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG5pbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG50byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG5jb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cblRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG5GSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbkFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG5PVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuU09GVFdBUkUuXG4qLyBcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGZvcm1hdFdlYnBhY2tNZXNzYWdlcztcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfc3RyaXBhbnNpID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3N0cmlwLWFuc2lcIikpO1xuLy8gVGhpcyBmaWxlIGlzIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9jcmVhdGUtcmVhY3QtYXBwL2Jsb2IvN2IxYTMyYmU2ZWM5Zjk5YTZjOWEzYzY2ODEzZjNhYzA5YzQ3MzZiOS9wYWNrYWdlcy9yZWFjdC1kZXYtdXRpbHMvZm9ybWF0V2VicGFja01lc3NhZ2VzLmpzXG4vLyBJdCdzIGJlZW4gZWRpdGVkIHRvIHJlbW92ZSBjaGFsayBhbmQgQ1JBLXNwZWNpZmljIGxvZ2ljXG5jb25zdCBmcmllbmRseVN5bnRheEVycm9yTGFiZWwgPSBcIlN5bnRheCBlcnJvcjpcIjtcbmNvbnN0IFdFQlBBQ0tfQlJFQUtJTkdfQ0hBTkdFX1BPTFlGSUxMUyA9IFwiXFxuXFxuQlJFQUtJTkcgQ0hBTkdFOiB3ZWJwYWNrIDwgNSB1c2VkIHRvIGluY2x1ZGUgcG9seWZpbGxzIGZvciBub2RlLmpzIGNvcmUgbW9kdWxlcyBieSBkZWZhdWx0LlwiO1xuZnVuY3Rpb24gaXNMaWtlbHlBU3ludGF4RXJyb3IobWVzc2FnZSkge1xuICAgIHJldHVybiAoMCwgX3N0cmlwYW5zaS5kZWZhdWx0KShtZXNzYWdlKS5pbmNsdWRlcyhmcmllbmRseVN5bnRheEVycm9yTGFiZWwpO1xufVxubGV0IGhhZE1pc3NpbmdTYXNzRXJyb3IgPSBmYWxzZTtcbi8vIENsZWFucyB1cCB3ZWJwYWNrIGVycm9yIG1lc3NhZ2VzLlxuZnVuY3Rpb24gZm9ybWF0TWVzc2FnZShtZXNzYWdlLCB2ZXJib3NlLCBpbXBvcnRUcmFjZU5vdGUpIHtcbiAgICAvLyBUT0RPOiBSZXBsYWNlIHRoaXMgb25jZSB3ZWJwYWNrIDUgaXMgc3RhYmxlXG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSBcIm9iamVjdFwiICYmIG1lc3NhZ2UubWVzc2FnZSkge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZE1vZHVsZVRyYWNlID0gbWVzc2FnZS5tb2R1bGVUcmFjZSAmJiBtZXNzYWdlLm1vZHVsZVRyYWNlLmZpbHRlcigodHJhY2UpPT4hL25leHQtKG1pZGRsZXdhcmV8Y2xpZW50LXBhZ2VzfGVkZ2UtZnVuY3Rpb24pLWxvYWRlclxcLmpzLy50ZXN0KHRyYWNlLm9yaWdpbk5hbWUpKTtcbiAgICAgICAgbGV0IGJvZHkgPSBtZXNzYWdlLm1lc3NhZ2U7XG4gICAgICAgIGNvbnN0IGJyZWFraW5nQ2hhbmdlSW5kZXggPSBib2R5LmluZGV4T2YoV0VCUEFDS19CUkVBS0lOR19DSEFOR0VfUE9MWUZJTExTKTtcbiAgICAgICAgaWYgKGJyZWFraW5nQ2hhbmdlSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgYm9keSA9IGJvZHkuc2xpY2UoMCwgYnJlYWtpbmdDaGFuZ2VJbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgbWVzc2FnZSA9IChtZXNzYWdlLm1vZHVsZU5hbWUgPyAoMCwgX3N0cmlwYW5zaS5kZWZhdWx0KShtZXNzYWdlLm1vZHVsZU5hbWUpICsgXCJcXG5cIiA6IFwiXCIpICsgKG1lc3NhZ2UuZmlsZSA/ICgwLCBfc3RyaXBhbnNpLmRlZmF1bHQpKG1lc3NhZ2UuZmlsZSkgKyBcIlxcblwiIDogXCJcIikgKyBib2R5ICsgKG1lc3NhZ2UuZGV0YWlscyAmJiB2ZXJib3NlID8gXCJcXG5cIiArIG1lc3NhZ2UuZGV0YWlscyA6IFwiXCIpICsgKGZpbHRlcmVkTW9kdWxlVHJhY2UgJiYgZmlsdGVyZWRNb2R1bGVUcmFjZS5sZW5ndGggPyAoaW1wb3J0VHJhY2VOb3RlIHx8IFwiXFxuXFxuSW1wb3J0IHRyYWNlIGZvciByZXF1ZXN0ZWQgbW9kdWxlOlwiKSArIGZpbHRlcmVkTW9kdWxlVHJhY2UubWFwKCh0cmFjZSk9PlwiXFxuXCIgKyB0cmFjZS5tb2R1bGVOYW1lKS5qb2luKFwiXCIpIDogXCJcIikgKyAobWVzc2FnZS5zdGFjayAmJiB2ZXJib3NlID8gXCJcXG5cIiArIG1lc3NhZ2Uuc3RhY2sgOiBcIlwiKTtcbiAgICB9XG4gICAgbGV0IGxpbmVzID0gbWVzc2FnZS5zcGxpdChcIlxcblwiKTtcbiAgICAvLyBTdHJpcCBXZWJwYWNrLWFkZGVkIGhlYWRlcnMgb2ZmIGVycm9ycy93YXJuaW5nc1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrL3dlYnBhY2svYmxvYi9tYXN0ZXIvbGliL01vZHVsZUVycm9yLmpzXG4gICAgbGluZXMgPSBsaW5lcy5maWx0ZXIoKGxpbmUpPT4hL01vZHVsZSBbQS16IF0rXFwoZnJvbS8udGVzdChsaW5lKSk7XG4gICAgLy8gVHJhbnNmb3JtIHBhcnNpbmcgZXJyb3IgaW50byBzeW50YXggZXJyb3JcbiAgICAvLyBUT0RPOiBtb3ZlIHRoaXMgdG8gb3VyIEVTTGludCBmb3JtYXR0ZXI/XG4gICAgbGluZXMgPSBsaW5lcy5tYXAoKGxpbmUpPT57XG4gICAgICAgIGNvbnN0IHBhcnNpbmdFcnJvciA9IC9MaW5lIChcXGQrKTooPzooXFxkKyk6KT9cXHMqUGFyc2luZyBlcnJvcjogKC4rKSQvLmV4ZWMobGluZSk7XG4gICAgICAgIGlmICghcGFyc2luZ0Vycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gbGluZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBbLCBlcnJvckxpbmUsIGVycm9yQ29sdW1uLCBlcnJvck1lc3NhZ2VdID0gcGFyc2luZ0Vycm9yO1xuICAgICAgICByZXR1cm4gZnJpZW5kbHlTeW50YXhFcnJvckxhYmVsICsgXCIgXCIgKyBlcnJvck1lc3NhZ2UgKyBcIiAoXCIgKyBlcnJvckxpbmUgKyBcIjpcIiArIGVycm9yQ29sdW1uICsgXCIpXCI7XG4gICAgfSk7XG4gICAgbWVzc2FnZSA9IGxpbmVzLmpvaW4oXCJcXG5cIik7XG4gICAgLy8gU21vb3NoIHN5bnRheCBlcnJvcnMgKGNvbW1vbmx5IGZvdW5kIGluIENTUylcbiAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKC9TeW50YXhFcnJvclxccytcXCgoXFxkKyk6KFxcZCspXFwpXFxzKiguKz8pXFxuL2csIFwiXCIgKyBmcmllbmRseVN5bnRheEVycm9yTGFiZWwgKyBcIiAkMyAoJDE6JDIpXFxuXCIpO1xuICAgIC8vIENsZWFuIHVwIGV4cG9ydCBlcnJvcnNcbiAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKC9eLipleHBvcnQgJyguKz8pJyB3YXMgbm90IGZvdW5kIGluICcoLis/KScuKiQvZ20sIFwiQXR0ZW1wdGVkIGltcG9ydCBlcnJvcjogJyQxJyBpcyBub3QgZXhwb3J0ZWQgZnJvbSAnJDInLlwiKTtcbiAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKC9eLipleHBvcnQgJ2RlZmF1bHQnIFxcKGltcG9ydGVkIGFzICcoLis/KSdcXCkgd2FzIG5vdCBmb3VuZCBpbiAnKC4rPyknLiokL2dtLCBcIkF0dGVtcHRlZCBpbXBvcnQgZXJyb3I6ICckMicgZG9lcyBub3QgY29udGFpbiBhIGRlZmF1bHQgZXhwb3J0IChpbXBvcnRlZCBhcyAnJDEnKS5cIik7XG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvXi4qZXhwb3J0ICcoLis/KScgXFwoaW1wb3J0ZWQgYXMgJyguKz8pJ1xcKSB3YXMgbm90IGZvdW5kIGluICcoLis/KScuKiQvZ20sIFwiQXR0ZW1wdGVkIGltcG9ydCBlcnJvcjogJyQxJyBpcyBub3QgZXhwb3J0ZWQgZnJvbSAnJDMnIChpbXBvcnRlZCBhcyAnJDInKS5cIik7XG4gICAgbGluZXMgPSBtZXNzYWdlLnNwbGl0KFwiXFxuXCIpO1xuICAgIC8vIFJlbW92ZSBsZWFkaW5nIG5ld2xpbmVcbiAgICBpZiAobGluZXMubGVuZ3RoID4gMiAmJiBsaW5lc1sxXS50cmltKCkgPT09IFwiXCIpIHtcbiAgICAgICAgbGluZXMuc3BsaWNlKDEsIDEpO1xuICAgIH1cbiAgICAvLyBDbGVhbnMgdXAgdmVyYm9zZSBcIm1vZHVsZSBub3QgZm91bmRcIiBtZXNzYWdlcyBmb3IgZmlsZXMgYW5kIHBhY2thZ2VzLlxuICAgIGlmIChsaW5lc1sxXSAmJiBsaW5lc1sxXS5pbmRleE9mKFwiTW9kdWxlIG5vdCBmb3VuZDogXCIpID09PSAwKSB7XG4gICAgICAgIGxpbmVzID0gW1xuICAgICAgICAgICAgbGluZXNbMF0sXG4gICAgICAgICAgICBsaW5lc1sxXS5yZXBsYWNlKFwiRXJyb3I6IFwiLCBcIlwiKS5yZXBsYWNlKFwiTW9kdWxlIG5vdCBmb3VuZDogQ2Fubm90IGZpbmQgZmlsZTpcIiwgXCJDYW5ub3QgZmluZCBmaWxlOlwiKSxcbiAgICAgICAgICAgIC4uLmxpbmVzLnNsaWNlKDIpXG4gICAgICAgIF07XG4gICAgfVxuICAgIC8vIEFkZCBoZWxwZnVsIG1lc3NhZ2UgZm9yIHVzZXJzIHRyeWluZyB0byB1c2UgU2FzcyBmb3IgdGhlIGZpcnN0IHRpbWVcbiAgICBpZiAobGluZXNbMV0gJiYgbGluZXNbMV0ubWF0Y2goL0Nhbm5vdCBmaW5kIG1vZHVsZS4rc2Fzcy8pKSB7XG4gICAgICAgIC8vIC4vZmlsZS5tb2R1bGUuc2NzcyAoPDxsb2FkZXIgaW5mbz4+KSA9PiAuL2ZpbGUubW9kdWxlLnNjc3NcbiAgICAgICAgY29uc3QgZmlyc3RMaW5lID0gbGluZXNbMF0uc3BsaXQoXCIhXCIpO1xuICAgICAgICBsaW5lc1swXSA9IGZpcnN0TGluZVtmaXJzdExpbmUubGVuZ3RoIC0gMV07XG4gICAgICAgIGxpbmVzWzFdID0gXCJUbyB1c2UgTmV4dC5qcycgYnVpbHQtaW4gU2FzcyBzdXBwb3J0LCB5b3UgZmlyc3QgbmVlZCB0byBpbnN0YWxsIGBzYXNzYC5cXG5cIjtcbiAgICAgICAgbGluZXNbMV0gKz0gXCJSdW4gYG5wbSBpIHNhc3NgIG9yIGB5YXJuIGFkZCBzYXNzYCBpbnNpZGUgeW91ciB3b3Jrc3BhY2UuXFxuXCI7XG4gICAgICAgIGxpbmVzWzFdICs9IFwiXFxuTGVhcm4gbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvaW5zdGFsbC1zYXNzXCI7XG4gICAgICAgIC8vIGRpc3Bvc2Ugb2YgdW5oZWxwZnVsIHN0YWNrIHRyYWNlXG4gICAgICAgIGxpbmVzID0gbGluZXMuc2xpY2UoMCwgMik7XG4gICAgICAgIGhhZE1pc3NpbmdTYXNzRXJyb3IgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoaGFkTWlzc2luZ1Nhc3NFcnJvciAmJiBtZXNzYWdlLm1hdGNoKC8oc2Fzcy1sb2FkZXJ8cmVzb2x2ZS11cmwtbG9hZGVyOiBDU1MgZXJyb3IpLykpIHtcbiAgICAgICAgLy8gZGlzcG9zZSBvZiB1bmhlbHBmdWwgc3RhY2sgdHJhY2UgZm9sbG93aW5nIG1pc3Npbmcgc2FzcyBtb2R1bGVcbiAgICAgICAgbGluZXMgPSBbXTtcbiAgICB9XG4gICAgaWYgKCF2ZXJib3NlKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBsaW5lcy5qb2luKFwiXFxuXCIpO1xuICAgICAgICAvLyBJbnRlcm5hbCBzdGFja3MgYXJlIGdlbmVyYWxseSB1c2VsZXNzIHNvIHdlIHN0cmlwIHRoZW0uLi4gd2l0aCB0aGVcbiAgICAgICAgLy8gZXhjZXB0aW9uIG9mIHN0YWNrcyBjb250YWluaW5nIGB3ZWJwYWNrOmAgYmVjYXVzZSB0aGV5J3JlIG5vcm1hbGx5XG4gICAgICAgIC8vIGZyb20gdXNlciBjb2RlIGdlbmVyYXRlZCBieSBXZWJwYWNrLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWVcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2NyZWF0ZS1yZWFjdC1hcHAvcHVsbC8xMDUwXG4gICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoL15cXHMqYXRcXHMoKD8hd2VicGFjazopLikqOlxcZCs6XFxkK1tcXHMpXSooXFxufCQpL2dtLCBcIlwiKSAvLyBhdCAuLi4gLi4uOng6eVxuICAgICAgICA7XG4gICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoL15cXHMqYXRcXHM8YW5vbnltb3VzPihcXG58JCkvZ20sIFwiXCIpIC8vIGF0IDxhbm9ueW1vdXM+XG4gICAgICAgIDtcbiAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvRmlsZSB3YXMgcHJvY2Vzc2VkIHdpdGggdGhlc2UgbG9hZGVyczpcXG4oLitbXFxcXC9dKG5leHRbXFxcXC9dZGlzdFtcXFxcL10uK3xAbmV4dFtcXFxcL11yZWFjdC1yZWZyZXNoLXV0aWxzW1xcXFwvXWxvYWRlcilcXC5qc1xcbikqWW91IG1heSBuZWVkIGFuIGFkZGl0aW9uYWwgbG9hZGVyIHRvIGhhbmRsZSB0aGUgcmVzdWx0IG9mIHRoZXNlIGxvYWRlcnMuXFxuL2csIFwiXCIpO1xuICAgICAgICBsaW5lcyA9IG1lc3NhZ2Uuc3BsaXQoXCJcXG5cIik7XG4gICAgfVxuICAgIC8vIFJlbW92ZSBkdXBsaWNhdGVkIG5ld2xpbmVzXG4gICAgbGluZXMgPSBsaW5lcy5maWx0ZXIoKGxpbmUsIGluZGV4LCBhcnIpPT5pbmRleCA9PT0gMCB8fCBsaW5lLnRyaW0oKSAhPT0gXCJcIiB8fCBsaW5lLnRyaW0oKSAhPT0gYXJyW2luZGV4IC0gMV0udHJpbSgpKTtcbiAgICAvLyBSZWFzc2VtYmxlIHRoZSBtZXNzYWdlXG4gICAgbWVzc2FnZSA9IGxpbmVzLmpvaW4oXCJcXG5cIik7XG4gICAgcmV0dXJuIG1lc3NhZ2UudHJpbSgpO1xufVxuZnVuY3Rpb24gZm9ybWF0V2VicGFja01lc3NhZ2VzKGpzb24sIHZlcmJvc2UpIHtcbiAgICBjb25zdCBmb3JtYXR0ZWRFcnJvcnMgPSBqc29uLmVycm9ycy5tYXAoKG1lc3NhZ2UpPT57XG4gICAgICAgIGNvbnN0IGlzVW5rbm93bk5leHRGb250RXJyb3IgPSBtZXNzYWdlLm1lc3NhZ2UuaW5jbHVkZXMoXCJBbiBlcnJvciBvY2N1cmVkIGluIGBuZXh0L2ZvbnRgLlwiKTtcbiAgICAgICAgcmV0dXJuIGZvcm1hdE1lc3NhZ2UobWVzc2FnZSwgaXNVbmtub3duTmV4dEZvbnRFcnJvciB8fCB2ZXJib3NlKTtcbiAgICB9KTtcbiAgICBjb25zdCBmb3JtYXR0ZWRXYXJuaW5ncyA9IGpzb24ud2FybmluZ3MubWFwKChtZXNzYWdlKT0+e1xuICAgICAgICByZXR1cm4gZm9ybWF0TWVzc2FnZShtZXNzYWdlLCB2ZXJib3NlKTtcbiAgICB9KTtcbiAgICAvLyBSZW9yZGVyIGVycm9ycyB0byBwdXQgdGhlIG1vc3QgcmVsZXZhbnQgb25lcyBmaXJzdC5cbiAgICBsZXQgcmVhY3RTZXJ2ZXJDb21wb25lbnRzRXJyb3IgPSAtMTtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgZm9ybWF0dGVkRXJyb3JzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBmb3JtYXR0ZWRFcnJvcnNbaV07XG4gICAgICAgIGlmIChlcnJvci5pbmNsdWRlcyhcIlJlYWN0U2VydmVyQ29tcG9uZW50c0Vycm9yXCIpKSB7XG4gICAgICAgICAgICByZWFjdFNlcnZlckNvbXBvbmVudHNFcnJvciA9IGk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBNb3ZlIHRoZSByZWFjdFNlcnZlckNvbXBvbmVudHNFcnJvciB0byB0aGUgdG9wIGlmIGl0IGV4aXN0c1xuICAgIGlmIChyZWFjdFNlcnZlckNvbXBvbmVudHNFcnJvciAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBmb3JtYXR0ZWRFcnJvcnMuc3BsaWNlKHJlYWN0U2VydmVyQ29tcG9uZW50c0Vycm9yLCAxKTtcbiAgICAgICAgZm9ybWF0dGVkRXJyb3JzLnVuc2hpZnQoZXJyb3JbMF0pO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgIC4uLmpzb24sXG4gICAgICAgIGVycm9yczogZm9ybWF0dGVkRXJyb3JzLFxuICAgICAgICB3YXJuaW5nczogZm9ybWF0dGVkV2FybmluZ3NcbiAgICB9O1xuICAgIGlmICghdmVyYm9zZSAmJiByZXN1bHQuZXJyb3JzLnNvbWUoaXNMaWtlbHlBU3ludGF4RXJyb3IpKSB7XG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBhbnkgc3ludGF4IGVycm9ycywgc2hvdyBqdXN0IHRoZW0uXG4gICAgICAgIHJlc3VsdC5lcnJvcnMgPSByZXN1bHQuZXJyb3JzLmZpbHRlcihpc0xpa2VseUFTeW50YXhFcnJvcik7XG4gICAgICAgIHJlc3VsdC53YXJuaW5ncyA9IFtdO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1mb3JtYXQtd2VicGFjay1tZXNzYWdlcy5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiZm9ybWF0V2VicGFja01lc3NhZ2VzIiwiX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0IiwicmVxdWlyZSIsIl9zdHJpcGFuc2kiLCJfIiwiZnJpZW5kbHlTeW50YXhFcnJvckxhYmVsIiwiV0VCUEFDS19CUkVBS0lOR19DSEFOR0VfUE9MWUZJTExTIiwiaXNMaWtlbHlBU3ludGF4RXJyb3IiLCJtZXNzYWdlIiwiZGVmYXVsdCIsImluY2x1ZGVzIiwiaGFkTWlzc2luZ1Nhc3NFcnJvciIsImZvcm1hdE1lc3NhZ2UiLCJ2ZXJib3NlIiwiaW1wb3J0VHJhY2VOb3RlIiwiZmlsdGVyZWRNb2R1bGVUcmFjZSIsIm1vZHVsZVRyYWNlIiwiZmlsdGVyIiwidHJhY2UiLCJ0ZXN0Iiwib3JpZ2luTmFtZSIsImJvZHkiLCJicmVha2luZ0NoYW5nZUluZGV4IiwiaW5kZXhPZiIsInNsaWNlIiwibW9kdWxlTmFtZSIsImZpbGUiLCJkZXRhaWxzIiwibGVuZ3RoIiwibWFwIiwiam9pbiIsInN0YWNrIiwibGluZXMiLCJzcGxpdCIsImxpbmUiLCJwYXJzaW5nRXJyb3IiLCJleGVjIiwiZXJyb3JMaW5lIiwiZXJyb3JDb2x1bW4iLCJlcnJvck1lc3NhZ2UiLCJyZXBsYWNlIiwidHJpbSIsInNwbGljZSIsIm1hdGNoIiwiZmlyc3RMaW5lIiwiaW5kZXgiLCJhcnIiLCJqc29uIiwiZm9ybWF0dGVkRXJyb3JzIiwiZXJyb3JzIiwiaXNVbmtub3duTmV4dEZvbnRFcnJvciIsImZvcm1hdHRlZFdhcm5pbmdzIiwid2FybmluZ3MiLCJyZWFjdFNlcnZlckNvbXBvbmVudHNFcnJvciIsImkiLCJlcnJvciIsInVuc2hpZnQiLCJyZXN1bHQiLCJzb21lIiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/error-overlay/format-webpack-messages.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/dev/error-overlay/hot-dev-client.js": +/*!***************************************************************************!*\ + !*** ./node_modules/next/dist/client/dev/error-overlay/hot-dev-client.js ***! + \***************************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("// TODO: Remove use of `any` type. Fix no-use-before-define violations.\n/* eslint-disable @typescript-eslint/no-use-before-define */ /**\n * MIT License\n *\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */ // This file is a modified version of the Create React App HMR dev client that\n// can be found here:\n// https://github.com/facebook/create-react-app/blob/v3.4.1/packages/react-dev-utils/webpackHotDevClient.js\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return connect;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _client = __webpack_require__(/*! next/dist/compiled/@next/react-dev-overlay/dist/client */ \"./node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js\");\nconst _stripansi = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! next/dist/compiled/strip-ansi */ \"./node_modules/next/dist/compiled/strip-ansi/index.js\"));\nconst _websocket = __webpack_require__(/*! ./websocket */ \"./node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nconst _formatwebpackmessages = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./format-webpack-messages */ \"./node_modules/next/dist/client/dev/error-overlay/format-webpack-messages.js\"));\nwindow.__nextDevClientId = Math.round(Math.random() * 100 + Date.now());\nlet hadRuntimeError = false;\nlet customHmrEventHandler;\nfunction connect() {\n (0, _client.register)();\n (0, _websocket.addMessageListener)((event)=>{\n if (!event.data.includes(\"action\")) return;\n try {\n processMessage(event);\n } catch (ex) {\n console.warn(\"Invalid HMR message: \" + event.data + \"\\n\", ex);\n }\n });\n return {\n subscribeToHmrEvent (handler) {\n customHmrEventHandler = handler;\n },\n onUnrecoverableError () {\n hadRuntimeError = true;\n }\n };\n}\n// Remember some state related to hot module replacement.\nvar isFirstCompilation = true;\nvar mostRecentCompilationHash = null;\nvar hasCompileErrors = false;\nfunction clearOutdatedErrors() {\n // Clean up outdated compile errors, if any.\n if (typeof console !== \"undefined\" && typeof console.clear === \"function\") {\n if (hasCompileErrors) {\n console.clear();\n }\n }\n}\n// Successful compilation.\nfunction handleSuccess() {\n clearOutdatedErrors();\n const isHotUpdate = !isFirstCompilation || window.__NEXT_DATA__.page !== \"/_error\" && isUpdateAvailable();\n isFirstCompilation = false;\n hasCompileErrors = false;\n // Attempt to apply hot updates or reload.\n if (isHotUpdate) {\n tryApplyUpdates(onBeforeFastRefresh, onFastRefresh);\n }\n}\n// Compilation with warnings (e.g. ESLint).\nfunction handleWarnings(warnings) {\n clearOutdatedErrors();\n const isHotUpdate = !isFirstCompilation;\n isFirstCompilation = false;\n hasCompileErrors = false;\n function printWarnings() {\n // Print warnings to the console.\n const formatted = (0, _formatwebpackmessages.default)({\n warnings: warnings,\n errors: []\n });\n if (typeof console !== \"undefined\" && typeof console.warn === \"function\") {\n var _formatted_warnings;\n for(let i = 0; i < ((_formatted_warnings = formatted.warnings) == null ? void 0 : _formatted_warnings.length); i++){\n if (i === 5) {\n console.warn(\"There were more warnings in other files.\\n\" + \"You can find a complete log in the terminal.\");\n break;\n }\n console.warn((0, _stripansi.default)(formatted.warnings[i]));\n }\n }\n }\n printWarnings();\n // Attempt to apply hot updates or reload.\n if (isHotUpdate) {\n tryApplyUpdates(onBeforeFastRefresh, onFastRefresh);\n }\n}\n// Compilation with errors (e.g. syntax error or missing modules).\nfunction handleErrors(errors) {\n clearOutdatedErrors();\n isFirstCompilation = false;\n hasCompileErrors = true;\n // \"Massage\" webpack messages.\n var formatted = (0, _formatwebpackmessages.default)({\n errors: errors,\n warnings: []\n });\n // Only show the first error.\n (0, _client.onBuildError)(formatted.errors[0]);\n // Also log them to the console.\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n for(var i = 0; i < formatted.errors.length; i++){\n console.error((0, _stripansi.default)(formatted.errors[i]));\n }\n }\n // Do not attempt to reload now.\n // We will reload on next success instead.\n if (false) {}\n}\nlet startLatency = undefined;\nfunction onBeforeFastRefresh(hasUpdates) {\n if (hasUpdates) {\n // Only trigger a pending state if we have updates to apply\n // (cf. onFastRefresh)\n (0, _client.onBeforeRefresh)();\n }\n}\nfunction onFastRefresh(hasUpdates) {\n (0, _client.onBuildOk)();\n if (hasUpdates) {\n // Only complete a pending state if we applied updates\n // (cf. onBeforeFastRefresh)\n (0, _client.onRefresh)();\n }\n if (startLatency) {\n const endLatency = Date.now();\n const latency = endLatency - startLatency;\n console.log(\"[Fast Refresh] done in \" + latency + \"ms\");\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-hmr-latency\",\n id: window.__nextDevClientId,\n startTime: startLatency,\n endTime: endLatency\n }));\n if (self.__NEXT_HMR_LATENCY_CB) {\n self.__NEXT_HMR_LATENCY_CB(latency);\n }\n }\n}\n// There is a newer version of the code available.\nfunction handleAvailableHash(hash) {\n // Update last known compilation hash.\n mostRecentCompilationHash = hash;\n}\n// Handle messages from the server.\nfunction processMessage(e) {\n const obj = JSON.parse(e.data);\n switch(obj.action){\n case \"building\":\n {\n startLatency = Date.now();\n console.log(\"[Fast Refresh] rebuilding\");\n break;\n }\n case \"built\":\n case \"sync\":\n {\n if (obj.hash) {\n handleAvailableHash(obj.hash);\n }\n const { errors , warnings } = obj;\n const hasErrors = Boolean(errors && errors.length);\n if (hasErrors) {\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-error\",\n errorCount: errors.length,\n clientId: window.__nextDevClientId\n }));\n return handleErrors(errors);\n }\n const hasWarnings = Boolean(warnings && warnings.length);\n if (hasWarnings) {\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-warning\",\n warningCount: warnings.length,\n clientId: window.__nextDevClientId\n }));\n return handleWarnings(warnings);\n }\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-success\",\n clientId: window.__nextDevClientId\n }));\n return handleSuccess();\n }\n case \"serverComponentChanges\":\n {\n // Server component changes don't apply to `pages`.\n // TODO-APP: Remove reload once the correct overlay is rendered on initial page load in app dir\n window.location.reload();\n return;\n }\n default:\n {\n if (customHmrEventHandler) {\n customHmrEventHandler(obj);\n break;\n }\n break;\n }\n }\n}\n// Is there a newer version of this code available?\nfunction isUpdateAvailable() {\n /* globals __webpack_hash__ */ // __webpack_hash__ is the hash of the current compilation.\n // It's a global variable injected by Webpack.\n return mostRecentCompilationHash !== __webpack_require__.h();\n}\n// Webpack disallows updates in other states.\nfunction canApplyUpdates() {\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n return module.hot.status() === \"idle\";\n}\nfunction afterApplyUpdates(fn) {\n if (canApplyUpdates()) {\n fn();\n } else {\n function handler(status) {\n if (status === \"idle\") {\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n module.hot.removeStatusHandler(handler);\n fn();\n }\n }\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n module.hot.addStatusHandler(handler);\n }\n}\n// Attempt to update code on the fly, fall back to a hard reload.\nfunction tryApplyUpdates(onBeforeHotUpdate, onHotUpdateSuccess) {\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n if (false) {}\n if (!isUpdateAvailable() || !canApplyUpdates()) {\n (0, _client.onBuildOk)();\n return;\n }\n function handleApplyUpdates(err, updatedModules) {\n if (err || hadRuntimeError || !updatedModules) {\n if (err) {\n console.warn(\"[Fast Refresh] performing full reload\\n\\n\" + \"Fast Refresh will perform a full reload when you edit a file that's imported by modules outside of the React rendering tree.\\n\" + \"You might have a file which exports a React component but also exports a value that is imported by a non-React component file.\\n\" + \"Consider migrating the non-React component export to a separate file and importing it into both files.\\n\\n\" + \"It is also possible the parent component of the component you edited is a class component, which disables Fast Refresh.\\n\" + \"Fast Refresh requires at least one parent function component in your React tree.\");\n } else if (hadRuntimeError) {\n console.warn(\"[Fast Refresh] performing full reload because your application had an unrecoverable error\");\n }\n performFullReload(err);\n return;\n }\n const hasUpdates = Boolean(updatedModules.length);\n if (typeof onHotUpdateSuccess === \"function\") {\n // Maybe we want to do something.\n onHotUpdateSuccess(hasUpdates);\n }\n if (isUpdateAvailable()) {\n // While we were updating, there was a new update! Do it again.\n // However, this time, don't trigger a pending refresh state.\n tryApplyUpdates(hasUpdates ? undefined : onBeforeHotUpdate, hasUpdates ? _client.onBuildOk : onHotUpdateSuccess);\n } else {\n (0, _client.onBuildOk)();\n if (false) {}\n }\n }\n // https://webpack.js.org/api/hot-module-replacement/#check\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n module.hot.check(/* autoApply */ false).then((updatedModules)=>{\n if (!updatedModules) {\n return null;\n }\n if (typeof onBeforeHotUpdate === \"function\") {\n const hasUpdates = Boolean(updatedModules.length);\n onBeforeHotUpdate(hasUpdates);\n }\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n return module.hot.apply();\n }).then((updatedModules)=>{\n handleApplyUpdates(null, updatedModules);\n }, (err)=>{\n handleApplyUpdates(err, null);\n });\n}\nfunction performFullReload(err) {\n const stackTrace = err && (err.stack && err.stack.split(\"\\n\").slice(0, 5).join(\"\\n\") || err.message || err + \"\");\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-full-reload\",\n stackTrace,\n hadRuntimeError: !!hadRuntimeError\n }));\n window.location.reload();\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=hot-dev-client.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZXJyb3Itb3ZlcmxheS9ob3QtZGV2LWNsaWVudC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQSx1RUFBdUU7QUFDdkUsMERBQTBELEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FzQjVELEdBQUcsOEVBQThFO0FBQ2xGLHFCQUFxQjtBQUNyQiwyR0FBMkc7QUFDOUY7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRkgsMkNBQTBDO0lBQ3RDSSxZQUFZLElBQUk7SUFDaEJDLEtBQUssV0FBVztRQUNaLE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQywyQkFBMkJDLG1CQUFPQSxDQUFDLDRHQUF5QztBQUNsRixNQUFNQyxVQUFVRCxtQkFBT0EsQ0FBQyx3SUFBd0Q7QUFDaEYsTUFBTUUsYUFBYSxXQUFXLEdBQUdILHlCQUF5QkksQ0FBQyxDQUFDSCxtQkFBT0EsQ0FBQyw0RkFBK0I7QUFDbkcsTUFBTUksYUFBYUosbUJBQU9BLENBQUMsbUZBQWE7QUFDeEMsTUFBTUsseUJBQXlCLFdBQVcsR0FBR04seUJBQXlCSSxDQUFDLENBQUNILG1CQUFPQSxDQUFDLCtHQUEyQjtBQUMzR00sT0FBT0MsaUJBQWlCLEdBQUdDLEtBQUtDLEtBQUssQ0FBQ0QsS0FBS0UsTUFBTSxLQUFLLE1BQU1DLEtBQUtDLEdBQUc7QUFDcEUsSUFBSUMsa0JBQWtCLEtBQUs7QUFDM0IsSUFBSUM7QUFDSixTQUFTaEIsVUFBVTtJQUNkLElBQUdHLFFBQVFjLFFBQVE7SUFDbkIsSUFBR1gsV0FBV1ksa0JBQWtCLEVBQUUsQ0FBQ0MsUUFBUTtRQUN4QyxJQUFJLENBQUNBLE1BQU1DLElBQUksQ0FBQ0MsUUFBUSxDQUFDLFdBQVc7UUFDcEMsSUFBSTtZQUNBQyxlQUFlSDtRQUNuQixFQUFFLE9BQU9JLElBQUk7WUFDVEMsUUFBUUMsSUFBSSxDQUFDLDBCQUEwQk4sTUFBTUMsSUFB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WWxELFFBQVFrRCxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9sRCxRQUFRa0QsT0FBTyxDQUFDbUUsVUFBVSxLQUFLLGFBQWE7SUFDckt2SCxPQUFPQyxjQUFjLENBQUNDLFFBQVFrRCxPQUFPLEVBQUUsY0FBYztRQUFFakQsT0FBTyxJQUFJO0lBQUM7SUFDbkVILE9BQU93SCxNQUFNLENBQUN0SCxRQUFRa0QsT0FBTyxFQUFFbEQ7SUFDL0IrRixPQUFPL0YsT0FBTyxHQUFHQSxRQUFRa0QsT0FBTztBQUNsQyxDQUFDLENBRUQsMENBQTBDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9lcnJvci1vdmVybGF5L2hvdC1kZXYtY2xpZW50LmpzPzE2MDAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVE9ETzogUmVtb3ZlIHVzZSBvZiBgYW55YCB0eXBlLiBGaXggbm8tdXNlLWJlZm9yZS1kZWZpbmUgdmlvbGF0aW9ucy5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZSAqLyAvKipcbiAqIE1JVCBMaWNlbnNlXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqLyAvLyBUaGlzIGZpbGUgaXMgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBDcmVhdGUgUmVhY3QgQXBwIEhNUiBkZXYgY2xpZW50IHRoYXRcbi8vIGNhbiBiZSBmb3VuZCBoZXJlOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2NyZWF0ZS1yZWFjdC1hcHAvYmxvYi92My40LjEvcGFja2FnZXMvcmVhY3QtZGV2LXV0aWxzL3dlYnBhY2tIb3REZXZDbGllbnQuanNcblwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGVmYXVsdFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY29ubmVjdDtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfY2xpZW50ID0gcmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9AbmV4dC9yZWFjdC1kZXYtb3ZlcmxheS9kaXN0L2NsaWVudFwiKTtcbmNvbnN0IF9zdHJpcGFuc2kgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvc3RyaXAtYW5zaVwiKSk7XG5jb25zdCBfd2Vic29ja2V0ID0gcmVxdWlyZShcIi4vd2Vic29ja2V0XCIpO1xuY29uc3QgX2Zvcm1hdHdlYnBhY2ttZXNzYWdlcyA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcIi4vZm9ybWF0LXdlYnBhY2stbWVzc2FnZXNcIikpO1xud2luZG93Ll9fbmV4dERldkNsaWVudElkID0gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwICsgRGF0ZS5ub3coKSk7XG5sZXQgaGFkUnVudGltZUVycm9yID0gZmFsc2U7XG5sZXQgY3VzdG9tSG1yRXZlbnRIYW5kbGVyO1xuZnVuY3Rpb24gY29ubmVjdCgpIHtcbiAgICAoMCwgX2NsaWVudC5yZWdpc3RlcikoKTtcbiAgICAoMCwgX3dlYnNvY2tldC5hZGRNZXNzYWdlTGlzdGVuZXIpKChldmVudCk9PntcbiAgICAgICAgaWYgKCFldmVudC5kYXRhLmluY2x1ZGVzKFwiYWN0aW9uXCIpKSByZXR1cm47XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBwcm9jZXNzTWVzc2FnZShldmVudCk7XG4gICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJJbnZhbGlkIEhNUiBtZXNzYWdlOiBcIiArIGV2ZW50LmRhdGEgKyBcIlxcblwiLCBleCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBzdWJzY3JpYmVUb0htckV2ZW50IChoYW5kbGVyKSB7XG4gICAgICAgICAgICBjdXN0b21IbXJFdmVudEhhbmRsZXIgPSBoYW5kbGVyO1xuICAgICAgICB9LFxuICAgICAgICBvblVucmVjb3ZlcmFibGVFcnJvciAoKSB7XG4gICAgICAgICAgICBoYWRSdW50aW1lRXJyb3IgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfTtcbn1cbi8vIFJlbWVtYmVyIHNvbWUgc3RhdGUgcmVsYXRlZCB0byBob3QgbW9kdWxlIHJlcGxhY2VtZW50LlxudmFyIGlzRmlyc3RDb21waWxhdGlvbiA9IHRydWU7XG52YXIgbW9zdFJlY2VudENvbXBpbGF0aW9uSGFzaCA9IG51bGw7XG52YXIgaGFzQ29tcGlsZUVycm9ycyA9IGZhbHNlO1xuZnVuY3Rpb24gY2xlYXJPdXRkYXRlZEVycm9ycygpIHtcbiAgICAvLyBDbGVhbiB1cCBvdXRkYXRlZCBjb21waWxlIGVycm9ycywgaWYgYW55LlxuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgY29uc29sZS5jbGVhciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGlmIChoYXNDb21waWxlRXJyb3JzKSB7XG4gICAgICAgICAgICBjb25zb2xlLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyBTdWNjZXNzZnVsIGNvbXBpbGF0aW9uLlxuZnVuY3Rpb24gaGFuZGxlU3VjY2VzcygpIHtcbiAgICBjbGVhck91dGRhdGVkRXJyb3JzKCk7XG4gICAgY29uc3QgaXNIb3RVcGRhdGUgPSAhaXNGaXJzdENvbXBpbGF0aW9uIHx8IHdpbmRvdy5fX05FWFRfREFUQV9fLnBhZ2UgIT09IFwiL19lcnJvclwiICYmIGlzVXBkYXRlQXZhaWxhYmxlKCk7XG4gICAgaXNGaXJzdENvbXBpbGF0aW9uID0gZmFsc2U7XG4gICAgaGFzQ29tcGlsZUVycm9ycyA9IGZhbHNlO1xuICAgIC8vIEF0dGVtcHQgdG8gYXBwbHkgaG90IHVwZGF0ZXMgb3IgcmVsb2FkLlxuICAgIGlmIChpc0hvdFVwZGF0ZSkge1xuICAgICAgICB0cnlBcHBseVVwZGF0ZXMob25CZWZvcmVGYXN0UmVmcmVzaCwgb25GYXN0UmVmcmVzaCk7XG4gICAgfVxufVxuLy8gQ29tcGlsYXRpb24gd2l0aCB3YXJuaW5ncyAoZS5nLiBFU0xpbnQpLlxuZnVuY3Rpb24gaGFuZGxlV2FybmluZ3Mod2FybmluZ3MpIHtcbiAgICBjbGVhck91dGRhdGVkRXJyb3JzKCk7XG4gICAgY29uc3QgaXNIb3RVcGRhdGUgPSAhaXNGaXJzdENvbXBpbGF0aW9uO1xuICAgIGlzRmlyc3RDb21waWxhdGlvbiA9IGZhbHNlO1xuICAgIGhhc0NvbXBpbGVFcnJvcnMgPSBmYWxzZTtcbiAgICBmdW5jdGlvbiBwcmludFdhcm5pbmdzKCkge1xuICAgICAgICAvLyBQcmludCB3YXJuaW5ncyB0byB0aGUgY29uc29sZS5cbiAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gKDAsIF9mb3JtYXR3ZWJwYWNrbWVzc2FnZXMuZGVmYXVsdCkoe1xuICAgICAgICAgICAgd2FybmluZ3M6IHdhcm5pbmdzLFxuICAgICAgICAgICAgZXJyb3JzOiBbXVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBjb25zb2xlLndhcm4gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgdmFyIF9mb3JtYXR0ZWRfd2FybmluZ3M7XG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgKChfZm9ybWF0dGVkX3dhcm5pbmdzID0gZm9ybWF0dGVkLndhcm5pbmdzKSA9PSBudWxsID8gdm9pZCAwIDogX2Zvcm1hdHRlZF93YXJuaW5ncy5sZW5ndGgpOyBpKyspe1xuICAgICAgICAgICAgICAgIGlmIChpID09PSA1KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlRoZXJlIHdlcmUgbW9yZSB3YXJuaW5ncyBpbiBvdGhlciBmaWxlcy5cXG5cIiArIFwiWW91IGNhbiBmaW5kIGEgY29tcGxldGUgbG9nIGluIHRoZSB0ZXJtaW5hbC5cIik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oKDAsIF9zdHJpcGFuc2kuZGVmYXVsdCkoZm9ybWF0dGVkLndhcm5pbmdzW2ldKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpbnRXYXJuaW5ncygpO1xuICAgIC8vIEF0dGVtcHQgdG8gYXBwbHkgaG90IHVwZGF0ZXMgb3IgcmVsb2FkLlxuICAgIGlmIChpc0hvdFVwZGF0ZSkge1xuICAgICAgICB0cnlBcHBseVVwZGF0ZXMob25CZWZvcmVGYXN0UmVmcmVzaCwgb25GYXN0UmVmcmVzaCk7XG4gICAgfVxufVxuLy8gQ29tcGlsYXRpb24gd2l0aCBlcnJvcnMgKGUuZy4gc3ludGF4IGVycm9yIG9yIG1pc3NpbmcgbW9kdWxlcykuXG5mdW5jdGlvbiBoYW5kbGVFcnJvcnMoZXJyb3JzKSB7XG4gICAgY2xlYXJPdXRkYXRlZEVycm9ycygpO1xuICAgIGlzRmlyc3RDb21waWxhdGlvbiA9IGZhbHNlO1xuICAgIGhhc0NvbXBpbGVFcnJvcnMgPSB0cnVlO1xuICAgIC8vIFwiTWFzc2FnZVwiIHdlYnBhY2sgbWVzc2FnZXMuXG4gICAgdmFyIGZvcm1hdHRlZCA9ICgwLCBfZm9ybWF0d2VicGFja21lc3NhZ2VzLmRlZmF1bHQpKHtcbiAgICAgICAgZXJyb3JzOiBlcnJvcnMsXG4gICAgICAgIHdhcm5pbmdzOiBbXVxuICAgIH0pO1xuICAgIC8vIE9ubHkgc2hvdyB0aGUgZmlyc3QgZXJyb3IuXG4gICAgKDAsIF9jbGllbnQub25CdWlsZEVycm9yKShmb3JtYXR0ZWQuZXJyb3JzWzBdKTtcbiAgICAvLyBBbHNvIGxvZyB0aGVtIHRvIHRoZSBjb25zb2xlLlxuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBmb3JtYXR0ZWQuZXJyb3JzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoKDAsIF9zdHJpcGFuc2kuZGVmYXVsdCkoZm9ybWF0dGVkLmVycm9yc1tpXSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIERvIG5vdCBhdHRlbXB0IHRvIHJlbG9hZCBub3cuXG4gICAgLy8gV2Ugd2lsbCByZWxvYWQgb24gbmV4dCBzdWNjZXNzIGluc3RlYWQuXG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9URVNUX01PREUpIHtcbiAgICAgICAgaWYgKHNlbGYuX19ORVhUX0hNUl9DQikge1xuICAgICAgICAgICAgc2VsZi5fX05FWFRfSE1SX0NCKGZvcm1hdHRlZC5lcnJvcnNbMF0pO1xuICAgICAgICAgICAgc2VsZi5fX05FWFRfSE1SX0NCID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cbmxldCBzdGFydExhdGVuY3kgPSB1bmRlZmluZWQ7XG5mdW5jdGlvbiBvbkJlZm9yZUZhc3RSZWZyZXNoKGhhc1VwZGF0ZXMpIHtcbiAgICBpZiAoaGFzVXBkYXRlcykge1xuICAgICAgICAvLyBPbmx5IHRyaWdnZXIgYSBwZW5kaW5nIHN0YXRlIGlmIHdlIGhhdmUgdXBkYXRlcyB0byBhcHBseVxuICAgICAgICAvLyAoY2YuIG9uRmFzdFJlZnJlc2gpXG4gICAgICAgICgwLCBfY2xpZW50Lm9uQmVmb3JlUmVmcmVzaCkoKTtcbiAgICB9XG59XG5mdW5jdGlvbiBvbkZhc3RSZWZyZXNoKGhhc1VwZGF0ZXMpIHtcbiAgICAoMCwgX2NsaWVudC5vbkJ1aWxkT2spKCk7XG4gICAgaWYgKGhhc1VwZGF0ZXMpIHtcbiAgICAgICAgLy8gT25seSBjb21wbGV0ZSBhIHBlbmRpbmcgc3RhdGUgaWYgd2UgYXBwbGllZCB1cGRhdGVzXG4gICAgICAgIC8vIChjZi4gb25CZWZvcmVGYXN0UmVmcmVzaClcbiAgICAgICAgKDAsIF9jbGllbnQub25SZWZyZXNoKSgpO1xuICAgIH1cbiAgICBpZiAoc3RhcnRMYXRlbmN5KSB7XG4gICAgICAgIGNvbnN0IGVuZExhdGVuY3kgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCBsYXRlbmN5ID0gZW5kTGF0ZW5jeSAtIHN0YXJ0TGF0ZW5jeTtcbiAgICAgICAgY29uc29sZS5sb2coXCJbRmFzdCBSZWZyZXNoXSBkb25lIGluIFwiICsgbGF0ZW5jeSArIFwibXNcIik7XG4gICAgICAgICgwLCBfd2Vic29ja2V0LnNlbmRNZXNzYWdlKShKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBldmVudDogXCJjbGllbnQtaG1yLWxhdGVuY3lcIixcbiAgICAgICAgICAgIGlkOiB3aW5kb3cuX19uZXh0RGV2Q2xpZW50SWQsXG4gICAgICAgICAgICBzdGFydFRpbWU6IHN0YXJ0TGF0ZW5jeSxcbiAgICAgICAgICAgIGVuZFRpbWU6IGVuZExhdGVuY3lcbiAgICAgICAgfSkpO1xuICAgICAgICBpZiAoc2VsZi5fX05FWFRfSE1SX0xBVEVOQ1lfQ0IpIHtcbiAgICAgICAgICAgIHNlbGYuX19ORVhUX0hNUl9MQVRFTkNZX0NCKGxhdGVuY3kpO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8gVGhlcmUgaXMgYSBuZXdlciB2ZXJzaW9uIG9mIHRoZSBjb2RlIGF2YWlsYWJsZS5cbmZ1bmN0aW9uIGhhbmRsZUF2YWlsYWJsZUhhc2goaGFzaCkge1xuICAgIC8vIFVwZGF0ZSBsYXN0IGtub3duIGNvbXBpbGF0aW9uIGhhc2guXG4gICAgbW9zdFJlY2VudENvbXBpbGF0aW9uSGFzaCA9IGhhc2g7XG59XG4vLyBIYW5kbGUgbWVzc2FnZXMgZnJvbSB0aGUgc2VydmVyLlxuZnVuY3Rpb24gcHJvY2Vzc01lc3NhZ2UoZSkge1xuICAgIGNvbnN0IG9iaiA9IEpTT04ucGFyc2UoZS5kYXRhKTtcbiAgICBzd2l0Y2gob2JqLmFjdGlvbil7XG4gICAgICAgIGNhc2UgXCJidWlsZGluZ1wiOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0YXJ0TGF0ZW5jeSA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJbRmFzdCBSZWZyZXNoXSByZWJ1aWxkaW5nXCIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlIFwiYnVpbHRcIjpcbiAgICAgICAgY2FzZSBcInN5bmNcIjpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZiAob2JqLmhhc2gpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQXZhaWxhYmxlSGFzaChvYmouaGFzaCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHsgZXJyb3JzICwgd2FybmluZ3MgIH0gPSBvYmo7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzRXJyb3JzID0gQm9vbGVhbihlcnJvcnMgJiYgZXJyb3JzLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0Vycm9ycykge1xuICAgICAgICAgICAgICAgICAgICAoMCwgX3dlYnNvY2tldC5zZW5kTWVzc2FnZSkoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6IFwiY2xpZW50LWVycm9yXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckNvdW50OiBlcnJvcnMubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SWQ6IHdpbmRvdy5fX25leHREZXZDbGllbnRJZFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVFcnJvcnMoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzV2FybmluZ3MgPSBCb29sZWFuKHdhcm5pbmdzICYmIHdhcm5pbmdzLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc1dhcm5pbmdzKSB7XG4gICAgICAgICAgICAgICAgICAgICgwLCBfd2Vic29ja2V0LnNlbmRNZXNzYWdlKShKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudDogXCJjbGllbnQtd2FybmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ0NvdW50OiB3YXJuaW5ncy5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJZDogd2luZG93Ll9fbmV4dERldkNsaWVudElkXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVdhcm5pbmdzKHdhcm5pbmdzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKDAsIF93ZWJzb2NrZXQuc2VuZE1lc3NhZ2UpKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQ6IFwiY2xpZW50LXN1Y2Nlc3NcIixcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50SWQ6IHdpbmRvdy5fX25leHREZXZDbGllbnRJZFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlU3VjY2VzcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlIFwic2VydmVyQ29tcG9uZW50Q2hhbmdlc1wiOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIFNlcnZlciBjb21wb25lbnQgY2hhbmdlcyBkb24ndCBhcHBseSB0byBgcGFnZXNgLlxuICAgICAgICAgICAgICAgIC8vIFRPRE8tQVBQOiBSZW1vdmUgcmVsb2FkIG9uY2UgdGhlIGNvcnJlY3Qgb3ZlcmxheSBpcyByZW5kZXJlZCBvbiBpbml0aWFsIHBhZ2UgbG9hZCBpbiBhcHAgZGlyXG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZiAoY3VzdG9tSG1yRXZlbnRIYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbUhtckV2ZW50SGFuZGxlcihvYmopO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgfVxufVxuLy8gSXMgdGhlcmUgYSBuZXdlciB2ZXJzaW9uIG9mIHRoaXMgY29kZSBhdmFpbGFibGU/XG5mdW5jdGlvbiBpc1VwZGF0ZUF2YWlsYWJsZSgpIHtcbiAgICAvKiBnbG9iYWxzIF9fd2VicGFja19oYXNoX18gKi8gLy8gX193ZWJwYWNrX2hhc2hfXyBpcyB0aGUgaGFzaCBvZiB0aGUgY3VycmVudCBjb21waWxhdGlvbi5cbiAgICAvLyBJdCdzIGEgZ2xvYmFsIHZhcmlhYmxlIGluamVjdGVkIGJ5IFdlYnBhY2suXG4gICAgcmV0dXJuIG1vc3RSZWNlbnRDb21waWxhdGlvbkhhc2ggIT09IF9fd2VicGFja19oYXNoX187XG59XG4vLyBXZWJwYWNrIGRpc2FsbG93cyB1cGRhdGVzIGluIG90aGVyIHN0YXRlcy5cbmZ1bmN0aW9uIGNhbkFwcGx5VXBkYXRlcygpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE86IG1vZHVsZS5ob3QgZXhpc3RzIGJ1dCB0eXBlIG5lZWRzIHRvIGJlIGFkZGVkLiBDYW4ndCB1c2UgYGFzIGFueWAgaGVyZSBhcyB3ZWJwYWNrIHBhcnNlcyBmb3IgYG1vZHVsZS5ob3RgIGNhbGxzLlxuICAgIHJldHVybiBtb2R1bGUuaG90LnN0YXR1cygpID09PSBcImlkbGVcIjtcbn1cbmZ1bmN0aW9uIGFmdGVyQXBwbHlVcGRhdGVzKGZuKSB7XG4gICAgaWYgKGNhbkFwcGx5VXBkYXRlcygpKSB7XG4gICAgICAgIGZuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlcihzdGF0dXMpIHtcbiAgICAgICAgICAgIGlmIChzdGF0dXMgPT09IFwiaWRsZVwiKSB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPOiBtb2R1bGUuaG90IGV4aXN0cyBidXQgdHlwZSBuZWVkcyB0byBiZSBhZGRlZC4gQ2FuJ3QgdXNlIGBhcyBhbnlgIGhlcmUgYXMgd2VicGFjayBwYXJzZXMgZm9yIGBtb2R1bGUuaG90YCBjYWxscy5cbiAgICAgICAgICAgICAgICBtb2R1bGUuaG90LnJlbW92ZVN0YXR1c0hhbmRsZXIoaGFuZGxlcik7XG4gICAgICAgICAgICAgICAgZm4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE86IG1vZHVsZS5ob3QgZXhpc3RzIGJ1dCB0eXBlIG5lZWRzIHRvIGJlIGFkZGVkLiBDYW4ndCB1c2UgYGFzIGFueWAgaGVyZSBhcyB3ZWJwYWNrIHBhcnNlcyBmb3IgYG1vZHVsZS5ob3RgIGNhbGxzLlxuICAgICAgICBtb2R1bGUuaG90LmFkZFN0YXR1c0hhbmRsZXIoaGFuZGxlcik7XG4gICAgfVxufVxuLy8gQXR0ZW1wdCB0byB1cGRhdGUgY29kZSBvbiB0aGUgZmx5LCBmYWxsIGJhY2sgdG8gYSBoYXJkIHJlbG9hZC5cbmZ1bmN0aW9uIHRyeUFwcGx5VXBkYXRlcyhvbkJlZm9yZUhvdFVwZGF0ZSwgb25Ib3RVcGRhdGVTdWNjZXNzKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPOiBtb2R1bGUuaG90IGV4aXN0cyBidXQgdHlwZSBuZWVkcyB0byBiZSBhZGRlZC4gQ2FuJ3QgdXNlIGBhcyBhbnlgIGhlcmUgYXMgd2VicGFjayBwYXJzZXMgZm9yIGBtb2R1bGUuaG90YCBjYWxscy5cbiAgICBpZiAoIW1vZHVsZS5ob3QpIHtcbiAgICAgICAgLy8gSG90TW9kdWxlUmVwbGFjZW1lbnRQbHVnaW4gaXMgbm90IGluIFdlYnBhY2sgY29uZmlndXJhdGlvbi5cbiAgICAgICAgY29uc29sZS5lcnJvcihcIkhvdE1vZHVsZVJlcGxhY2VtZW50UGx1Z2luIGlzIG5vdCBpbiBXZWJwYWNrIGNvbmZpZ3VyYXRpb24uXCIpO1xuICAgICAgICAvLyB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFpc1VwZGF0ZUF2YWlsYWJsZSgpIHx8ICFjYW5BcHBseVVwZGF0ZXMoKSkge1xuICAgICAgICAoMCwgX2NsaWVudC5vbkJ1aWxkT2spKCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFuZGxlQXBwbHlVcGRhdGVzKGVyciwgdXBkYXRlZE1vZHVsZXMpIHtcbiAgICAgICAgaWYgKGVyciB8fCBoYWRSdW50aW1lRXJyb3IgfHwgIXVwZGF0ZWRNb2R1bGVzKSB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiW0Zhc3QgUmVmcmVzaF0gcGVyZm9ybWluZyBmdWxsIHJlbG9hZFxcblxcblwiICsgXCJGYXN0IFJlZnJlc2ggd2lsbCBwZXJmb3JtIGEgZnVsbCByZWxvYWQgd2hlbiB5b3UgZWRpdCBhIGZpbGUgdGhhdCdzIGltcG9ydGVkIGJ5IG1vZHVsZXMgb3V0c2lkZSBvZiB0aGUgUmVhY3QgcmVuZGVyaW5nIHRyZWUuXFxuXCIgKyBcIllvdSBtaWdodCBoYXZlIGEgZmlsZSB3aGljaCBleHBvcnRzIGEgUmVhY3QgY29tcG9uZW50IGJ1dCBhbHNvIGV4cG9ydHMgYSB2YWx1ZSB0aGF0IGlzIGltcG9ydGVkIGJ5IGEgbm9uLVJlYWN0IGNvbXBvbmVudCBmaWxlLlxcblwiICsgXCJDb25zaWRlciBtaWdyYXRpbmcgdGhlIG5vbi1SZWFjdCBjb21wb25lbnQgZXhwb3J0IHRvIGEgc2VwYXJhdGUgZmlsZSBhbmQgaW1wb3J0aW5nIGl0IGludG8gYm90aCBmaWxlcy5cXG5cXG5cIiArIFwiSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGUgcGFyZW50IGNvbXBvbmVudCBvZiB0aGUgY29tcG9uZW50IHlvdSBlZGl0ZWQgaXMgYSBjbGFzcyBjb21wb25lbnQsIHdoaWNoIGRpc2FibGVzIEZhc3QgUmVmcmVzaC5cXG5cIiArIFwiRmFzdCBSZWZyZXNoIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBwYXJlbnQgZnVuY3Rpb24gY29tcG9uZW50IGluIHlvdXIgUmVhY3QgdHJlZS5cIik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhhZFJ1bnRpbWVFcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIltGYXN0IFJlZnJlc2hdIHBlcmZvcm1pbmcgZnVsbCByZWxvYWQgYmVjYXVzZSB5b3VyIGFwcGxpY2F0aW9uIGhhZCBhbiB1bnJlY292ZXJhYmxlIGVycm9yXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGVyZm9ybUZ1bGxSZWxvYWQoZXJyKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBoYXNVcGRhdGVzID0gQm9vbGVhbih1cGRhdGVkTW9kdWxlcy5sZW5ndGgpO1xuICAgICAgICBpZiAodHlwZW9mIG9uSG90VXBkYXRlU3VjY2VzcyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAvLyBNYXliZSB3ZSB3YW50IHRvIGRvIHNvbWV0aGluZy5cbiAgICAgICAgICAgIG9uSG90VXBkYXRlU3VjY2VzcyhoYXNVcGRhdGVzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNVcGRhdGVBdmFpbGFibGUoKSkge1xuICAgICAgICAgICAgLy8gV2hpbGUgd2Ugd2VyZSB1cGRhdGluZywgdGhlcmUgd2FzIGEgbmV3IHVwZGF0ZSEgRG8gaXQgYWdhaW4uXG4gICAgICAgICAgICAvLyBIb3dldmVyLCB0aGlzIHRpbWUsIGRvbid0IHRyaWdnZXIgYSBwZW5kaW5nIHJlZnJlc2ggc3RhdGUuXG4gICAgICAgICAgICB0cnlBcHBseVVwZGF0ZXMoaGFzVXBkYXRlcyA/IHVuZGVmaW5lZCA6IG9uQmVmb3JlSG90VXBkYXRlLCBoYXNVcGRhdGVzID8gX2NsaWVudC5vbkJ1aWxkT2sgOiBvbkhvdFVwZGF0ZVN1Y2Nlc3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgKDAsIF9jbGllbnQub25CdWlsZE9rKSgpO1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9URVNUX01PREUpIHtcbiAgICAgICAgICAgICAgICBhZnRlckFwcGx5VXBkYXRlcygoKT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5fX05FWFRfSE1SX0NCKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fTkVYVF9ITVJfQ0IoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19ORVhUX0hNUl9DQiA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBodHRwczovL3dlYnBhY2suanMub3JnL2FwaS9ob3QtbW9kdWxlLXJlcGxhY2VtZW50LyNjaGVja1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETzogbW9kdWxlLmhvdCBleGlzdHMgYnV0IHR5cGUgbmVlZHMgdG8gYmUgYWRkZWQuIENhbid0IHVzZSBgYXMgYW55YCBoZXJlIGFzIHdlYnBhY2sgcGFyc2VzIGZvciBgbW9kdWxlLmhvdGAgY2FsbHMuXG4gICAgbW9kdWxlLmhvdC5jaGVjaygvKiBhdXRvQXBwbHkgKi8gZmFsc2UpLnRoZW4oKHVwZGF0ZWRNb2R1bGVzKT0+e1xuICAgICAgICBpZiAoIXVwZGF0ZWRNb2R1bGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIG9uQmVmb3JlSG90VXBkYXRlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VwZGF0ZXMgPSBCb29sZWFuKHVwZGF0ZWRNb2R1bGVzLmxlbmd0aCk7XG4gICAgICAgICAgICBvbkJlZm9yZUhvdFVwZGF0ZShoYXNVcGRhdGVzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE86IG1vZHVsZS5ob3QgZXhpc3RzIGJ1dCB0eXBlIG5lZWRzIHRvIGJlIGFkZGVkLiBDYW4ndCB1c2UgYGFzIGFueWAgaGVyZSBhcyB3ZWJwYWNrIHBhcnNlcyBmb3IgYG1vZHVsZS5ob3RgIGNhbGxzLlxuICAgICAgICByZXR1cm4gbW9kdWxlLmhvdC5hcHBseSgpO1xuICAgIH0pLnRoZW4oKHVwZGF0ZWRNb2R1bGVzKT0+e1xuICAgICAgICBoYW5kbGVBcHBseVVwZGF0ZXMobnVsbCwgdXBkYXRlZE1vZHVsZXMpO1xuICAgIH0sIChlcnIpPT57XG4gICAgICAgIGhhbmRsZUFwcGx5VXBkYXRlcyhlcnIsIG51bGwpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gcGVyZm9ybUZ1bGxSZWxvYWQoZXJyKSB7XG4gICAgY29uc3Qgc3RhY2tUcmFjZSA9IGVyciAmJiAoZXJyLnN0YWNrICYmIGVyci5zdGFjay5zcGxpdChcIlxcblwiKS5zbGljZSgwLCA1KS5qb2luKFwiXFxuXCIpIHx8IGVyci5tZXNzYWdlIHx8IGVyciArIFwiXCIpO1xuICAgICgwLCBfd2Vic29ja2V0LnNlbmRNZXNzYWdlKShKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGV2ZW50OiBcImNsaWVudC1mdWxsLXJlbG9hZFwiLFxuICAgICAgICBzdGFja1RyYWNlLFxuICAgICAgICBoYWRSdW50aW1lRXJyb3I6ICEhaGFkUnVudGltZUVycm9yXG4gICAgfSkpO1xuICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aG90LWRldi1jbGllbnQuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsImNvbm5lY3QiLCJfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQiLCJyZXF1aXJlIiwiX2NsaWVudCIsIl9zdHJpcGFuc2kiLCJfIiwiX3dlYnNvY2tldCIsIl9mb3JtYXR3ZWJwYWNrbWVzc2FnZXMiLCJ3aW5kb3ciLCJfX25leHREZXZDbGllbnRJZCIsIk1hdGgiLCJyb3VuZCIsInJhbmRvbSIsIkRhdGUiLCJub3ciLCJoYWRSdW50aW1lRXJyb3IiLCJjdXN0b21IbXJFdmVudEhhbmRsZXIiLCJyZWdpc3RlciIsImFkZE1lc3NhZ2VMaXN0ZW5lciIsImV2ZW50IiwiZGF0YSIsImluY2x1ZGVzIiwicHJvY2Vzc01lc3NhZ2UiLCJleCIsImNvbnNvbGUiLCJ3YXJuIiwic3Vic2NyaWJlVG9IbXJFdmVudCIsImhhbmRsZXIiLCJvblVucmVjb3ZlcmFibGVFcnJvciIsImlzRmlyc3RDb21waWxhdGlvbiIsIm1vc3RSZWNlbnRDb21waWxhdGlvbkhhc2giLCJoYXNDb21waWxlRXJyb3JzIiwiY2xlYXJPdXRkYXRlZEVycm9ycyIsImNsZWFyIiwiaGFuZGxlU3VjY2VzcyIsImlzSG90VXBkYXRlIiwiX19ORVhUX0RBVEFfXyIsInBhZ2UiLCJpc1VwZGF0ZUF2YWlsYWJsZSIsInRyeUFwcGx5VXBkYXRlcyIsIm9uQmVmb3JlRmFzdFJlZnJlc2giLCJvbkZhc3RSZWZyZXNoIiwiaGFuZGxlV2FybmluZ3MiLCJ3YXJuaW5ncyIsInByaW50V2FybmluZ3MiLCJmb3JtYXR0ZWQiLCJkZWZhdWx0IiwiZXJyb3JzIiwiX2Zvcm1hdHRlZF93YXJuaW5ncyIsImkiLCJsZW5ndGgiLCJoYW5kbGVFcnJvcnMiLCJvbkJ1aWxkRXJyb3IiLCJlcnJvciIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfVEVTVF9NT0RFIiwic2VsZiIsIl9fTkVYVF9ITVJfQ0IiLCJzdGFydExhdGVuY3kiLCJ1bmRlZmluZWQiLCJoYXNVcGRhdGVzIiwib25CZWZvcmVSZWZyZXNoIiwib25CdWlsZE9rIiwib25SZWZyZXNoIiwiZW5kTGF0ZW5jeSIsImxhdGVuY3kiLCJsb2ciLCJzZW5kTWVzc2FnZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJpZCIsInN0YXJ0VGltZSIsImVuZFRpbWUiLCJfX05FWFRfSE1SX0xBVEVOQ1lfQ0IiLCJoYW5kbGVBdmFpbGFibGVIYXNoIiwiaGFzaCIsImUiLCJvYmoiLCJwYXJzZSIsImFjdGlvbiIsImhhc0Vycm9ycyIsIkJvb2xlYW4iLCJlcnJvckNvdW50IiwiY2xpZW50SWQiLCJoYXNXYXJuaW5ncyIsIndhcm5pbmdDb3VudCIsImxvY2F0aW9uIiwicmVsb2FkIiwiX193ZWJwYWNrX2hhc2hfXyIsImNhbkFwcGx5VXBkYXRlcyIsIm1vZHVsZSIsImhvdCIsInN0YXR1cyIsImFmdGVyQXBwbHlVcGRhdGVzIiwiZm4iLCJyZW1vdmVTdGF0dXNIYW5kbGVyIiwiYWRkU3RhdHVzSGFuZGxlciIsIm9uQmVmb3JlSG90VXBkYXRlIiwib25Ib3RVcGRhdGVTdWNjZXNzIiwiaGFuZGxlQXBwbHlVcGRhdGVzIiwiZXJyIiwidXBkYXRlZE1vZHVsZXMiLCJwZXJmb3JtRnVsbFJlbG9hZCIsImNoZWNrIiwidGhlbiIsImFwcGx5Iiwic3RhY2tUcmFjZSIsInN0YWNrIiwic3BsaXQiLCJzbGljZSIsImpvaW4iLCJtZXNzYWdlIiwiX19lc01vZHVsZSIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/error-overlay/hot-dev-client.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/dev/error-overlay/websocket.js": +/*!**********************************************************************!*\ + !*** ./node_modules/next/dist/client/dev/error-overlay/websocket.js ***! + \**********************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n addMessageListener: function() {\n return addMessageListener;\n },\n sendMessage: function() {\n return sendMessage;\n },\n connectHMR: function() {\n return connectHMR;\n }\n});\nlet source;\nconst eventCallbacks = [];\nlet lastActivity = Date.now();\nfunction getSocketProtocol(assetPrefix) {\n let protocol = location.protocol;\n try {\n // assetPrefix is a url\n protocol = new URL(assetPrefix).protocol;\n } catch (_) {}\n return protocol === \"http:\" ? \"ws\" : \"wss\";\n}\nfunction addMessageListener(cb) {\n eventCallbacks.push(cb);\n}\nfunction sendMessage(data) {\n if (!source || source.readyState !== source.OPEN) return;\n return source.send(data);\n}\nfunction connectHMR(options) {\n if (!options.timeout) {\n options.timeout = 5 * 1000;\n }\n function init() {\n if (source) source.close();\n function handleOnline() {\n if (options.log) console.log(\"[HMR] connected\");\n lastActivity = Date.now();\n }\n function handleMessage(event) {\n lastActivity = Date.now();\n eventCallbacks.forEach((cb)=>{\n cb(event);\n });\n }\n let timer;\n function handleDisconnect() {\n clearInterval(timer);\n source.onerror = null;\n source.close();\n setTimeout(init, options.timeout);\n }\n timer = setInterval(function() {\n if (Date.now() - lastActivity > options.timeout) {\n handleDisconnect();\n }\n }, options.timeout / 2);\n const { hostname , port } = location;\n const protocol = getSocketProtocol(options.assetPrefix || \"\");\n const assetPrefix = options.assetPrefix.replace(/^\\/+/, \"\");\n let url = protocol + \"://\" + hostname + \":\" + port + (assetPrefix ? \"/\" + assetPrefix : \"\");\n if (assetPrefix.startsWith(\"http\")) {\n url = protocol + \"://\" + assetPrefix.split(\"://\")[1];\n }\n source = new window.WebSocket(\"\" + url + options.path);\n source.onopen = handleOnline;\n source.onerror = handleDisconnect;\n source.onmessage = handleMessage;\n }\n init();\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=websocket.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZXJyb3Itb3ZlcmxheS93ZWJzb2NrZXQuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRixLQUFNQyxDQUFBQSxDQUlOO0FBQ0EsU0FBU0ksUUFBUUMsTUFBTSxFQUFFQyxHQUFHLEVBQUU7SUFDMUIsSUFBSSxJQUFJQyxRQUFRRCxJQUFJVixPQUFPQyxjQUFjLENBQUNRLFFBQVFFLE1BQU07UUFDcERDLFlBQVksSUFBSTtRQUNoQkMsS0FBS0gsR0FBRyxDQUFDQyxLQUFLO0lBQ2xCO0FBQ0o7QUFDQUgsUUFBUU4sU0FBUztJQUNiRyxvQkFBb0IsV0FBVztRQUMzQixPQUFPQTtJQUNYO0lBQ0FDLGFBQWEsV0FBVztRQUNwQixPQUFPQTtJQUNYO0lBQ0FDLFlBQVksV0FBVztRQUNuQixPQUFPQTtJQUNYO0FBQ0o7QUFDQSxJQUFJTztBQUNKLE1BQU1DLGlCQUFpQixFQUFFO0FBQ3pCLElBQUlDLGVBQWVDLEtBQUtDLEdBQUc7QUFDM0IsU0FBU0Msa0JBQWtCQyxXQUFXLEVBQUU7SUFDcEMsSUFBSUMsV0FBV0MsU0FBU0QsUUFBUTtJQUNoQyxJQUFJO1FBQ0EsdUJBQXVCO1FBQ3ZCQSxXQUFXLElBQUlFLElBQUlILGFBQWFDLFFBQVE7SUFDNUMsRUFBRSxPQUFPRyxHQUFHLENBQUM7SUFDYixPQUFPSCxhQUFhLFVBQVUsT0FBTyxLQUFLO0FBQzlDO0FBQ0EsU0FBU2hCLG1CQUFtQm9CLEVBQUUsRUFBRTtJQUM1QlYsZUFBZVcsSUFBSSxDQUFDRDtBQUN4QjtBQUNBLFNBQVNuQixZQUFZcUIsSUFBSSxFQUFFO0lBQ3ZCLElBQUksQ0FBQ2IsVUFBVUEsT0FBT2MsVUFBVSxLQUFLZCxPQUFPZSxJQUFJLEVBQUU7SUFDbEQsT0FBT2YsT0FBT2dCLElBQUksQ0FBQ0g7QUFDdkI7QUFDQSxTQUFTcEIsV0FBV3dCLE9BQU8sRUFBRTtJQUN6QixJQUFJLENBQUNBLFFBQVFDLE9BQU8sRUFBRTtRQUNsQkQsUUFBUUMsT0FBTyxHQUFHLElBQUk7SUFDMUIsQ0FBQztJQUNELFNBQVNDLE9BQU87UUFDWixJQUFJbkIsUUFBUUEsT0FBT29CLEtBQUs7UUFDeEIsU0FBU0MsZUFBZTtZQUNwQixJQUFJSixRQUFRSyxHQUFHLEVBQUVDLFFBQVFELEdBQUcsQ0FBQztZQUM3QnBCLGVBQWVDLEtBQUtDLEdBQUc7UUFDM0I7UUFDQSxTQUFTb0IsY0FBY0MsS0FBSyxFQUFFO1lBQzFCdkIsZUFBZUMsS0FBS0MsR0FBRztZQUN2QkgsZUFBZXlCLE9BQU8sQ0FBQyxDQUFDZixLQUFLO2dCQUN6QkEsR0FBR2M7WUFDUDtRQUNKO1FBQ0EsSUFBSUU7UUFDSixTQUFTQyxtQkFBbUI7WUFDeEJDLGNBQWNGO1lBQ2QzQixPQUFPOEIsT0FBTyxHQUFHLElBQUk7WUFDckI5QixPQUFPb0IsS0FBSztZQUNaVyxXQUFXWixNQUFNRixRQUFRQyxPQUFPO1FBQ3BDO1FBQ0FTLFFBQVFLLFlBQVksV0FBVztZQUMzQixJQUFJN0IsS0FBS0MsR0FBRyxLQUFLRixlQUFlZSxRQUFRQyxPQUFPLEVBQUU7Z0JBQzdDVTtZQUNKLENBQUM7UUFDTCxHQUFHWCxRQUFRQyxPQUFPLEdBQUc7UUFDckIsTUFBTSxFQUFFZSxTQUFRLEVBQUdDLEtBQUksRUFBRyxHQUFHMUI7UUFDN0IsTUFBTUQsV0FBV0Ysa0JBQWtCWSxRQUFRWCxXQUFXLElBQUk7UUFDMUQsTUFBTUEsY0FBY1csUUFBUVgsV0FBVyxDQUFDNkIsT0FBTyxDQUFDLFFBQVE7UUFDeEQsSUFBSUMsTUFBTTdCLFdBQVcsUUFBUTBCLFdBQVcsTUFBTUMsT0FBUTVCLENBQUFBLGNBQWMsTUFBTUEsY0FBYyxFQUFFO1FBQzFGLElBQUlBLFlBQVkrQixVQUFVLENBQUMsU0FBUztZQUNoQ0QsTUFBTTdCLFdBQVcsUUFBUUQsWUFBWWdDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN4RCxDQUFDO1FBQ0R0QyxTQUFTLElBQUl1QyxPQUFPQyxTQUFTLENBQUMsS0FBS0osTUFBTW5CLFFBQVF3QixJQUFJO1FBQ3JEekMsT0FBTzBDLE1BQU0sR0FBR3JCO1FBQ2hCckIsT0FBTzhCLE9BQU8sR0FBR0Y7UUFDakI1QixPQUFPMkMsU0FBUyxHQUFHbkI7SUFDdkI7SUFDQUw7QUFDSjtBQUVBLElBQUksQ0FBQyxPQUFPL0IsUUFBUXdELE9BQU8sS0FBSyxjQUFlLE9BQU94RCxRQUFRd0QsT0FBTyxLQUFLLFlBQVl4RCxRQUFRd0QsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPeEQsUUFBUXdELE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLGFBQWE7SUFDckszRCxPQUFPQyxjQUFjLENBQUNDLFFBQVF3RCxPQUFPLEVBQUUsY0FBYztRQUFFdkQsT0FBTyxJQUFJO0lBQUM7SUFDbkVILE9BQU80RCxNQUFNLENBQUMxRCxRQUFRd0QsT0FBTyxFQUFFeEQ7SUFDL0JFLE9BQU9GLE9BQU8sR0FBR0EsUUFBUXdELE9BQU87QUFDbEMsQ0FBQyxDQUVELHFDQUFxQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZXJyb3Itb3ZlcmxheS93ZWJzb2NrZXQuanM/YTliZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIGFkZE1lc3NhZ2VMaXN0ZW5lcjogbnVsbCxcbiAgICBzZW5kTWVzc2FnZTogbnVsbCxcbiAgICBjb25uZWN0SE1SOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIGFkZE1lc3NhZ2VMaXN0ZW5lcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBhZGRNZXNzYWdlTGlzdGVuZXI7XG4gICAgfSxcbiAgICBzZW5kTWVzc2FnZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzZW5kTWVzc2FnZTtcbiAgICB9LFxuICAgIGNvbm5lY3RITVI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY29ubmVjdEhNUjtcbiAgICB9XG59KTtcbmxldCBzb3VyY2U7XG5jb25zdCBldmVudENhbGxiYWNrcyA9IFtdO1xubGV0IGxhc3RBY3Rpdml0eSA9IERhdGUubm93KCk7XG5mdW5jdGlvbiBnZXRTb2NrZXRQcm90b2NvbChhc3NldFByZWZpeCkge1xuICAgIGxldCBwcm90b2NvbCA9IGxvY2F0aW9uLnByb3RvY29sO1xuICAgIHRyeSB7XG4gICAgICAgIC8vIGFzc2V0UHJlZml4IGlzIGEgdXJsXG4gICAgICAgIHByb3RvY29sID0gbmV3IFVSTChhc3NldFByZWZpeCkucHJvdG9jb2w7XG4gICAgfSBjYXRjaCAoXykge31cbiAgICByZXR1cm4gcHJvdG9jb2wgPT09IFwiaHR0cDpcIiA/IFwid3NcIiA6IFwid3NzXCI7XG59XG5mdW5jdGlvbiBhZGRNZXNzYWdlTGlzdGVuZXIoY2IpIHtcbiAgICBldmVudENhbGxiYWNrcy5wdXNoKGNiKTtcbn1cbmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHtcbiAgICBpZiAoIXNvdXJjZSB8fCBzb3VyY2UucmVhZHlTdGF0ZSAhPT0gc291cmNlLk9QRU4pIHJldHVybjtcbiAgICByZXR1cm4gc291cmNlLnNlbmQoZGF0YSk7XG59XG5mdW5jdGlvbiBjb25uZWN0SE1SKG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMudGltZW91dCkge1xuICAgICAgICBvcHRpb25zLnRpbWVvdXQgPSA1ICogMTAwMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICAgICAgaWYgKHNvdXJjZSkgc291cmNlLmNsb3NlKCk7XG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZU9ubGluZSgpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxvZykgY29uc29sZS5sb2coXCJbSE1SXSBjb25uZWN0ZWRcIik7XG4gICAgICAgICAgICBsYXN0QWN0aXZpdHkgPSBEYXRlLm5vdygpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZU1lc3NhZ2UoZXZlbnQpIHtcbiAgICAgICAgICAgIGxhc3RBY3Rpdml0eSA9IERhdGUubm93KCk7XG4gICAgICAgICAgICBldmVudENhbGxiYWNrcy5mb3JFYWNoKChjYik9PntcbiAgICAgICAgICAgICAgICBjYihldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdGltZXI7XG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZURpc2Nvbm5lY3QoKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICAgICAgICAgIHNvdXJjZS5vbmVycm9yID0gbnVsbDtcbiAgICAgICAgICAgIHNvdXJjZS5jbG9zZSgpO1xuICAgICAgICAgICAgc2V0VGltZW91dChpbml0LCBvcHRpb25zLnRpbWVvdXQpO1xuICAgICAgICB9XG4gICAgICAgIHRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpZiAoRGF0ZS5ub3coKSAtIGxhc3RBY3Rpdml0eSA+IG9wdGlvbnMudGltZW91dCkge1xuICAgICAgICAgICAgICAgIGhhbmRsZURpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgb3B0aW9ucy50aW1lb3V0IC8gMik7XG4gICAgICAgIGNvbnN0IHsgaG9zdG5hbWUgLCBwb3J0ICB9ID0gbG9jYXRpb247XG4gICAgICAgIGNvbnN0IHByb3RvY29sID0gZ2V0U29ja2V0UHJvdG9jb2wob3B0aW9ucy5hc3NldFByZWZpeCB8fCBcIlwiKTtcbiAgICAgICAgY29uc3QgYXNzZXRQcmVmaXggPSBvcHRpb25zLmFzc2V0UHJlZml4LnJlcGxhY2UoL15cXC8rLywgXCJcIik7XG4gICAgICAgIGxldCB1cmwgPSBwcm90b2NvbCArIFwiOi8vXCIgKyBob3N0bmFtZSArIFwiOlwiICsgcG9ydCArIChhc3NldFByZWZpeCA/IFwiL1wiICsgYXNzZXRQcmVmaXggOiBcIlwiKTtcbiAgICAgICAgaWYgKGFzc2V0UHJlZml4LnN0YXJ0c1dpdGgoXCJodHRwXCIpKSB7XG4gICAgICAgICAgICB1cmwgPSBwcm90b2NvbCArIFwiOi8vXCIgKyBhc3NldFByZWZpeC5zcGxpdChcIjovL1wiKVsxXTtcbiAgICAgICAgfVxuICAgICAgICBzb3VyY2UgPSBuZXcgd2luZG93LldlYlNvY2tldChcIlwiICsgdXJsICsgb3B0aW9ucy5wYXRoKTtcbiAgICAgICAgc291cmNlLm9ub3BlbiA9IGhhbmRsZU9ubGluZTtcbiAgICAgICAgc291cmNlLm9uZXJyb3IgPSBoYW5kbGVEaXNjb25uZWN0O1xuICAgICAgICBzb3VyY2Uub25tZXNzYWdlID0gaGFuZGxlTWVzc2FnZTtcbiAgICB9XG4gICAgaW5pdCgpO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD13ZWJzb2NrZXQuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwibW9kdWxlIiwiYWRkTWVzc2FnZUxpc3RlbmVyIiwic2VuZE1lc3NhZ2UiLCJjb25uZWN0SE1SIiwiX2V4cG9ydCIsInRhcmdldCIsImFsbCIsIm5hbWUiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwic291cmNlIiwiZXZlbnRDYWxsYmFja3MiLCJsYXN0QWN0aXZpdHkiLCJEYXRlIiwibm93IiwiZ2V0U29ja2V0UHJvdG9jb2wiLCJhc3NldFByZWZpeCIsInByb3RvY29sIiwibG9jYXRpb24iLCJVUkwiLCJfIiwiY2IiLCJwdXNoIiwiZGF0YSIsInJlYWR5U3RhdGUiLCJPUEVOIiwic2VuZCIsIm9wdGlvbnMiLCJ0aW1lb3V0IiwiaW5pdCIsImNsb3NlIiwiaGFuZGxlT25saW5lIiwibG9nIiwiY29uc29sZSIsImhhbmRsZU1lc3NhZ2UiLCJldmVudCIsImZvckVhY2giLCJ0aW1lciIsImhhbmRsZURpc2Nvbm5lY3QiLCJjbGVhckludGVydmFsIiwib25lcnJvciIsInNldFRpbWVvdXQiLCJzZXRJbnRlcnZhbCIsImhvc3RuYW1lIiwicG9ydCIsInJlcGxhY2UiLCJ1cmwiLCJzdGFydHNXaXRoIiwic3BsaXQiLCJ3aW5kb3ciLCJXZWJTb2NrZXQiLCJwYXRoIiwib25vcGVuIiwib25tZXNzYWdlIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/error-overlay/websocket.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/dev/fouc.js": +/*!***************************************************!*\ + !*** ./node_modules/next/dist/client/dev/fouc.js ***! + \***************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("// This wrapper function is used to safely select the best available function\n// to schedule removal of the no-FOUC styles workaround. requestAnimationFrame\n// is the ideal choice, but when used in iframes, there are no guarantees that\n// the callback will actually be called, which could stall the promise returned\n// from displayContent.\n//\n// See: https://www.vector-logic.com/blog/posts/on-request-animation-frame-and-embedded-iframes\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"displayContent\", ({\n enumerable: true,\n get: function() {\n return displayContent;\n }\n}));\nconst safeCallbackQueue = (callback)=>{\n if (window.requestAnimationFrame && window.self === window.top) {\n window.requestAnimationFrame(callback);\n } else {\n window.setTimeout(callback);\n }\n};\nfunction displayContent() {\n return new Promise((resolve)=>{\n safeCallbackQueue(function() {\n for(var x = document.querySelectorAll(\"[data-next-hide-fouc]\"), i = x.length; i--;){\n x[i].parentNode.removeChild(x[i]);\n }\n resolve();\n });\n });\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=fouc.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZm91Yy5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQSw2RUFBNkU7QUFDN0UsOEVBQThFO0FBQzlFLDhFQUE4RTtBQUM5RSwrRUFBK0U7QUFDL0UsdUJBQXVCO0FBQ3ZCLEVBQUU7QUFDRiwrRkFBK0Y7QUFDbEY7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRkgsa0RBQWlEO0lBQzdDSSxZQUFZLElBQUk7SUFDaEJDLEtBQUssV0FBVztRQUNaLE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQyxvQkFBb0IsQ0FBQ0MsV0FBVztJQUNsQyxJQUFJQyxPQUFPQyxxQkFBcUIsSUFBSUQsT0FBT0UsSUFBSSxLQUFLRixPQUFPRyxHQUFHLEVBQUU7UUFDNURILE9BQU9DLHFCQUFxQixDQUFDRjtJQUNqQyxPQUFPO1FBQ0hDLE9BQU9JLFVBQVUsQ0FBQ0w7SUFDdEIsQ0FBQztBQUNMO0FBQ0EsU0FBU0YsaUJBQWlCO0lBQ3RCLE9BQU8sSUFBSVEsUUFBUSxDQUFDQyxVQUFVO1FBQzFCUixrQkFBa0IsV0FBVztZQUN6QixJQUFJLElBQUlTLElBQUlDLFNBQVNDLGdCQUFnQixDQUFDLDBCQUEwQkMsSUFBSUgsRUFBRUksTUFBTSxFQUFFRCxLQUFLO2dCQUMvRUgsQ0FBQyxDQUFDRyxFQUFFLENBQUNFLFVBQVUsQ0FBQ0MsV0FBVyxDQUFDTixDQUFDLENBQUNHLEVBQUU7WUFDcEM7WUFDQUo7UUFDSjtJQUNKO0FBQ0o7QUFFQSxJQUFJLENBQUMsT0FBT2IsUUFBUXFCLE9BQU8sS0FBSyxjQUFlLE9BQU9yQixRQUFRcUIsT0FBTyxLQUFLLFlBQVlyQixRQUFRcUIsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPckIsUUFBUXFCLE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLGFBQWE7SUFDckt4QixPQUFPQyxjQUFjLENBQUNDLFFBQVFxQixPQUFPLEVBQUUsY0FBYztRQUFFcEIsT0FBTyxJQUFJO0lBQUM7SUFDbkVILE9BQU95QixNQUFNLENBQUN2QixRQUFRcUIsT0FBTyxFQUFFckI7SUFDL0J3QixPQUFPeEIsT0FBTyxHQUFHQSxRQUFRcUIsT0FBTztBQUNsQyxDQUFDLENBRUQsZ0NBQWdDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9mb3VjLmpzPzAwODciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyB3cmFwcGVyIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2FmZWx5IHNlbGVjdCB0aGUgYmVzdCBhdmFpbGFibGUgZnVuY3Rpb25cbi8vIHRvIHNjaGVkdWxlIHJlbW92YWwgb2YgdGhlIG5vLUZPVUMgc3R5bGVzIHdvcmthcm91bmQuIHJlcXVlc3RBbmltYXRpb25GcmFtZVxuLy8gaXMgdGhlIGlkZWFsIGNob2ljZSwgYnV0IHdoZW4gdXNlZCBpbiBpZnJhbWVzLCB0aGVyZSBhcmUgbm8gZ3VhcmFudGVlcyB0aGF0XG4vLyB0aGUgY2FsbGJhY2sgd2lsbCBhY3R1YWxseSBiZSBjYWxsZWQsIHdoaWNoIGNvdWxkIHN0YWxsIHRoZSBwcm9taXNlIHJldHVybmVkXG4vLyBmcm9tIGRpc3BsYXlDb250ZW50LlxuLy9cbi8vIFNlZTogaHR0cHM6Ly93d3cudmVjdG9yLWxvZ2ljLmNvbS9ibG9nL3Bvc3RzL29uLXJlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLWFuZC1lbWJlZGRlZC1pZnJhbWVzXG5cInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRpc3BsYXlDb250ZW50XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBkaXNwbGF5Q29udGVudDtcbiAgICB9XG59KTtcbmNvbnN0IHNhZmVDYWxsYmFja1F1ZXVlID0gKGNhbGxiYWNrKT0+e1xuICAgIGlmICh3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lICYmIHdpbmRvdy5zZWxmID09PSB3aW5kb3cudG9wKSB7XG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGNhbGxiYWNrKTtcbiAgICB9XG59O1xuZnVuY3Rpb24gZGlzcGxheUNvbnRlbnQoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKT0+e1xuICAgICAgICBzYWZlQ2FsbGJhY2tRdWV1ZShmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGZvcih2YXIgeCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1uZXh0LWhpZGUtZm91Y11cIiksIGkgPSB4Lmxlbmd0aDsgaS0tOyl7XG4gICAgICAgICAgICAgICAgeFtpXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHhbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Zm91Yy5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiZGlzcGxheUNvbnRlbnQiLCJzYWZlQ2FsbGJhY2tRdWV1ZSIsImNhbGxiYWNrIiwid2luZG93IiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwic2VsZiIsInRvcCIsInNldFRpbWVvdXQiLCJQcm9taXNlIiwicmVzb2x2ZSIsIngiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJpIiwibGVuZ3RoIiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/fouc.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/dev/on-demand-entries-client.js": +/*!***********************************************************************!*\ + !*** ./node_modules/next/dist/client/dev/on-demand-entries-client.js ***! + \***********************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return _default;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _router = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../router */ \"./node_modules/next/dist/client/router.js\"));\nconst _websocket = __webpack_require__(/*! ./error-overlay/websocket */ \"./node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nconst _default = async (page)=>{\n if (page) {\n // in AMP the router isn't initialized on the client and\n // client-transitions don't occur so ping initial page\n setInterval(()=>{\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"ping\",\n page\n }));\n }, 2500);\n } else {\n _router.default.ready(()=>{\n setInterval(()=>{\n // when notFound: true is returned we should use the notFoundPage\n // as the Router.pathname will point to the 404 page but we want\n // to ping the source page that returned notFound: true instead\n const notFoundSrcPage = self.__NEXT_DATA__.notFoundSrcPage;\n const pathname = (_router.default.pathname === \"/404\" || _router.default.pathname === \"/_error\") && notFoundSrcPage ? notFoundSrcPage : _router.default.pathname;\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"ping\",\n page: pathname\n }));\n }, 2500);\n });\n }\n (0, _websocket.addMessageListener)((event)=>{\n if (!event.data.includes(\"{\")) return;\n try {\n const payload = JSON.parse(event.data);\n // don't attempt fetching the page if we're already showing\n // the dev overlay as this can cause the error to be triggered\n // repeatedly\n if (payload.event === \"pong\" && payload.invalid && !self.__NEXT_DATA__.err) {\n // Payload can be invalid even if the page does exist.\n // So, we check if it can be created.\n fetch(location.href, {\n credentials: \"same-origin\"\n }).then((pageRes)=>{\n if (pageRes.status === 200) {\n // Page exists now, reload\n location.reload();\n } else {\n // Page doesn't exist\n if (self.__NEXT_DATA__.page === _router.default.pathname && _router.default.pathname !== \"/_error\") {\n // We are still on the page,\n // reload to show 404 error page\n location.reload();\n }\n }\n });\n }\n } catch (err) {\n console.error(\"on-demand-entries failed to parse response\", err);\n }\n });\n};\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=on-demand-entries-client.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvb24tZGVtYW5kLWVudHJpZXMtY2xpZW50LmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTyxJQUFJO0FBQ2YsQ0FBQyxFQUFDO0FBQ0ZILDJDQUEwQztJQUN0Q0ksWUFBWSxJQUFJO0lBQ2hCQyxLQUFLLFdBQVc7UUFDWixPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsTUFBTUMsMkJBQTJCQyxtQkFBT0EsQ0FBQyw0R0FBeUM7QUFDbEYsTUFBTUMsVUFBVSxXQUFXLEdBQUdGLHlCQUF5QkcsQ0FBQyxDQUFDRixtQkFBT0EsQ0FBQyw0REFBVztBQUM1RSxNQUFNRyxhQUFhSCxtQkFBT0EsQ0FBQyxpR0FBMkI7QUFDdEQsTUFBTUYsV0FBVyxPQUFPTSxPQUFPO0lBQzNCLElBQUlBLE1BQU07UUFDTix3REFBd0Q7UUFDeEQsc0RBQXNEO1FBQ3REQyxZQUFZLElBQUk7WUFDWCxJQUFHRixXQUFXRyxXQUFXLEVBQUVDLEtBQUtDLFNBQVMsQ0FBQztnQkFDdkNDLE9BQU87Z0JBQ1BMO1lBQ0o7UUFDSixHQUFHO0lBQ1AsT0FBTztRQUNISCxRQUFRUyxPQUFPLENBQUNDLEtBQUssQ0FBQyxJQUFJO1lBQ3RCTixZQUFZLElBQUk7Z0JBQ1osaUVBQWlFO2dCQUNqRSxnRUFBZ0U7Z0JBQ2hFLCtEQUErRDtnQkFDL0QsTUFBTU8sa0JBQWtCQyxLQUFLQyxhQUFhLENBQUNGLGVBQWU7Z0JBQzFELE1BQU1HLFdBQVcsQ0FBQ2QsUUFBUVMsT0FBTyxDQUFDSyxRQUFRLEtBQUssVUFBVWQsUUFBUVMsT0FBTyxDQUFDSyxRQUFRLEtBQUssU0FBUSxLQUFNSCxrQkFBa0JBLGtCQUFrQlgsUUFBUVMsT0FBTyxDQUFDSyxRQUFRO2dCQUMvSixJQUFHWixXQUFXRyxXQUFXLEVBQUVDLEtBQUtDLFNBQVMsQ0FBQztvQkFDdkNDLE9BQU87b0JBQ1BMLE1BQU1XO2dCQUNWO1lBQ0osR0FBRztRQUNQO0lBQ0osQ0FBQztJQUNBLElBQUdaLFdBQVdhLGtCQUFrQixFQUFFLENBQUNQLFFBQVE7UUFDeEMsSUFBSSxDQUFDQSxNQUFNUSxJQUFJLENBQUNDLFFBQVEsQ0FBQyxNQUFNO1FBQy9CLElBQUk7WUFDQSxNQUFNQyxVQUFVWixLQUFLYSxLQUFLLENBQUNYLE1BQU1RLElBQUk7WUFDckMsMkRBQTJEO1lBQzNELDhEQUE4RDtZQUM5RCxhQUFhO1lBQ2IsSUFBSUUsUUFBUVYsS0FBSyxLQUFLLFVBQVVVLFFBQVFFLE9BQU8sSUFBSSxDQUFDUixLQUFLQyxhQUFhLENBQUNRLEdBQUcsRUFBRTtnQkFDeEUsc0RBQXNEO2dCQUN0RCxxQ0FBcUM7Z0JBQ3JDQyxNQUFNQyxTQUFTQyxJQUFJLEVBQUU7b0JBQ2pCQyxhQUFhO2dCQUNqQixHQUFHQyxJQUFJLENBQUMsQ0FBQ0MsVUFBVTtvQkFDZixJQUFJQSxRQUFRQyxNQUFNLEtBQUssS0FBSzt3QkFDeEIsMEJBQTBCO3dCQUMxQkwsU0FBU00sTUFBTTtvQkFDbkIsT0FBTzt3QkFDSCxxQkFBcUI7d0JBQ3JCLElBQUlqQixLQUFLQyxhQUFhLENBQUNWLElBQUksS0FBS0gsUUFBUVMsT0FBTyxDQUFDSyxRQUFRLElBQUlkLFFBQVFTLE9BQU8sQ0FBQ0ssUUFBUSxLQUFLLFdBQVc7NEJBQ2hHLDRCQUE0Qjs0QkFDNUIsZ0NBQWdDOzRCQUNoQ1MsU0FBU00sTUFBTTt3QkFDbkIsQ0FBQztvQkFDTCxDQUFDO2dCQUNMO1lBQ0osQ0FBQztRQUNMLEVBQUUsT0FBT1IsS0FBSztZQUNWUyxRQUFRQyxLQUFLLENBQUMsOENBQThDVjtRQUNoRTtJQUNKO0FBQ0o7QUFFQSxJQUFJLENBQUMsT0FBTzVCLFFBQVFnQixPQUFPLEtBQUssY0FBZSxPQUFPaEIsUUFBUWdCLE9BQU8sS0FBSyxZQUFZaEIsUUFBUWdCLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT2hCLFFBQVFnQixPQUFPLENBQUN1QixVQUFVLEtBQUssYUFBYTtJQUNyS3pDLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUWdCLE9BQU8sRUFBRSxjQUFjO1FBQUVmLE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPMEMsTUFBTSxDQUFDeEMsUUFBUWdCLE9BQU8sRUFBRWhCO0lBQy9CeUMsT0FBT3pDLE9BQU8sR0FBR0EsUUFBUWdCLE9BQU87QUFDbEMsQ0FBQyxDQUVELG9EQUFvRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvb24tZGVtYW5kLWVudHJpZXMtY2xpZW50LmpzPzg0NWMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZWZhdWx0XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfZGVmYXVsdDtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfcm91dGVyID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi4vcm91dGVyXCIpKTtcbmNvbnN0IF93ZWJzb2NrZXQgPSByZXF1aXJlKFwiLi9lcnJvci1vdmVybGF5L3dlYnNvY2tldFwiKTtcbmNvbnN0IF9kZWZhdWx0ID0gYXN5bmMgKHBhZ2UpPT57XG4gICAgaWYgKHBhZ2UpIHtcbiAgICAgICAgLy8gaW4gQU1QIHRoZSByb3V0ZXIgaXNuJ3QgaW5pdGlhbGl6ZWQgb24gdGhlIGNsaWVudCBhbmRcbiAgICAgICAgLy8gY2xpZW50LXRyYW5zaXRpb25zIGRvbid0IG9jY3VyIHNvIHBpbmcgaW5pdGlhbCBwYWdlXG4gICAgICAgIHNldEludGVydmFsKCgpPT57XG4gICAgICAgICAgICAoMCwgX3dlYnNvY2tldC5zZW5kTWVzc2FnZSkoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGV2ZW50OiBcInBpbmdcIixcbiAgICAgICAgICAgICAgICBwYWdlXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0sIDI1MDApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIF9yb3V0ZXIuZGVmYXVsdC5yZWFkeSgoKT0+e1xuICAgICAgICAgICAgc2V0SW50ZXJ2YWwoKCk9PntcbiAgICAgICAgICAgICAgICAvLyB3aGVuIG5vdEZvdW5kOiB0cnVlIGlzIHJldHVybmVkIHdlIHNob3VsZCB1c2UgdGhlIG5vdEZvdW5kUGFnZVxuICAgICAgICAgICAgICAgIC8vIGFzIHRoZSBSb3V0ZXIucGF0aG5hbWUgd2lsbCBwb2ludCB0byB0aGUgNDA0IHBhZ2UgYnV0IHdlIHdhbnRcbiAgICAgICAgICAgICAgICAvLyB0byBwaW5nIHRoZSBzb3VyY2UgcGFnZSB0aGF0IHJldHVybmVkIG5vdEZvdW5kOiB0cnVlIGluc3RlYWRcbiAgICAgICAgICAgICAgICBjb25zdCBub3RGb3VuZFNyY1BhZ2UgPSBzZWxmLl9fTkVYVF9EQVRBX18ubm90Rm91bmRTcmNQYWdlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGhuYW1lID0gKF9yb3V0ZXIuZGVmYXVsdC5wYXRobmFtZSA9PT0gXCIvNDA0XCIgfHwgX3JvdXRlci5kZWZhdWx0LnBhdGhuYW1lID09PSBcIi9fZXJyb3JcIikgJiYgbm90Rm91bmRTcmNQYWdlID8gbm90Rm91bmRTcmNQYWdlIDogX3JvdXRlci5kZWZhdWx0LnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICgwLCBfd2Vic29ja2V0LnNlbmRNZXNzYWdlKShKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50OiBcInBpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgcGFnZTogcGF0aG5hbWVcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9LCAyNTAwKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgICgwLCBfd2Vic29ja2V0LmFkZE1lc3NhZ2VMaXN0ZW5lcikoKGV2ZW50KT0+e1xuICAgICAgICBpZiAoIWV2ZW50LmRhdGEuaW5jbHVkZXMoXCJ7XCIpKSByZXR1cm47XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gSlNPTi5wYXJzZShldmVudC5kYXRhKTtcbiAgICAgICAgICAgIC8vIGRvbid0IGF0dGVtcHQgZmV0Y2hpbmcgdGhlIHBhZ2UgaWYgd2UncmUgYWxyZWFkeSBzaG93aW5nXG4gICAgICAgICAgICAvLyB0aGUgZGV2IG92ZXJsYXkgYXMgdGhpcyBjYW4gY2F1c2UgdGhlIGVycm9yIHRvIGJlIHRyaWdnZXJlZFxuICAgICAgICAgICAgLy8gcmVwZWF0ZWRseVxuICAgICAgICAgICAgaWYgKHBheWxvYWQuZXZlbnQgPT09IFwicG9uZ1wiICYmIHBheWxvYWQuaW52YWxpZCAmJiAhc2VsZi5fX05FWFRfREFUQV9fLmVycikge1xuICAgICAgICAgICAgICAgIC8vIFBheWxvYWQgY2FuIGJlIGludmFsaWQgZXZlbiBpZiB0aGUgcGFnZSBkb2VzIGV4aXN0LlxuICAgICAgICAgICAgICAgIC8vIFNvLCB3ZSBjaGVjayBpZiBpdCBjYW4gYmUgY3JlYXRlZC5cbiAgICAgICAgICAgICAgICBmZXRjaChsb2NhdGlvbi5ocmVmLCB7XG4gICAgICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzOiBcInNhbWUtb3JpZ2luXCJcbiAgICAgICAgICAgICAgICB9KS50aGVuKChwYWdlUmVzKT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFnZVJlcy5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFnZSBleGlzdHMgbm93LCByZWxvYWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFnZSBkb2Vzbid0IGV4aXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5fX05FWFRfREFUQV9fLnBhZ2UgPT09IF9yb3V0ZXIuZGVmYXVsdC5wYXRobmFtZSAmJiBfcm91dGVyLmRlZmF1bHQucGF0aG5hbWUgIT09IFwiL19lcnJvclwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIHN0aWxsIG9uIHRoZSBwYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbG9hZCB0byBzaG93IDQwNCBlcnJvciBwYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwib24tZGVtYW5kLWVudHJpZXMgZmFpbGVkIHRvIHBhcnNlIHJlc3BvbnNlXCIsIGVycik7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW9uLWRlbWFuZC1lbnRyaWVzLWNsaWVudC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX2RlZmF1bHQiLCJfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQiLCJyZXF1aXJlIiwiX3JvdXRlciIsIl8iLCJfd2Vic29ja2V0IiwicGFnZSIsInNldEludGVydmFsIiwic2VuZE1lc3NhZ2UiLCJKU09OIiwic3RyaW5naWZ5IiwiZXZlbnQiLCJkZWZhdWx0IiwicmVhZHkiLCJub3RGb3VuZFNyY1BhZ2UiLCJzZWxmIiwiX19ORVhUX0RBVEFfXyIsInBhdGhuYW1lIiwiYWRkTWVzc2FnZUxpc3RlbmVyIiwiZGF0YSIsImluY2x1ZGVzIiwicGF5bG9hZCIsInBhcnNlIiwiaW52YWxpZCIsImVyciIsImZldGNoIiwibG9jYXRpb24iLCJocmVmIiwiY3JlZGVudGlhbHMiLCJ0aGVuIiwicGFnZVJlcyIsInN0YXR1cyIsInJlbG9hZCIsImNvbnNvbGUiLCJlcnJvciIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/on-demand-entries-client.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/dev/webpack-hot-middleware-client.js": +/*!****************************************************************************!*\ + !*** ./node_modules/next/dist/client/dev/webpack-hot-middleware-client.js ***! + \****************************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return _default;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _hotdevclient = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./error-overlay/hot-dev-client */ \"./node_modules/next/dist/client/dev/error-overlay/hot-dev-client.js\"));\nconst _websocket = __webpack_require__(/*! ./error-overlay/websocket */ \"./node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nconst _default = ()=>{\n const devClient = (0, _hotdevclient.default)();\n devClient.subscribeToHmrEvent((obj)=>{\n if (obj.action === \"reloadPage\") {\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-reload-page\",\n clientId: window.__nextDevClientId\n }));\n return window.location.reload();\n }\n if (obj.action === \"removedPage\") {\n const [page] = obj.data;\n if (page === window.next.router.pathname) {\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-removed-page\",\n clientId: window.__nextDevClientId,\n page\n }));\n return window.location.reload();\n }\n return;\n }\n if (obj.action === \"addedPage\") {\n const [page] = obj.data;\n if (page === window.next.router.pathname && typeof window.next.router.components[page] === \"undefined\") {\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-added-page\",\n clientId: window.__nextDevClientId,\n page\n }));\n return window.location.reload();\n }\n return;\n }\n throw new Error(\"Unexpected action \" + obj.action);\n });\n return devClient;\n};\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=webpack-hot-middleware-client.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvd2VicGFjay1ob3QtbWlkZGxld2FyZS1jbGllbnQuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRkgsMkNBQTBDO0lBQ3RDSSxZQUFZLElBQUk7SUFDaEJDLEtBQUssV0FBVztRQUNaLE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQywyQkFBMkJDLG1CQUFPQSxDQUFDLDRHQUF5QztBQUNsRixNQUFNQyxnQkFBZ0IsV0FBVyxHQUFHRix5QkFBeUJHLENBQUMsQ0FBQ0YsbUJBQU9BLENBQUMsMkdBQWdDO0FBQ3ZHLE1BQU1HLGFBQWFILG1CQUFPQSxDQUFDLGlHQUEyQjtBQUN0RCxNQUFNRixXQUFXLElBQUk7SUFDakIsTUFBTU0sWUFBWSxDQUFDLEdBQUdILGNBQWNJLE9BQU87SUFDM0NELFVBQVVFLG1CQUFtQixDQUFDLENBQUNDLE1BQU07UUFDakMsSUFBSUEsSUFBSUMsTUFBTSxLQUFLLGNBQWM7WUFDNUIsSUFBR0wsV0FBV00sV0FBVyxFQUFFQyxLQUFLQyxTQUFTLENBQUM7Z0JBQ3ZDQyxPQUFPO2dCQUNQQyxVQUFVQyxPQUFPQyxpQkFBaUI7WUFDdEM7WUFDQSxPQUFPRCxPQUFPRSxRQUFRLENBQUNDLE1BQU07UUFDakMsQ0FBQztRQUNELElBQUlWLElBQUlDLE1BQU0sS0FBSyxlQUFlO1lBQzlCLE1BQU0sQ0FBQ1UsS0FBSyxHQUFHWCxJQUFJWSxJQUFJO1lBQ3ZCLElBQUlELFNBQVNKLE9BQU9NLElBQUksQ0FBQ0MsTUFBTSxDQUFDQyxRQUFRLEVBQUU7Z0JBQ3JDLElBQUduQixXQUFXTSxXQUFXLEVBQUVDLEtBQUtDLFNBQVMsQ0FBQztvQkFDdkNDLE9BQU87b0JBQ1BDLFVBQVVDLE9BQU9DLGlCQUFpQjtvQkFDbENHO2dCQUNKO2dCQUNBLE9BQU9KLE9BQU9FLFFBQVEsQ0FBQ0MsTUFBTTtZQUNqQyxDQUFDO1lBQ0Q7UUFDSixDQUFDO1FBQ0QsSUFBSVYsSUFBSUMsTUFBTSxLQUFLLGFBQWE7WUFDNUIsTUFBTSxDQUFDVSxLQUFLLEdBQUdYLElBQUlZLElBQUk7WUFDdkIsSUFBSUQsU0FBU0osT0FBT00sSUFBSSxDQUFDQyxNQUFNLENBQUNDLFFBQVEsSUFBSSxPQUFPUixPQUFPTSxJQUFJLENBQUNDLE1BQU0sQ0FBQ0UsVUFBVSxDQUFDTCxLQUFLLEtBQUssYUFBYTtnQkFDbkcsSUFBR2YsV0FBV00sV0FBVyxFQUFFQyxLQUFLQyxTQUFTLENBQUM7b0JBQ3ZDQyxPQUFPO29CQUNQQyxVQUFVQyxPQUFPQyxpQkFBaUI7b0JBQ2xDRztnQkFDSjtnQkFDQSxPQUFPSixPQUFPRSxRQUFRLENBQUNDLE1BQU07WUFDakMsQ0FBQztZQUNEO1FBQ0osQ0FBQztRQUNELE1BQU0sSUFBSU8sTUFBTSx1QkFBdUJqQixJQUFJQyxNQUFNLEVBQUU7SUFDdkQ7SUFDQSxPQUFPSjtBQUNYO0FBRUEsSUFBSSxDQUFDLE9BQU9WLFFBQVFXLE9BQU8sS0FBSyxjQUFlLE9BQU9YLFFBQVFXLE9BQU8sS0FBSyxZQUFZWCxRQUFRVyxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9YLFFBQVFXLE9BQU8sQ0FBQ29CLFVBQVUsS0FBSyxhQUFhO0lBQ3JLakMsT0FBT0MsY0FBYyxDQUFDQyxRQUFRVyxPQUFPLEVBQUUsY0FBYztRQUFFVixPQUFPLElBQUk7SUFBQztJQUNuRUgsT0FBT2tDLE1BQU0sQ0FBQ2hDLFFBQVFXLE9BQU8sRUFBRVg7SUFDL0JpQyxPQUFPakMsT0FBTyxHQUFHQSxRQUFRVyxPQUFPO0FBQ2xDLENBQUMsQ0FFRCx5REFBeUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L3dlYnBhY2staG90LW1pZGRsZXdhcmUtY2xpZW50LmpzPzlhZDIiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZWZhdWx0XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfZGVmYXVsdDtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfaG90ZGV2Y2xpZW50ID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi9lcnJvci1vdmVybGF5L2hvdC1kZXYtY2xpZW50XCIpKTtcbmNvbnN0IF93ZWJzb2NrZXQgPSByZXF1aXJlKFwiLi9lcnJvci1vdmVybGF5L3dlYnNvY2tldFwiKTtcbmNvbnN0IF9kZWZhdWx0ID0gKCk9PntcbiAgICBjb25zdCBkZXZDbGllbnQgPSAoMCwgX2hvdGRldmNsaWVudC5kZWZhdWx0KSgpO1xuICAgIGRldkNsaWVudC5zdWJzY3JpYmVUb0htckV2ZW50KChvYmopPT57XG4gICAgICAgIGlmIChvYmouYWN0aW9uID09PSBcInJlbG9hZFBhZ2VcIikge1xuICAgICAgICAgICAgKDAsIF93ZWJzb2NrZXQuc2VuZE1lc3NhZ2UpKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBldmVudDogXCJjbGllbnQtcmVsb2FkLXBhZ2VcIixcbiAgICAgICAgICAgICAgICBjbGllbnRJZDogd2luZG93Ll9fbmV4dERldkNsaWVudElkXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvYmouYWN0aW9uID09PSBcInJlbW92ZWRQYWdlXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IFtwYWdlXSA9IG9iai5kYXRhO1xuICAgICAgICAgICAgaWYgKHBhZ2UgPT09IHdpbmRvdy5uZXh0LnJvdXRlci5wYXRobmFtZSkge1xuICAgICAgICAgICAgICAgICgwLCBfd2Vic29ja2V0LnNlbmRNZXNzYWdlKShKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50OiBcImNsaWVudC1yZW1vdmVkLXBhZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50SWQ6IHdpbmRvdy5fX25leHREZXZDbGllbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgcGFnZVxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvYmouYWN0aW9uID09PSBcImFkZGVkUGFnZVwiKSB7XG4gICAgICAgICAgICBjb25zdCBbcGFnZV0gPSBvYmouZGF0YTtcbiAgICAgICAgICAgIGlmIChwYWdlID09PSB3aW5kb3cubmV4dC5yb3V0ZXIucGF0aG5hbWUgJiYgdHlwZW9mIHdpbmRvdy5uZXh0LnJvdXRlci5jb21wb25lbnRzW3BhZ2VdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgKDAsIF93ZWJzb2NrZXQuc2VuZE1lc3NhZ2UpKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQ6IFwiY2xpZW50LWFkZGVkLXBhZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50SWQ6IHdpbmRvdy5fX25leHREZXZDbGllbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgcGFnZVxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgYWN0aW9uIFwiICsgb2JqLmFjdGlvbik7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRldkNsaWVudDtcbn07XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXdlYnBhY2staG90LW1pZGRsZXdhcmUtY2xpZW50LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJfZGVmYXVsdCIsIl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCIsInJlcXVpcmUiLCJfaG90ZGV2Y2xpZW50IiwiXyIsIl93ZWJzb2NrZXQiLCJkZXZDbGllbnQiLCJkZWZhdWx0Iiwic3Vic2NyaWJlVG9IbXJFdmVudCIsIm9iaiIsImFjdGlvbiIsInNlbmRNZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsImV2ZW50IiwiY2xpZW50SWQiLCJ3aW5kb3ciLCJfX25leHREZXZDbGllbnRJZCIsImxvY2F0aW9uIiwicmVsb2FkIiwicGFnZSIsImRhdGEiLCJuZXh0Iiwicm91dGVyIiwicGF0aG5hbWUiLCJjb21wb25lbnRzIiwiRXJyb3IiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/webpack-hot-middleware-client.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/has-base-path.js": +/*!********************************************************!*\ + !*** ./node_modules/next/dist/client/has-base-path.js ***! + \********************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"hasBasePath\", ({\n enumerable: true,\n get: function() {\n return hasBasePath;\n }\n}));\nconst _pathhasprefix = __webpack_require__(/*! ../shared/lib/router/utils/path-has-prefix */ \"./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js\");\nconst basePath = false || \"\";\nfunction hasBasePath(path) {\n return (0, _pathhasprefix.pathHasPrefix)(path, basePath);\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=has-base-path.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9oYXMtYmFzZS1wYXRoLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTyxJQUFJO0FBQ2YsQ0FBQyxFQUFDO0FBQ0ZILCtDQUE4QztJQUMxQ0ksWUFBWSxJQUFJO0lBQ2hCQyxLQUFLLFdBQVc7UUFDWixPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsTUFBTUMsaUJBQWlCQyxtQkFBT0EsQ0FBQyx1SEFBNEM7QUFDM0UsTUFBTUMsV0FBV0MsTUFBa0MsSUFBSTtBQUN2RCxTQUFTSixZQUFZTyxJQUFJLEVBQUU7SUFDdkIsT0FBTyxDQUFDLEdBQUdOLGVBQWVPLGFBQWEsRUFBRUQsTUFBTUo7QUFDbkQ7QUFFQSxJQUFJLENBQUMsT0FBT1AsUUFBUWEsT0FBTyxLQUFLLGNBQWUsT0FBT2IsUUFBUWEsT0FBTyxLQUFLLFlBQVliLFFBQVFhLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT2IsUUFBUWEsT0FBTyxDQUFDQyxVQUFVLEtBQUssYUFBYTtJQUNyS2hCLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUWEsT0FBTyxFQUFFLGNBQWM7UUFBRVosT0FBTyxJQUFJO0lBQUM7SUFDbkVILE9BQU9pQixNQUFNLENBQUNmLFFBQVFhLE9BQU8sRUFBRWI7SUFDL0JnQixPQUFPaEIsT0FBTyxHQUFHQSxRQUFRYSxPQUFPO0FBQ2xDLENBQUMsQ0FFRCx5Q0FBeUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvaGFzLWJhc2UtcGF0aC5qcz81YTQ5Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiaGFzQmFzZVBhdGhcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGhhc0Jhc2VQYXRoO1xuICAgIH1cbn0pO1xuY29uc3QgX3BhdGhoYXNwcmVmaXggPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcGF0aC1oYXMtcHJlZml4XCIpO1xuY29uc3QgYmFzZVBhdGggPSBwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIIHx8IFwiXCI7XG5mdW5jdGlvbiBoYXNCYXNlUGF0aChwYXRoKSB7XG4gICAgcmV0dXJuICgwLCBfcGF0aGhhc3ByZWZpeC5wYXRoSGFzUHJlZml4KShwYXRoLCBiYXNlUGF0aCk7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWhhcy1iYXNlLXBhdGguanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsImhhc0Jhc2VQYXRoIiwiX3BhdGhoYXNwcmVmaXgiLCJyZXF1aXJlIiwiYmFzZVBhdGgiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1JPVVRFUl9CQVNFUEFUSCIsInBhdGgiLCJwYXRoSGFzUHJlZml4IiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/has-base-path.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/head-manager.js": +/*!*******************************************************!*\ + !*** ./node_modules/next/dist/client/head-manager.js ***! + \*******************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DOMAttributeNames: function() {\n return DOMAttributeNames;\n },\n isEqualNode: function() {\n return isEqualNode;\n },\n default: function() {\n return initHeadManager;\n }\n});\nconst DOMAttributeNames = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\",\n noModule: \"noModule\"\n};\nfunction reactElementToDOM(param) {\n let { type , props } = param;\n const el = document.createElement(type);\n for(const p in props){\n if (!props.hasOwnProperty(p)) continue;\n if (p === \"children\" || p === \"dangerouslySetInnerHTML\") continue;\n // we don't render undefined props to the DOM\n if (props[p] === undefined) continue;\n const attr = DOMAttributeNames[p] || p.toLowerCase();\n if (type === \"script\" && (attr === \"async\" || attr === \"defer\" || attr === \"noModule\")) {\n el[attr] = !!props[p];\n } else {\n el.setAttribute(attr, props[p]);\n }\n }\n const { children , dangerouslySetInnerHTML } = props;\n if (dangerouslySetInnerHTML) {\n el.innerHTML = dangerouslySetInnerHTML.__html || \"\";\n } else if (children) {\n el.textContent = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n }\n return el;\n}\nfunction isEqualNode(oldTag, newTag) {\n if (oldTag instanceof HTMLElement && newTag instanceof HTMLElement) {\n const nonce = newTag.getAttribute(\"nonce\");\n // Only strip the nonce if `oldTag` has had it stripped. An element's nonce attribute will not\n // be stripped if there is no content security policy response header that includes a nonce.\n if (nonce && !oldTag.getAttribute(\"nonce\")) {\n const cloneTag = newTag.cloneNode(true);\n cloneTag.setAttribute(\"nonce\", \"\");\n cloneTag.nonce = nonce;\n return nonce === oldTag.nonce && oldTag.isEqualNode(cloneTag);\n }\n }\n return oldTag.isEqualNode(newTag);\n}\nlet updateElements;\nif (false) {} else {\n updateElements = (type, components)=>{\n const headEl = document.getElementsByTagName(\"head\")[0];\n const headCountEl = headEl.querySelector(\"meta[name=next-head-count]\");\n if (true) {\n if (!headCountEl) {\n console.error(\"Warning: next-head-count is missing. https://nextjs.org/docs/messages/next-head-count-missing\");\n return;\n }\n }\n const headCount = Number(headCountEl.content);\n const oldTags = [];\n for(let i = 0, j = headCountEl.previousElementSibling; i < headCount; i++, j = (j == null ? void 0 : j.previousElementSibling) || null){\n var _j_tagName;\n if ((j == null ? void 0 : (_j_tagName = j.tagName) == null ? void 0 : _j_tagName.toLowerCase()) === type) {\n oldTags.push(j);\n }\n }\n const newTags = components.map(reactElementToDOM).filter((newTag)=>{\n for(let k = 0, len = oldTags.length; k < len; k++){\n const oldTag = oldTags[k];\n if (isEqualNode(oldTag, newTag)) {\n oldTags.splice(k, 1);\n return false;\n }\n }\n return true;\n });\n oldTags.forEach((t)=>{\n var _t_parentNode;\n return (_t_parentNode = t.parentNode) == null ? void 0 : _t_parentNode.removeChild(t);\n });\n newTags.forEach((t)=>headEl.insertBefore(t, headCountEl));\n headCountEl.content = (headCount - oldTags.length + newTags.length).toString();\n };\n}\nfunction initHeadManager() {\n return {\n mountedInstances: new Set(),\n updateHead: (head)=>{\n const tags = {};\n head.forEach((h)=>{\n if (// it won't be inlined. In this case revert to the original behavior\n h.type === \"link\" && h.props[\"data-optimized-fonts\"]) {\n if (document.querySelector('style[data-href=\"' + h.props[\"data-href\"] + '\"]')) {\n return;\n } else {\n h.props.href = h.props[\"data-href\"];\n h.props[\"data-href\"] = undefined;\n }\n }\n const components = tags[h.type] || [];\n components.push(h);\n tags[h.type] = components;\n });\n const titleComponent = tags.title ? tags.title[0] : null;\n let title = \"\";\n if (titleComponent) {\n const { children } = titleComponent.props;\n title = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n }\n if (title !== document.title) document.title = title;\n [\n \"meta\",\n \"base\",\n \"link\",\n \"style\",\n \"script\"\n ].forEach((type)=>{\n updateElements(type, tags[type] || []);\n });\n }\n };\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=head-manager.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9oZWFkLW1hbmFnZXIuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRixLQUFNQyxDQUFBQSxDQUlOO0FBQ0EsU0FBU0ksUUFBUUMsTUFBTSxFQUFFQyxHQUFHLEVBQUU7SUFDMUIsSUFBSSxJQUFJQyxRQUFRRCxJQUFJVixPQUFPQyxjQUFjLENBQUNRLFFBQVFFLE1BQU07UUFDcERDLFlBQVksSUFBSTtRQUNoQkMsS0FBS0gsR0FBRyxDQUFDQyxLQUFLO0lBQ2xCO0FBQ0o7QUFDQUgsUUFBUU4sU0FBUztJQUNiRyxtQkFBbUIsV0FBVztRQUMxQixPQUFPQTtJQUNYO0lBQ0FDLGFBQWEsV0FBVztRQUNwQixPQUFPQTtJQUNYO0lBQ0FDLFNBQVMsV0FBVztRQUNoQixPQUFPTztJQUNYO0FBQ0o7QUFDQSxNQUFNVCxvQkFBb0I7SUFDdEJVLGVBQWU7SUFDZkMsV0FBVztJQUNYQyxTQUFTO0lBQ1RDLFdBQVc7SUFDWEMsVUFBVTtBQUNkO0FBQ0EsU0FBU0Msa0JBQWtCQyxLQUFLLEVBQUU7SUFDOUIsSUFBSSxFQUFFQyxLQUFJLEVBQUdDLE1BQUssRUFBRyxHQUFHRjtJQUN4QixNQUFNRyxLQUFLQyxTQUFTQyxhQUFhLENBQUNKO0lBQ2xDLElBQUksTUFBTUssS0FBS0osTUFBTTtRQUNqQixJQUFJLENBQUNBLE1BQU1LLGNBQWMsQ0FBQ0QsSUFBSSxRQUFTO1FBQ3ZDLElBQUlBLE1BQU0sY0FBY0EsTUFBTSwyQkFBMkIsUUFBUztRQUNsRSw2Q0FBNkM7UUFDN0MsSUFBSUosS0FBSyxDQUFDSSxFQUFFLEtBQUtFLFdBQVcsUUFBUztRQUNyQyxNQUFNQyxPQUFPekIsaUJBQWlCLENBQUNzQixFQUFFLElBQUlBLEVBQUVJLFdBQVc7UUFDbEQsSUFBSVQsU0FBUyxZQUFhUSxDQUFBQSxTQUFTLFdBQVdBLFNBQVMsV0FBV0EsU0FBUyxV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QUFPdEUsYUFBYSxXQUFXQSxXQUFXSyxNQUFNQyxPQUFPLENBQUNOLFlBQVlBLFNBQVNPLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDdEcsQ0FBQztZQUNELElBQUkrRCxVQUFVOUUsU0FBUzhFLEtBQUssRUFBRTlFLFNBQVM4RSxLQUFLLEdBQUdBO1lBQy9DO2dCQUNJO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2FBQ0gsQ0FBQzlCLE9BQU8sQ0FBQyxDQUFDbkQsT0FBTztnQkFDZDBCLGVBQWUxQixNQUFNNkUsSUFBSSxDQUFDN0UsS0FBSyxJQUFJLEVBQUU7WUFDekM7UUFDSjtJQUNKO0FBQ0o7QUFFQSxJQUFJLENBQUMsT0FBT3BCLFFBQVFLLE9BQU8sS0FBSyxjQUFlLE9BQU9MLFFBQVFLLE9BQU8sS0FBSyxZQUFZTCxRQUFRSyxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9MLFFBQVFLLE9BQU8sQ0FBQ2lHLFVBQVUsS0FBSyxhQUFhO0lBQ3JLeEcsT0FBT0MsY0FBYyxDQUFDQyxRQUFRSyxPQUFPLEVBQUUsY0FBYztRQUFFSixPQUFPLElBQUk7SUFBQztJQUNuRUgsT0FBT3lHLE1BQU0sQ0FBQ3ZHLFFBQVFLLE9BQU8sRUFBRUw7SUFDL0JFLE9BQU9GLE9BQU8sR0FBR0EsUUFBUUssT0FBTztBQUNsQyxDQUFDLENBRUQsd0NBQXdDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2hlYWQtbWFuYWdlci5qcz9jYTRhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgRE9NQXR0cmlidXRlTmFtZXM6IG51bGwsXG4gICAgaXNFcXVhbE5vZGU6IG51bGwsXG4gICAgZGVmYXVsdDogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBET01BdHRyaWJ1dGVOYW1lczogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBET01BdHRyaWJ1dGVOYW1lcztcbiAgICB9LFxuICAgIGlzRXF1YWxOb2RlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGlzRXF1YWxOb2RlO1xuICAgIH0sXG4gICAgZGVmYXVsdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpbml0SGVhZE1hbmFnZXI7XG4gICAgfVxufSk7XG5jb25zdCBET01BdHRyaWJ1dGVOYW1lcyA9IHtcbiAgICBhY2NlcHRDaGFyc2V0OiBcImFjY2VwdC1jaGFyc2V0XCIsXG4gICAgY2xhc3NOYW1lOiBcImNsYXNzXCIsXG4gICAgaHRtbEZvcjogXCJmb3JcIixcbiAgICBodHRwRXF1aXY6IFwiaHR0cC1lcXVpdlwiLFxuICAgIG5vTW9kdWxlOiBcIm5vTW9kdWxlXCJcbn07XG5mdW5jdGlvbiByZWFjdEVsZW1lbnRUb0RPTShwYXJhbSkge1xuICAgIGxldCB7IHR5cGUgLCBwcm9wcyAgfSA9IHBhcmFtO1xuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0eXBlKTtcbiAgICBmb3IoY29uc3QgcCBpbiBwcm9wcyl7XG4gICAgICAgIGlmICghcHJvcHMuaGFzT3duUHJvcGVydHkocCkpIGNvbnRpbnVlO1xuICAgICAgICBpZiAocCA9PT0gXCJjaGlsZHJlblwiIHx8IHAgPT09IFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIikgY29udGludWU7XG4gICAgICAgIC8vIHdlIGRvbid0IHJlbmRlciB1bmRlZmluZWQgcHJvcHMgdG8gdGhlIERPTVxuICAgICAgICBpZiAocHJvcHNbcF0gPT09IHVuZGVmaW5lZCkgY29udGludWU7XG4gICAgICAgIGNvbnN0IGF0dHIgPSBET01BdHRyaWJ1dGVOYW1lc1twXSB8fCBwLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICh0eXBlID09PSBcInNjcmlwdFwiICYmIChhdHRyID09PSBcImFzeW5jXCIgfHwgYXR0ciA9PT0gXCJkZWZlclwiIHx8IGF0dHIgPT09IFwibm9Nb2R1bGVcIikpIHtcbiAgICAgICAgICAgIGVsW2F0dHJdID0gISFwcm9wc1twXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShhdHRyLCBwcm9wc1twXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgeyBjaGlsZHJlbiAsIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICB9ID0gcHJvcHM7XG4gICAgaWYgKGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSB7XG4gICAgICAgIGVsLmlubmVySFRNTCA9IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCB8fCBcIlwiO1xuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgZWwudGV4dENvbnRlbnQgPSB0eXBlb2YgY2hpbGRyZW4gPT09IFwic3RyaW5nXCIgPyBjaGlsZHJlbiA6IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pID8gY2hpbGRyZW4uam9pbihcIlwiKSA6IFwiXCI7XG4gICAgfVxuICAgIHJldHVybiBlbDtcbn1cbmZ1bmN0aW9uIGlzRXF1YWxOb2RlKG9sZFRhZywgbmV3VGFnKSB7XG4gICAgaWYgKG9sZFRhZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIG5ld1RhZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IG5vbmNlID0gbmV3VGFnLmdldEF0dHJpYnV0ZShcIm5vbmNlXCIpO1xuICAgICAgICAvLyBPbmx5IHN0cmlwIHRoZSBub25jZSBpZiBgb2xkVGFnYCBoYXMgaGFkIGl0IHN0cmlwcGVkLiBBbiBlbGVtZW50J3Mgbm9uY2UgYXR0cmlidXRlIHdpbGwgbm90XG4gICAgICAgIC8vIGJlIHN0cmlwcGVkIGlmIHRoZXJlIGlzIG5vIGNvbnRlbnQgc2VjdXJpdHkgcG9saWN5IHJlc3BvbnNlIGhlYWRlciB0aGF0IGluY2x1ZGVzIGEgbm9uY2UuXG4gICAgICAgIGlmIChub25jZSAmJiAhb2xkVGFnLmdldEF0dHJpYnV0ZShcIm5vbmNlXCIpKSB7XG4gICAgICAgICAgICBjb25zdCBjbG9uZVRhZyA9IG5ld1RhZy5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICAgICAgICBjbG9uZVRhZy5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBcIlwiKTtcbiAgICAgICAgICAgIGNsb25lVGFnLm5vbmNlID0gbm9uY2U7XG4gICAgICAgICAgICByZXR1cm4gbm9uY2UgPT09IG9sZFRhZy5ub25jZSAmJiBvbGRUYWcuaXNFcXVhbE5vZGUoY2xvbmVUYWcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvbGRUYWcuaXNFcXVhbE5vZGUobmV3VGFnKTtcbn1cbmxldCB1cGRhdGVFbGVtZW50cztcbmlmIChwcm9jZXNzLmVudi5fX05FWFRfU1RSSUNUX05FWFRfSEVBRCkge1xuICAgIHVwZGF0ZUVsZW1lbnRzID0gKHR5cGUsIGNvbXBvbmVudHMpPT57XG4gICAgICAgIGNvbnN0IGhlYWRFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJoZWFkXCIpO1xuICAgICAgICBpZiAoIWhlYWRFbCkgcmV0dXJuO1xuICAgICAgICBjb25zdCBoZWFkTWV0YVRhZ3MgPSBoZWFkRWwucXVlcnlTZWxlY3RvckFsbCgnbWV0YVtuYW1lPVwibmV4dC1oZWFkXCJdJykgfHwgW107XG4gICAgICAgIGNvbnN0IG9sZFRhZ3MgPSBbXTtcbiAgICAgICAgaWYgKHR5cGUgPT09IFwibWV0YVwiKSB7XG4gICAgICAgICAgICBjb25zdCBtZXRhQ2hhcnNldCA9IGhlYWRFbC5xdWVyeVNlbGVjdG9yKFwibWV0YVtjaGFyc2V0XVwiKTtcbiAgICAgICAgICAgIGlmIChtZXRhQ2hhcnNldCkge1xuICAgICAgICAgICAgICAgIG9sZFRhZ3MucHVzaChtZXRhQ2hhcnNldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGhlYWRNZXRhVGFncy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICB2YXIgX2hlYWRUYWdfdGFnTmFtZTtcbiAgICAgICAgICAgIGNvbnN0IG1ldGFUYWcgPSBoZWFkTWV0YVRhZ3NbaV07XG4gICAgICAgICAgICBjb25zdCBoZWFkVGFnID0gbWV0YVRhZy5uZXh0U2libGluZztcbiAgICAgICAgICAgIGlmICgoaGVhZFRhZyA9PSBudWxsID8gdm9pZCAwIDogKF9oZWFkVGFnX3RhZ05hbWUgPSBoZWFkVGFnLnRhZ05hbWUpID09IG51bGwgPyB2b2lkIDAgOiBfaGVhZFRhZ190YWdOYW1lLnRvTG93ZXJDYXNlKCkpID09PSB0eXBlKSB7XG4gICAgICAgICAgICAgICAgb2xkVGFncy5wdXNoKGhlYWRUYWcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld1RhZ3MgPSBjb21wb25lbnRzLm1hcChyZWFjdEVsZW1lbnRUb0RPTSkuZmlsdGVyKChuZXdUYWcpPT57XG4gICAgICAgICAgICBmb3IobGV0IGsgPSAwLCBsZW4gPSBvbGRUYWdzLmxlbmd0aDsgayA8IGxlbjsgaysrKXtcbiAgICAgICAgICAgICAgICBjb25zdCBvbGRUYWcgPSBvbGRUYWdzW2tdO1xuICAgICAgICAgICAgICAgIGlmIChpc0VxdWFsTm9kZShvbGRUYWcsIG5ld1RhZykpIHtcbiAgICAgICAgICAgICAgICAgICAgb2xkVGFncy5zcGxpY2UoaywgMSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIG9sZFRhZ3MuZm9yRWFjaCgodCk9PntcbiAgICAgICAgICAgIHZhciBfdF9wYXJlbnROb2RlO1xuICAgICAgICAgICAgY29uc3QgbWV0YVRhZyA9IHQucHJldmlvdXNTaWJsaW5nO1xuICAgICAgICAgICAgaWYgKG1ldGFUYWcgJiYgbWV0YVRhZy5nZXRBdHRyaWJ1dGUoXCJuYW1lXCIpID09PSBcIm5leHQtaGVhZFwiKSB7XG4gICAgICAgICAgICAgICAgdmFyIF90X3BhcmVudE5vZGUxO1xuICAgICAgICAgICAgICAgIChfdF9wYXJlbnROb2RlMSA9IHQucGFyZW50Tm9kZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90X3BhcmVudE5vZGUxLnJlbW92ZUNoaWxkKG1ldGFUYWcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKF90X3BhcmVudE5vZGUgPSB0LnBhcmVudE5vZGUpID09IG51bGwgPyB2b2lkIDAgOiBfdF9wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpO1xuICAgICAgICB9KTtcbiAgICAgICAgbmV3VGFncy5mb3JFYWNoKCh0KT0+e1xuICAgICAgICAgICAgdmFyIF90X3RhZ05hbWU7XG4gICAgICAgICAgICBjb25zdCBtZXRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcIm1ldGFcIik7XG4gICAgICAgICAgICBtZXRhLm5hbWUgPSBcIm5leHQtaGVhZFwiO1xuICAgICAgICAgICAgbWV0YS5jb250ZW50ID0gXCIxXCI7XG4gICAgICAgICAgICAvLyBtZXRhW2NoYXJzZXRdIG11c3QgYmUgZmlyc3QgZWxlbWVudCBzbyBzcGVjaWFsIGNhc2VcbiAgICAgICAgICAgIGlmICghKCgoX3RfdGFnTmFtZSA9IHQudGFnTmFtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90X3RhZ05hbWUudG9Mb3dlckNhc2UoKSkgPT09IFwibWV0YVwiICYmIHQuZ2V0QXR0cmlidXRlKFwiY2hhcnNldFwiKSkpIHtcbiAgICAgICAgICAgICAgICBoZWFkRWwuYXBwZW5kQ2hpbGQobWV0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoZWFkRWwuYXBwZW5kQ2hpbGQodCk7XG4gICAgICAgIH0pO1xuICAgIH07XG59IGVsc2Uge1xuICAgIHVwZGF0ZUVsZW1lbnRzID0gKHR5cGUsIGNvbXBvbmVudHMpPT57XG4gICAgICAgIGNvbnN0IGhlYWRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXTtcbiAgICAgICAgY29uc3QgaGVhZENvdW50RWwgPSBoZWFkRWwucXVlcnlTZWxlY3RvcihcIm1ldGFbbmFtZT1uZXh0LWhlYWQtY291bnRdXCIpO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBpZiAoIWhlYWRDb3VudEVsKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIldhcm5pbmc6IG5leHQtaGVhZC1jb3VudCBpcyBtaXNzaW5nLiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9uZXh0LWhlYWQtY291bnQtbWlzc2luZ1wiKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGVhZENvdW50ID0gTnVtYmVyKGhlYWRDb3VudEVsLmNvbnRlbnQpO1xuICAgICAgICBjb25zdCBvbGRUYWdzID0gW107XG4gICAgICAgIGZvcihsZXQgaSA9IDAsIGogPSBoZWFkQ291bnRFbC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nOyBpIDwgaGVhZENvdW50OyBpKyssIGogPSAoaiA9PSBudWxsID8gdm9pZCAwIDogai5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKSB8fCBudWxsKXtcbiAgICAgICAgICAgIHZhciBfal90YWdOYW1lO1xuICAgICAgICAgICAgaWYgKChqID09IG51bGwgPyB2b2lkIDAgOiAoX2pfdGFnTmFtZSA9IGoudGFnTmFtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9qX3RhZ05hbWUudG9Mb3dlckNhc2UoKSkgPT09IHR5cGUpIHtcbiAgICAgICAgICAgICAgICBvbGRUYWdzLnB1c2goaik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3VGFncyA9IGNvbXBvbmVudHMubWFwKHJlYWN0RWxlbWVudFRvRE9NKS5maWx0ZXIoKG5ld1RhZyk9PntcbiAgICAgICAgICAgIGZvcihsZXQgayA9IDAsIGxlbiA9IG9sZFRhZ3MubGVuZ3RoOyBrIDwgbGVuOyBrKyspe1xuICAgICAgICAgICAgICAgIGNvbnN0IG9sZFRhZyA9IG9sZFRhZ3Nba107XG4gICAgICAgICAgICAgICAgaWYgKGlzRXF1YWxOb2RlKG9sZFRhZywgbmV3VGFnKSkge1xuICAgICAgICAgICAgICAgICAgICBvbGRUYWdzLnNwbGljZShrLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgb2xkVGFncy5mb3JFYWNoKCh0KT0+e1xuICAgICAgICAgICAgdmFyIF90X3BhcmVudE5vZGU7XG4gICAgICAgICAgICByZXR1cm4gKF90X3BhcmVudE5vZGUgPSB0LnBhcmVudE5vZGUpID09IG51bGwgPyB2b2lkIDAgOiBfdF9wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpO1xuICAgICAgICB9KTtcbiAgICAgICAgbmV3VGFncy5mb3JFYWNoKCh0KT0+aGVhZEVsLmluc2VydEJlZm9yZSh0LCBoZWFkQ291bnRFbCkpO1xuICAgICAgICBoZWFkQ291bnRFbC5jb250ZW50ID0gKGhlYWRDb3VudCAtIG9sZFRhZ3MubGVuZ3RoICsgbmV3VGFncy5sZW5ndGgpLnRvU3RyaW5nKCk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGluaXRIZWFkTWFuYWdlcigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBtb3VudGVkSW5zdGFuY2VzOiBuZXcgU2V0KCksXG4gICAgICAgIHVwZGF0ZUhlYWQ6IChoZWFkKT0+e1xuICAgICAgICAgICAgY29uc3QgdGFncyA9IHt9O1xuICAgICAgICAgICAgaGVhZC5mb3JFYWNoKChoKT0+e1xuICAgICAgICAgICAgICAgIGlmICgvLyBJZiB0aGUgZm9udCB0YWcgaXMgbG9hZGVkIG9ubHkgb24gY2xpZW50IG5hdmlnYXRpb25cbiAgICAgICAgICAgICAgICAvLyBpdCB3b24ndCBiZSBpbmxpbmVkLiBJbiB0aGlzIGNhc2UgcmV2ZXJ0IHRvIHRoZSBvcmlnaW5hbCBiZWhhdmlvclxuICAgICAgICAgICAgICAgIGgudHlwZSA9PT0gXCJsaW5rXCIgJiYgaC5wcm9wc1tcImRhdGEtb3B0aW1pemVkLWZvbnRzXCJdKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzdHlsZVtkYXRhLWhyZWY9XCInICsgaC5wcm9wc1tcImRhdGEtaHJlZlwiXSArICdcIl0nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaC5wcm9wcy5ocmVmID0gaC5wcm9wc1tcImRhdGEtaHJlZlwiXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGgucHJvcHNbXCJkYXRhLWhyZWZcIl0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IHRhZ3NbaC50eXBlXSB8fCBbXTtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRzLnB1c2goaCk7XG4gICAgICAgICAgICAgICAgdGFnc1toLnR5cGVdID0gY29tcG9uZW50cztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgdGl0bGVDb21wb25lbnQgPSB0YWdzLnRpdGxlID8gdGFncy50aXRsZVswXSA6IG51bGw7XG4gICAgICAgICAgICBsZXQgdGl0bGUgPSBcIlwiO1xuICAgICAgICAgICAgaWYgKHRpdGxlQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBjaGlsZHJlbiAgfSA9IHRpdGxlQ29tcG9uZW50LnByb3BzO1xuICAgICAgICAgICAgICAgIHRpdGxlID0gdHlwZW9mIGNoaWxkcmVuID09PSBcInN0cmluZ1wiID8gY2hpbGRyZW4gOiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuLmpvaW4oXCJcIikgOiBcIlwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRpdGxlICE9PSBkb2N1bWVudC50aXRsZSkgZG9jdW1lbnQudGl0bGUgPSB0aXRsZTtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBcIm1ldGFcIixcbiAgICAgICAgICAgICAgICBcImJhc2VcIixcbiAgICAgICAgICAgICAgICBcImxpbmtcIixcbiAgICAgICAgICAgICAgICBcInN0eWxlXCIsXG4gICAgICAgICAgICAgICAgXCJzY3JpcHRcIlxuICAgICAgICAgICAgXS5mb3JFYWNoKCh0eXBlKT0+e1xuICAgICAgICAgICAgICAgIHVwZGF0ZUVsZW1lbnRzKHR5cGUsIHRhZ3NbdHlwZV0gfHwgW10pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1oZWFkLW1hbmFnZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwibW9kdWxlIiwiRE9NQXR0cmlidXRlTmFtZXMiLCJpc0VxdWFsTm9kZSIsImRlZmF1bHQiLCJfZXhwb3J0IiwidGFyZ2V0IiwiYWxsIiwibmFtZSIsImVudW1lcmFibGUiLCJnZXQiLCJpbml0SGVhZE1hbmFnZXIiLCJhY2NlcHRDaGFyc2V0IiwiY2xhc3NOYW1lIiwiaHRtbEZvciIsImh0dHBFcXVpdiIsIm5vTW9kdWxlIiwicmVhY3RFbGVtZW50VG9ET00iLCJwYXJhbSIsInR5cGUiLCJwcm9wcyIsImVsIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwicCIsImhhc093blByb3BlcnR5IiwidW5kZWZpbmVkIiwiYXR0ciIsInRvTG93ZXJDYXNlIiwic2V0QXR0cmlidXRlIiwiY2hpbGRyZW4iLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsImlubmVySFRNTCIsIl9faHRtbCIsInRleHRDb250ZW50IiwiQXJyYXkiLCJpc0FycmF5Iiwiam9pbiIsIm9sZFRhZyIsIm5ld1RhZyIsIkhUTUxFbGVtZW50Iiwibm9uY2UiLCJnZXRBdHRyaWJ1dGUiLCJjbG9uZVRhZyIsImNsb25lTm9kZSIsInVwZGF0ZUVsZW1lbnRzIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9TVFJJQ1RfTkVYVF9IRUFEIiwiY29tcG9uZW50cyIsImhlYWRFbCIsInF1ZXJ5U2VsZWN0b3IiLCJoZWFkTWV0YVRhZ3MiLCJxdWVyeVNlbGVjdG9yQWxsIiwib2xkVGFncyIsIm1ldGFDaGFyc2V0IiwicHVzaCIsImkiLCJsZW5ndGgiLCJfaGVhZFRhZ190YWdOYW1lIiwibWV0YVRhZyIsImhlYWRUYWciLCJuZXh0U2libGluZyIsInRhZ05hbWUiLCJuZXdUYWdzIiwibWFwIiwiZmlsdGVyIiwiayIsImxlbiIsInNwbGljZSIsImZvckVhY2giLCJ0IiwiX3RfcGFyZW50Tm9kZSIsInByZXZpb3VzU2libGluZyIsIl90X3BhcmVudE5vZGUxIiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwiX3RfdGFnTmFtZSIsIm1ldGEiLCJjb250ZW50IiwiYXBwZW5kQ2hpbGQiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImhlYWRDb3VudEVsIiwiY29uc29sZSIsImVycm9yIiwiaGVhZENvdW50IiwiTnVtYmVyIiwiaiIsInByZXZpb3VzRWxlbWVudFNpYmxpbmciLCJfal90YWdOYW1lIiwiaW5zZXJ0QmVmb3JlIiwidG9TdHJpbmciLCJtb3VudGVkSW5zdGFuY2VzIiwiU2V0IiwidXBkYXRlSGVhZCIsImhlYWQiLCJ0YWdzIiwiaCIsImhyZWYiLCJ0aXRsZUNvbXBvbmVudCIsInRpdGxlIiwiX19lc01vZHVsZSIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/head-manager.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/index.js": +/*!************************************************!*\ + !*** ./node_modules/next/dist/client/index.js ***! + \************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("/* global location */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nvar _s = $RefreshSig$(), _s1 = $RefreshSig$();\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n version: function() {\n return version;\n },\n router: function() {\n return router;\n },\n emitter: function() {\n return emitter;\n },\n initialize: function() {\n return initialize;\n },\n hydrate: function() {\n return hydrate;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\n__webpack_require__(/*! ../build/polyfills/polyfill-module */ \"./node_modules/next/dist/build/polyfills/polyfill-module.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"./node_modules/next/dist/compiled/react/index.js\"));\nconst _client = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react-dom/client */ \"./node_modules/next/dist/compiled/react-dom/client.js\"));\nconst _headmanagercontext = __webpack_require__(/*! ../shared/lib/head-manager-context */ \"./node_modules/next/dist/shared/lib/head-manager-context.js\");\nconst _mitt = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../shared/lib/mitt */ \"./node_modules/next/dist/shared/lib/mitt.js\"));\nconst _routercontext = __webpack_require__(/*! ../shared/lib/router-context */ \"./node_modules/next/dist/shared/lib/router-context.js\");\nconst _handlesmoothscroll = __webpack_require__(/*! ../shared/lib/router/utils/handle-smooth-scroll */ \"./node_modules/next/dist/shared/lib/router/utils/handle-smooth-scroll.js\");\nconst _isdynamic = __webpack_require__(/*! ../shared/lib/router/utils/is-dynamic */ \"./node_modules/next/dist/shared/lib/router/utils/is-dynamic.js\");\nconst _querystring = __webpack_require__(/*! ../shared/lib/router/utils/querystring */ \"./node_modules/next/dist/shared/lib/router/utils/querystring.js\");\nconst _runtimeconfig = __webpack_require__(/*! ../shared/lib/runtime-config */ \"./node_modules/next/dist/shared/lib/runtime-config.js\");\nconst _utils = __webpack_require__(/*! ../shared/lib/utils */ \"./node_modules/next/dist/shared/lib/utils.js\");\nconst _portal = __webpack_require__(/*! ./portal */ \"./node_modules/next/dist/client/portal/index.js\");\nconst _headmanager = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./head-manager */ \"./node_modules/next/dist/client/head-manager.js\"));\nconst _pageloader = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./page-loader */ \"./node_modules/next/dist/client/page-loader.js\"));\nconst _performancerelayer = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./performance-relayer */ \"./node_modules/next/dist/client/performance-relayer.js\"));\nconst _routeannouncer = __webpack_require__(/*! ./route-announcer */ \"./node_modules/next/dist/client/route-announcer.js\");\nconst _router = __webpack_require__(/*! ./router */ \"./node_modules/next/dist/client/router.js\");\nconst _iserror = __webpack_require__(/*! ../lib/is-error */ \"./node_modules/next/dist/lib/is-error.js\");\nconst _imageconfigcontext = __webpack_require__(/*! ../shared/lib/image-config-context */ \"./node_modules/next/dist/shared/lib/image-config-context.js\");\nconst _removebasepath = __webpack_require__(/*! ./remove-base-path */ \"./node_modules/next/dist/client/remove-base-path.js\");\nconst _hasbasepath = __webpack_require__(/*! ./has-base-path */ \"./node_modules/next/dist/client/has-base-path.js\");\nconst _approutercontext = __webpack_require__(/*! ../shared/lib/app-router-context */ \"./node_modules/next/dist/shared/lib/app-router-context.js\");\nconst _adapters = __webpack_require__(/*! ../shared/lib/router/adapters */ \"./node_modules/next/dist/shared/lib/router/adapters.js\");\nconst _hooksclientcontext = __webpack_require__(/*! ../shared/lib/hooks-client-context */ \"./node_modules/next/dist/shared/lib/hooks-client-context.js\");\nconst _onrecoverableerror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./on-recoverable-error */ \"./node_modules/next/dist/client/on-recoverable-error.js\"));\nconst version = \"13.4.3\";\nlet router;\nconst emitter = (0, _mitt.default)();\nconst looseToArray = (input)=>[].slice.call(input);\nlet initialData;\nlet defaultLocale = undefined;\nlet asPath;\nlet pageLoader;\nlet appElement;\nlet headManager;\nlet initialMatchesMiddleware = false;\nlet lastAppProps;\nlet lastRenderReject;\nlet webpackHMR;\nlet CachedApp, onPerfEntry;\nlet CachedComponent;\nself.__next_require__ = __webpack_require__;\nclass Container extends _react.default.Component {\n componentDidCatch(componentErr, info) {\n this.props.fn(componentErr, info);\n }\n componentDidMount() {\n this.scrollToHash();\n // We need to replace the router state if:\n // - the page was (auto) exported and has a query string or search (hash)\n // - it was auto exported and is a dynamic route (to provide params)\n // - if it is a client-side skeleton (fallback render)\n // - if middleware matches the current page (may have rewrite params)\n // - if rewrites in next.config.js match (may have rewrite params)\n if (router.isSsr && (initialData.isFallback || initialData.nextExport && ((0, _isdynamic.isDynamicRoute)(router.pathname) || location.search || false || initialMatchesMiddleware) || initialData.props && initialData.props.__N_SSG && (location.search || false || initialMatchesMiddleware))) {\n // update query on mount for exported pages\n router.replace(router.pathname + \"?\" + String((0, _querystring.assign)((0, _querystring.urlQueryToSearchParams)(router.query), new URLSearchParams(location.search))), asPath, {\n // @ts-ignore\n // WARNING: `_h` is an internal option for handing Next.js\n // client-side hydration. Your app should _never_ use this property.\n // It may change at any time without notice.\n _h: 1,\n // Fallback pages must trigger the data fetch, so the transition is\n // not shallow.\n // Other pages (strictly updating query) happens shallowly, as data\n // requirements would already be present.\n shallow: !initialData.isFallback && !initialMatchesMiddleware\n }).catch((err)=>{\n if (!err.cancelled) throw err;\n });\n }\n }\n componentDidUpdate() {\n this.scrollToHash();\n }\n scrollToHash() {\n let { hash } = location;\n hash = hash && hash.substring(1);\n if (!hash) return;\n const el = document.getElementById(hash);\n if (!el) return;\n // If we call scrollIntoView() in here without a setTimeout\n // it won't scroll properly.\n setTimeout(()=>el.scrollIntoView(), 0);\n }\n render() {\n if (false) {} else {\n const { ReactDevOverlay } = __webpack_require__(/*! next/dist/compiled/@next/react-dev-overlay/dist/client */ \"./node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js\");\n return /*#__PURE__*/ _react.default.createElement(ReactDevOverlay, null, this.props.children);\n }\n }\n}\nasync function initialize(opts) {\n if (opts === void 0) opts = {};\n // This makes sure this specific lines are removed in production\n if (true) {\n webpackHMR = opts.webpackHMR;\n }\n initialData = JSON.parse(document.getElementById(\"__NEXT_DATA__\").textContent);\n window.__NEXT_DATA__ = initialData;\n defaultLocale = initialData.defaultLocale;\n const prefix = initialData.assetPrefix || \"\";\n // With dynamic assetPrefix it's no longer possible to set assetPrefix at the build time\n // So, this is how we do it in the client side at runtime\n __webpack_require__.p = \"\" + prefix + \"/_next/\" //eslint-disable-line\n ;\n // Initialize next/config with the environment configuration\n (0, _runtimeconfig.setConfig)({\n serverRuntimeConfig: {},\n publicRuntimeConfig: initialData.runtimeConfig || {}\n });\n asPath = (0, _utils.getURL)();\n // make sure not to attempt stripping basePath for 404s\n if ((0, _hasbasepath.hasBasePath)(asPath)) {\n asPath = (0, _removebasepath.removeBasePath)(asPath);\n }\n if (false) {}\n if (initialData.scriptLoader) {\n const { initScriptLoader } = __webpack_require__(/*! ./script */ \"./node_modules/next/dist/client/script.js\");\n initScriptLoader(initialData.scriptLoader);\n }\n pageLoader = new _pageloader.default(initialData.buildId, prefix);\n const register = (param)=>{\n let [r, f] = param;\n return pageLoader.routeLoader.onEntrypoint(r, f);\n };\n if (window.__NEXT_P) {\n // Defer page registration for another tick. This will increase the overall\n // latency in hydrating the page, but reduce the total blocking time.\n window.__NEXT_P.map((p)=>setTimeout(()=>register(p), 0));\n }\n window.__NEXT_P = [];\n window.__NEXT_P.push = register;\n headManager = (0, _headmanager.default)();\n headManager.getIsSsr = ()=>{\n return router.isSsr;\n };\n appElement = document.getElementById(\"__next\");\n return {\n assetPrefix: prefix\n };\n}\nfunction renderApp(App, appProps) {\n return /*#__PURE__*/ _react.default.createElement(App, appProps);\n}\nfunction AppContainer(param) {\n let { children } = param;\n var _self___NEXT_DATA___autoExport;\n return /*#__PURE__*/ _react.default.createElement(Container, {\n fn: (error)=>// eslint-disable-next-line @typescript-eslint/no-use-before-define\n renderError({\n App: CachedApp,\n err: error\n }).catch((err)=>console.error(\"Error rendering page: \", err))\n }, /*#__PURE__*/ _react.default.createElement(_approutercontext.AppRouterContext.Provider, {\n value: (0, _adapters.adaptForAppRouterInstance)(router)\n }, /*#__PURE__*/ _react.default.createElement(_hooksclientcontext.SearchParamsContext.Provider, {\n value: (0, _adapters.adaptForSearchParams)(router)\n }, /*#__PURE__*/ _react.default.createElement(_adapters.PathnameContextProviderAdapter, {\n router: router,\n isAutoExport: (_self___NEXT_DATA___autoExport = self.__NEXT_DATA__.autoExport) != null ? _self___NEXT_DATA___autoExport : false\n }, /*#__PURE__*/ _react.default.createElement(_routercontext.RouterContext.Provider, {\n value: (0, _router.makePublicRouterInstance)(router)\n }, /*#__PURE__*/ _react.default.createElement(_headmanagercontext.HeadManagerContext.Provider, {\n value: headManager\n }, /*#__PURE__*/ _react.default.createElement(_imageconfigcontext.ImageConfigContext.Provider, {\n value: {\"deviceSizes\":[640,750,828,1080,1200,1920,2048,3840],\"imageSizes\":[16,32,48,64,96,128,256,384],\"path\":\"/_next/image\",\"loader\":\"default\",\"dangerouslyAllowSVG\":false,\"unoptimized\":false,\"domains\":[],\"remotePatterns\":[]}\n }, children)))))));\n}\n_c = AppContainer;\nconst wrapApp = (App)=>(wrappedAppProps)=>{\n const appProps = {\n ...wrappedAppProps,\n Component: CachedComponent,\n err: initialData.err,\n router\n };\n return /*#__PURE__*/ _react.default.createElement(AppContainer, null, renderApp(App, appProps));\n };\n// This method handles all runtime and debug errors.\n// 404 and 500 errors are special kind of errors\n// and they are still handle via the main render method.\nfunction renderError(renderErrorProps) {\n let { App , err } = renderErrorProps;\n // In development runtime errors are caught by our overlay\n // In production we catch runtime errors using componentDidCatch which will trigger renderError\n if (true) {\n // A Next.js rendering runtime error is always unrecoverable\n // FIXME: let's make this recoverable (error in GIP client-transition)\n webpackHMR.onUnrecoverableError();\n // We need to render an empty so that the `` can\n // render itself.\n // TODO: Fix disabled eslint rule\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return doRender({\n App: ()=>null,\n props: {},\n Component: ()=>null,\n styleSheets: []\n });\n }\n // Make sure we log the error to the console, otherwise users can't track down issues.\n console.error(err);\n console.error(\"A client-side exception has occurred, see here for more info: https://nextjs.org/docs/messages/client-side-exception-occurred\");\n return pageLoader.loadPage(\"/_error\").then((param)=>{\n let { page: ErrorComponent , styleSheets } = param;\n return (lastAppProps == null ? void 0 : lastAppProps.Component) === ErrorComponent ? Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! ../pages/_error */ \"./node_modules/next/dist/pages/_error.js\"))).then((errorModule)=>{\n return Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! ../pages/_app */ \"./node_modules/next/dist/pages/_app.js\"))).then((appModule)=>{\n App = appModule.default;\n renderErrorProps.App = App;\n return errorModule;\n });\n }).then((m)=>({\n ErrorComponent: m.default,\n styleSheets: []\n })) : {\n ErrorComponent,\n styleSheets\n };\n }).then((param)=>{\n let { ErrorComponent , styleSheets } = param;\n var _renderErrorProps_props;\n // In production we do a normal render with the `ErrorComponent` as component.\n // If we've gotten here upon initial render, we can use the props from the server.\n // Otherwise, we need to call `getInitialProps` on `App` before mounting.\n const AppTree = wrapApp(App);\n const appCtx = {\n Component: ErrorComponent,\n AppTree,\n router,\n ctx: {\n err,\n pathname: initialData.page,\n query: initialData.query,\n asPath,\n AppTree\n }\n };\n return Promise.resolve(((_renderErrorProps_props = renderErrorProps.props) == null ? void 0 : _renderErrorProps_props.err) ? renderErrorProps.props : (0, _utils.loadGetInitialProps)(App, appCtx)).then((initProps)=>// eslint-disable-next-line @typescript-eslint/no-use-before-define\n doRender({\n ...renderErrorProps,\n err,\n Component: ErrorComponent,\n styleSheets,\n props: initProps\n }));\n });\n}\n// Dummy component that we render as a child of Root so that we can\n// toggle the correct styles before the page is rendered.\nfunction Head(param) {\n _s();\n let { callback } = param;\n // We use `useLayoutEffect` to guarantee the callback is executed\n // as soon as React flushes the update.\n _react.default.useLayoutEffect(()=>callback(), [\n callback\n ]);\n return null;\n}\n_s(Head, \"n7/vCynhJvM+pLkyL2DMQUF0odM=\");\n_c1 = Head;\nlet reactRoot = null;\n// On initial render a hydrate should always happen\nlet shouldHydrate = true;\nfunction clearMarks() {\n [\n \"beforeRender\",\n \"afterHydrate\",\n \"afterRender\",\n \"routeChange\"\n ].forEach((mark)=>performance.clearMarks(mark));\n}\nfunction markHydrateComplete() {\n if (!_utils.ST) return;\n performance.mark(\"afterHydrate\") // mark end of hydration\n ;\n performance.measure(\"Next.js-before-hydration\", \"navigationStart\", \"beforeRender\");\n performance.measure(\"Next.js-hydration\", \"beforeRender\", \"afterHydrate\");\n if (onPerfEntry) {\n performance.getEntriesByName(\"Next.js-hydration\").forEach(onPerfEntry);\n }\n clearMarks();\n}\nfunction markRenderComplete() {\n if (!_utils.ST) return;\n performance.mark(\"afterRender\") // mark end of render\n ;\n const navStartEntries = performance.getEntriesByName(\"routeChange\", \"mark\");\n if (!navStartEntries.length) return;\n performance.measure(\"Next.js-route-change-to-render\", navStartEntries[0].name, \"beforeRender\");\n performance.measure(\"Next.js-render\", \"beforeRender\", \"afterRender\");\n if (onPerfEntry) {\n performance.getEntriesByName(\"Next.js-render\").forEach(onPerfEntry);\n performance.getEntriesByName(\"Next.js-route-change-to-render\").forEach(onPerfEntry);\n }\n clearMarks();\n [\n \"Next.js-route-change-to-render\",\n \"Next.js-render\"\n ].forEach((measure)=>performance.clearMeasures(measure));\n}\nfunction renderReactElement(domEl, fn) {\n // mark start of hydrate/render\n if (_utils.ST) {\n performance.mark(\"beforeRender\");\n }\n const reactEl = fn(shouldHydrate ? markHydrateComplete : markRenderComplete);\n if (!reactRoot) {\n // Unlike with createRoot, you don't need a separate root.render() call here\n reactRoot = _client.default.hydrateRoot(domEl, reactEl, {\n onRecoverableError: _onrecoverableerror.default\n });\n // TODO: Remove shouldHydrate variable when React 18 is stable as it can depend on `reactRoot` existing\n shouldHydrate = false;\n } else {\n const startTransition = _react.default.startTransition;\n startTransition(()=>{\n reactRoot.render(reactEl);\n });\n }\n}\nfunction Root(param) {\n _s1();\n let { callbacks , children } = param;\n // We use `useLayoutEffect` to guarantee the callbacks are executed\n // as soon as React flushes the update\n _react.default.useLayoutEffect(()=>callbacks.forEach((callback)=>callback()), [\n callbacks\n ]);\n // We should ask to measure the Web Vitals after rendering completes so we\n // don't cause any hydration delay:\n _react.default.useEffect(()=>{\n (0, _performancerelayer.default)(onPerfEntry);\n }, []);\n if (false) {}\n return children;\n}\n_s1(Root, \"Gjgl5rfcc2T4sFnfEMfRvL6K4Q4=\");\n_c2 = Root;\nfunction doRender(input) {\n let { App , Component , props , err } = input;\n let styleSheets = \"initial\" in input ? undefined : input.styleSheets;\n Component = Component || lastAppProps.Component;\n props = props || lastAppProps.props;\n const appProps = {\n ...props,\n Component,\n err,\n router\n };\n // lastAppProps has to be set before ReactDom.render to account for ReactDom throwing an error.\n lastAppProps = appProps;\n let canceled = false;\n let resolvePromise;\n const renderPromise = new Promise((resolve, reject)=>{\n if (lastRenderReject) {\n lastRenderReject();\n }\n resolvePromise = ()=>{\n lastRenderReject = null;\n resolve();\n };\n lastRenderReject = ()=>{\n canceled = true;\n lastRenderReject = null;\n const error = new Error(\"Cancel rendering route\");\n error.cancelled = true;\n reject(error);\n };\n });\n // This function has a return type to ensure it doesn't start returning a\n // Promise. It should remain synchronous.\n function onStart() {\n if (!styleSheets || // We use `style-loader` in development, so we don't need to do anything\n // unless we're in production:\n \"development\" !== \"production\") {\n return false;\n }\n const currentStyleTags = looseToArray(document.querySelectorAll(\"style[data-n-href]\"));\n const currentHrefs = new Set(currentStyleTags.map((tag)=>tag.getAttribute(\"data-n-href\")));\n const noscript = document.querySelector(\"noscript[data-n-css]\");\n const nonce = noscript == null ? void 0 : noscript.getAttribute(\"data-n-css\");\n styleSheets.forEach((param)=>{\n let { href , text } = param;\n if (!currentHrefs.has(href)) {\n const styleTag = document.createElement(\"style\");\n styleTag.setAttribute(\"data-n-href\", href);\n styleTag.setAttribute(\"media\", \"x\");\n if (nonce) {\n styleTag.setAttribute(\"nonce\", nonce);\n }\n document.head.appendChild(styleTag);\n styleTag.appendChild(document.createTextNode(text));\n }\n });\n return true;\n }\n function onHeadCommit() {\n if (// unless we're in production:\n false) {}\n if (input.scroll) {\n const { x , y } = input.scroll;\n (0, _handlesmoothscroll.handleSmoothScroll)(()=>{\n window.scrollTo(x, y);\n });\n }\n }\n function onRootCommit() {\n resolvePromise();\n }\n onStart();\n const elem = /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(Head, {\n callback: onHeadCommit\n }), /*#__PURE__*/ _react.default.createElement(AppContainer, null, renderApp(App, appProps), /*#__PURE__*/ _react.default.createElement(_portal.Portal, {\n type: \"next-route-announcer\"\n }, /*#__PURE__*/ _react.default.createElement(_routeannouncer.RouteAnnouncer, null))));\n // We catch runtime errors using componentDidCatch which will trigger renderError\n renderReactElement(appElement, (callback)=>/*#__PURE__*/ _react.default.createElement(Root, {\n callbacks: [\n callback,\n onRootCommit\n ]\n }, false ? /*#__PURE__*/ 0 : elem));\n return renderPromise;\n}\nasync function render(renderingProps) {\n if (renderingProps.err) {\n await renderError(renderingProps);\n return;\n }\n try {\n await doRender(renderingProps);\n } catch (err) {\n const renderErr = (0, _iserror.getProperError)(err);\n // bubble up cancelation errors\n if (renderErr.cancelled) {\n throw renderErr;\n }\n if (true) {\n // Ensure this error is displayed in the overlay in development\n setTimeout(()=>{\n throw renderErr;\n });\n }\n await renderError({\n ...renderingProps,\n err: renderErr\n });\n }\n}\nasync function hydrate(opts) {\n let initialErr = initialData.err;\n try {\n const appEntrypoint = await pageLoader.routeLoader.whenEntrypoint(\"/_app\");\n if (\"error\" in appEntrypoint) {\n throw appEntrypoint.error;\n }\n const { component: app , exports: mod } = appEntrypoint;\n CachedApp = app;\n if (mod && mod.reportWebVitals) {\n onPerfEntry = (param)=>{\n let { id , name , startTime , value , duration , entryType , entries , attribution } = param;\n // Combines timestamp with random number for unique ID\n const uniqueID = Date.now() + \"-\" + (Math.floor(Math.random() * (9e12 - 1)) + 1e12);\n let perfStartEntry;\n if (entries && entries.length) {\n perfStartEntry = entries[0].startTime;\n }\n const webVitals = {\n id: id || uniqueID,\n name,\n startTime: startTime || perfStartEntry,\n value: value == null ? duration : value,\n label: entryType === \"mark\" || entryType === \"measure\" ? \"custom\" : \"web-vital\"\n };\n if (attribution) {\n webVitals.attribution = attribution;\n }\n mod.reportWebVitals(webVitals);\n };\n }\n const pageEntrypoint = // error, so we need to skip waiting for the entrypoint.\n true && initialData.err ? {\n error: initialData.err\n } : await pageLoader.routeLoader.whenEntrypoint(initialData.page);\n if (\"error\" in pageEntrypoint) {\n throw pageEntrypoint.error;\n }\n CachedComponent = pageEntrypoint.component;\n if (true) {\n const { isValidElementType } = __webpack_require__(/*! next/dist/compiled/react-is */ \"./node_modules/next/dist/compiled/react-is/index.js\");\n if (!isValidElementType(CachedComponent)) {\n throw new Error('The default export is not a React Component in page: \"' + initialData.page + '\"');\n }\n }\n } catch (error) {\n // This catches errors like throwing in the top level of a module\n initialErr = (0, _iserror.getProperError)(error);\n }\n if (true) {\n const { getServerError } = __webpack_require__(/*! next/dist/compiled/@next/react-dev-overlay/dist/client */ \"./node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js\");\n // Server-side runtime errors need to be re-thrown on the client-side so\n // that the overlay is rendered.\n if (initialErr) {\n if (initialErr === initialData.err) {\n setTimeout(()=>{\n let error;\n try {\n // Generate a new error object. We `throw` it because some browsers\n // will set the `stack` when thrown, and we want to ensure ours is\n // not overridden when we re-throw it below.\n throw new Error(initialErr.message);\n } catch (e) {\n error = e;\n }\n error.name = initialErr.name;\n error.stack = initialErr.stack;\n throw getServerError(error, initialErr.source);\n });\n } else {\n setTimeout(()=>{\n throw initialErr;\n });\n }\n }\n }\n if (window.__NEXT_PRELOADREADY) {\n await window.__NEXT_PRELOADREADY(initialData.dynamicIds);\n }\n router = (0, _router.createRouter)(initialData.page, initialData.query, asPath, {\n initialProps: initialData.props,\n pageLoader,\n App: CachedApp,\n Component: CachedComponent,\n wrapApp,\n err: initialErr,\n isFallback: Boolean(initialData.isFallback),\n subscription: (info, App, scroll)=>render(Object.assign({}, info, {\n App,\n scroll\n })),\n locale: initialData.locale,\n locales: initialData.locales,\n defaultLocale,\n domainLocales: initialData.domainLocales,\n isPreview: initialData.isPreview\n });\n initialMatchesMiddleware = await router._initialMatchesMiddlewarePromise;\n const renderCtx = {\n App: CachedApp,\n initial: true,\n Component: CachedComponent,\n props: initialData.props,\n err: initialErr\n };\n if (opts == null ? void 0 : opts.beforeRender) {\n await opts.beforeRender();\n }\n render(renderCtx);\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=index.js.map\nvar _c, _c1, _c2;\n$RefreshReg$(_c, \"AppContainer\");\n$RefreshReg$(_c1, \"Head\");\n$RefreshReg$(_c2, \"Root\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQSxtQkFBbUIsR0FBZ0I7Ozs7OztBQUNuQ0EsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRixLQUFNQyxDQUFBQSxDQU1OO0FBQ0EsU0FBU00sUUFBUUMsTUFBTSxFQUFFQyxHQUFHLEVBQUU7SUFDMUIsSUFBSSxJQUFJQyxRQUFRRCxJQUFJWixPQUFPQyxjQUFjLENBQUNVLFFBQVFFLE1BQU07UUFDcERDLFlBQVksSUFBSTtRQUNoQkMsS0FBS0gsR0FBRyxDQUFDQyxLQUFLO0lBQ2xCO0FBQ0o7QUFDQUgsUUFBUVIsU0FBUztJQUNiRyxTQUFTLFdBQVc7UUFDaEIsT0FBT0E7SUFDWDtJQUNBQyxRQUFRLFdBQVc7UUFDZixPQUFPQTtJQUNYO0lBQ0FDLFNBQVMsV0FBVztRQUNoQixPQUFPQTtJQUNYO0lBQ0FDLFlBQVksV0FBVztRQUNuQixPQUFPQTtJQUNYO0lBQ0FDLFNBQVMsV0FBVztRQUNoQixPQUFPQTtJQUNYO0FBQ0o7QUFDQSxNQUFNTywyQkFBMkJDLG1CQUFPQSxDQUFDLDRHQUF5QztBQUNsRkEsbUJBQU9BLENBQUMsdUdBQW9DO0FBQzVDLE1BQU1DLFNBQVMsV0FBVyxHQUFHRix5QkFBeUJHLENBQUMsQ0FBQ0YsbUJBQU9BLENBQUMsK0RBQU87QUFDdkUsTUFBTUcsVUFBVSxXQUFXLEdBQUdKLHlCQUF5QkcsQ0FBQyxDQUFDRixtQkFBT0EsQ0FBQywrRUFBa0I7QUFDbkYsTUFBTUksc0JBQXNCSixtQkFBT0EsQ0FBQyx1R0FBb0M7QUFDeEUsTUFBTUssUUFBUSxXQUFXLEdBQUdOLHlCQUF5QkcsQ0FBQyxDQUFDRixtQkFBT0EsQ0FBQyx1RUFBb0I7QUFDbkYsTUFBTU0saUJBQWlCTixtQkFBT0EsQ0FBQywyRkFBOEI7QUFDN0QsTUFBTU8sc0JBQXNCUCxtQkFBT0EsQ0FBQyxpSUFBaUQ7QUFDckYsTUFBTVEsYUFB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NDZjYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgbG9jYXRpb24gKi8gXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICB2ZXJzaW9uOiBudWxsLFxuICAgIHJvdXRlcjogbnVsbCxcbiAgICBlbWl0dGVyOiBudWxsLFxuICAgIGluaXRpYWxpemU6IG51bGwsXG4gICAgaHlkcmF0ZTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICB2ZXJzaW9uOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHZlcnNpb247XG4gICAgfSxcbiAgICByb3V0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcm91dGVyO1xuICAgIH0sXG4gICAgZW1pdHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBlbWl0dGVyO1xuICAgIH0sXG4gICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpbml0aWFsaXplO1xuICAgIH0sXG4gICAgaHlkcmF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBoeWRyYXRlO1xuICAgIH1cbn0pO1xuY29uc3QgX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0ID0gcmVxdWlyZShcIkBzd2MvaGVscGVycy9fL19pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdFwiKTtcbnJlcXVpcmUoXCIuLi9idWlsZC9wb2x5ZmlsbHMvcG9seWZpbGwtbW9kdWxlXCIpO1xuY29uc3QgX3JlYWN0ID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwicmVhY3RcIikpO1xuY29uc3QgX2NsaWVudCA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcInJlYWN0LWRvbS9jbGllbnRcIikpO1xuY29uc3QgX2hlYWRtYW5hZ2VyY29udGV4dCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL2hlYWQtbWFuYWdlci1jb250ZXh0XCIpO1xuY29uc3QgX21pdHQgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL21pdHRcIikpO1xuY29uc3QgX3JvdXRlcmNvbnRleHQgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXItY29udGV4dFwiKTtcbmNvbnN0IF9oYW5kbGVzbW9vdGhzY3JvbGwgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaGFuZGxlLXNtb290aC1zY3JvbGxcIik7XG5jb25zdCBfaXNkeW5hbWljID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2lzLWR5bmFtaWNcIik7XG5jb25zdCBfcXVlcnlzdHJpbmcgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcXVlcnlzdHJpbmdcIik7XG5jb25zdCBfcnVudGltZWNvbmZpZyA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3J1bnRpbWUtY29uZmlnXCIpO1xuY29uc3QgX3V0aWxzID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvdXRpbHNcIik7XG5jb25zdCBfcG9ydGFsID0gcmVxdWlyZShcIi4vcG9ydGFsXCIpO1xuY29uc3QgX2hlYWRtYW5hZ2VyID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi9oZWFkLW1hbmFnZXJcIikpO1xuY29uc3QgX3BhZ2Vsb2FkZXIgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuL3BhZ2UtbG9hZGVyXCIpKTtcbmNvbnN0IF9wZXJmb3JtYW5jZXJlbGF5ZXIgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuL3BlcmZvcm1hbmNlLXJlbGF5ZXJcIikpO1xuY29uc3QgX3JvdXRlYW5ub3VuY2VyID0gcmVxdWlyZShcIi4vcm91dGUtYW5ub3VuY2VyXCIpO1xuY29uc3QgX3JvdXRlciA9IHJlcXVpcmUoXCIuL3JvdXRlclwiKTtcbmNvbnN0IF9pc2Vycm9yID0gcmVxdWlyZShcIi4uL2xpYi9pcy1lcnJvclwiKTtcbmNvbnN0IF9pbWFnZWNvbmZpZ2NvbnRleHQgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9pbWFnZS1jb25maWctY29udGV4dFwiKTtcbmNvbnN0IF9yZW1vdmViYXNlcGF0aCA9IHJlcXVpcmUoXCIuL3JlbW92ZS1iYXNlLXBhdGhcIik7XG5jb25zdCBfaGFzYmFzZXBhdGggPSByZXF1aXJlKFwiLi9oYXMtYmFzZS1wYXRoXCIpO1xuY29uc3QgX2FwcHJvdXRlcmNvbnRleHQgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHRcIik7XG5jb25zdCBfYWRhcHRlcnMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvYWRhcHRlcnNcIik7XG5jb25zdCBfaG9va3NjbGllbnRjb250ZXh0ID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvaG9va3MtY2xpZW50LWNvbnRleHRcIik7XG5jb25zdCBfb25yZWNvdmVyYWJsZWVycm9yID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi9vbi1yZWNvdmVyYWJsZS1lcnJvclwiKSk7XG5jb25zdCB2ZXJzaW9uID0gXCIxMy40LjNcIjtcbmxldCByb3V0ZXI7XG5jb25zdCBlbWl0dGVyID0gKDAsIF9taXR0LmRlZmF1bHQpKCk7XG5jb25zdCBsb29zZVRvQXJyYXkgPSAoaW5wdXQpPT5bXS5zbGljZS5jYWxsKGlucHV0KTtcbmxldCBpbml0aWFsRGF0YTtcbmxldCBkZWZhdWx0TG9jYWxlID0gdW5kZWZpbmVkO1xubGV0IGFzUGF0aDtcbmxldCBwYWdlTG9hZGVyO1xubGV0IGFwcEVsZW1lbnQ7XG5sZXQgaGVhZE1hbmFnZXI7XG5sZXQgaW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlID0gZmFsc2U7XG5sZXQgbGFzdEFwcFByb3BzO1xubGV0IGxhc3RSZW5kZXJSZWplY3Q7XG5sZXQgd2VicGFja0hNUjtcbmxldCBDYWNoZWRBcHAsIG9uUGVyZkVudHJ5O1xubGV0IENhY2hlZENvbXBvbmVudDtcbnNlbGYuX19uZXh0X3JlcXVpcmVfXyA9IF9fd2VicGFja19yZXF1aXJlX187XG5jbGFzcyBDb250YWluZXIgZXh0ZW5kcyBfcmVhY3QuZGVmYXVsdC5Db21wb25lbnQge1xuICAgIGNvbXBvbmVudERpZENhdGNoKGNvbXBvbmVudEVyciwgaW5mbykge1xuICAgICAgICB0aGlzLnByb3BzLmZuKGNvbXBvbmVudEVyciwgaW5mbyk7XG4gICAgfVxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICB0aGlzLnNjcm9sbFRvSGFzaCgpO1xuICAgICAgICAvLyBXZSBuZWVkIHRvIHJlcGxhY2UgdGhlIHJvdXRlciBzdGF0ZSBpZjpcbiAgICAgICAgLy8gLSB0aGUgcGFnZSB3YXMgKGF1dG8pIGV4cG9ydGVkIGFuZCBoYXMgYSBxdWVyeSBzdHJpbmcgb3Igc2VhcmNoIChoYXNoKVxuICAgICAgICAvLyAtIGl0IHdhcyBhdXRvIGV4cG9ydGVkIGFuZCBpcyBhIGR5bmFtaWMgcm91dGUgKHRvIHByb3ZpZGUgcGFyYW1zKVxuICAgICAgICAvLyAtIGlmIGl0IGlzIGEgY2xpZW50LXNpZGUgc2tlbGV0b24gKGZhbGxiYWNrIHJlbmRlcilcbiAgICAgICAgLy8gLSBpZiBtaWRkbGV3YXJlIG1hdGNoZXMgdGhlIGN1cnJlbnQgcGFnZSAobWF5IGhhdmUgcmV3cml0ZSBwYXJhbXMpXG4gICAgICAgIC8vIC0gaWYgcmV3cml0ZXMgaW4gbmV4dC5jb25maWcuanMgbWF0Y2ggKG1heSBoYXZlIHJld3JpdGUgcGFyYW1zKVxuICAgICAgICBpZiAocm91dGVyLmlzU3NyICYmIChpbml0aWFsRGF0YS5pc0ZhbGxiYWNrIHx8IGluaXRpYWxEYXRhLm5leHRFeHBvcnQgJiYgKCgwLCBfaXNkeW5hbWljLmlzRHluYW1pY1JvdXRlKShyb3V0ZXIucGF0aG5hbWUpIHx8IGxvY2F0aW9uLnNlYXJjaCB8fCBwcm9jZXNzLmVudi5fX05FWFRfSEFTX1JFV1JJVEVTIHx8IGluaXRpYWxNYXRjaGVzTWlkZGxld2FyZSkgfHwgaW5pdGlhbERhdGEucHJvcHMgJiYgaW5pdGlhbERhdGEucHJvcHMuX19OX1NTRyAmJiAobG9jYXRpb24uc2VhcmNoIHx8IHByb2Nlc3MuZW52Ll9fTkVYVF9IQVNfUkVXUklURVMgfHwgaW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlKSkpIHtcbiAgICAgICAgICAgIC8vIHVwZGF0ZSBxdWVyeSBvbiBtb3VudCBmb3IgZXhwb3J0ZWQgcGFnZXNcbiAgICAgICAgICAgIHJvdXRlci5yZXBsYWNlKHJvdXRlci5wYXRobmFtZSArIFwiP1wiICsgU3RyaW5nKCgwLCBfcXVlcnlzdHJpbmcuYXNzaWduKSgoMCwgX3F1ZXJ5c3RyaW5nLnVybFF1ZXJ5VG9TZWFyY2hQYXJhbXMpKHJvdXRlci5xdWVyeSksIG5ldyBVUkxTZWFyY2hQYXJhbXMobG9jYXRpb24uc2VhcmNoKSkpLCBhc1BhdGgsIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgLy8gV0FSTklORzogYF9oYCBpcyBhbiBpbnRlcm5hbCBvcHRpb24gZm9yIGhhbmRpbmcgTmV4dC5qc1xuICAgICAgICAgICAgICAgIC8vIGNsaWVudC1zaWRlIGh5ZHJhdGlvbi4gWW91ciBhcHAgc2hvdWxkIF9uZXZlcl8gdXNlIHRoaXMgcHJvcGVydHkuXG4gICAgICAgICAgICAgICAgLy8gSXQgbWF5IGNoYW5nZSBhdCBhbnkgdGltZSB3aXRob3V0IG5vdGljZS5cbiAgICAgICAgICAgICAgICBfaDogMSxcbiAgICAgICAgICAgICAgICAvLyBGYWxsYmFjayBwYWdlcyBtdXN0IHRyaWdnZXIgdGhlIGRhdGEgZmV0Y2gsIHNvIHRoZSB0cmFuc2l0aW9uIGlzXG4gICAgICAgICAgICAgICAgLy8gbm90IHNoYWxsb3cuXG4gICAgICAgICAgICAgICAgLy8gT3RoZXIgcGFnZXMgKHN0cmljdGx5IHVwZGF0aW5nIHF1ZXJ5KSBoYXBwZW5zIHNoYWxsb3dseSwgYXMgZGF0YVxuICAgICAgICAgICAgICAgIC8vIHJlcXVpcmVtZW50cyB3b3VsZCBhbHJlYWR5IGJlIHByZXNlbnQuXG4gICAgICAgICAgICAgICAgc2hhbGxvdzogIWluaXRpYWxEYXRhLmlzRmFsbGJhY2sgJiYgIWluaXRpYWxNYXRjaGVzTWlkZGxld2FyZVxuICAgICAgICAgICAgfSkuY2F0Y2goKGVycik9PntcbiAgICAgICAgICAgICAgICBpZiAoIWVyci5jYW5jZWxsZWQpIHRocm93IGVycjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0hhc2goKTtcbiAgICB9XG4gICAgc2Nyb2xsVG9IYXNoKCkge1xuICAgICAgICBsZXQgeyBoYXNoICB9ID0gbG9jYXRpb247XG4gICAgICAgIGhhc2ggPSBoYXNoICYmIGhhc2guc3Vic3RyaW5nKDEpO1xuICAgICAgICBpZiAoIWhhc2gpIHJldHVybjtcbiAgICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChoYXNoKTtcbiAgICAgICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgICAgICAvLyBJZiB3ZSBjYWxsIHNjcm9sbEludG9WaWV3KCkgaW4gaGVyZSB3aXRob3V0IGEgc2V0VGltZW91dFxuICAgICAgICAvLyBpdCB3b24ndCBzY3JvbGwgcHJvcGVybHkuXG4gICAgICAgIHNldFRpbWVvdXQoKCk9PmVsLnNjcm9sbEludG9WaWV3KCksIDApO1xuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgeyBSZWFjdERldk92ZXJsYXkgIH0gPSByZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL0BuZXh0L3JlYWN0LWRldi1vdmVybGF5L2Rpc3QvY2xpZW50XCIpO1xuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChSZWFjdERldk92ZXJsYXksIG51bGwsIHRoaXMucHJvcHMuY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuYXN5bmMgZnVuY3Rpb24gaW5pdGlhbGl6ZShvcHRzKSB7XG4gICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgb3B0cyA9IHt9O1xuICAgIC8vIFRoaXMgbWFrZXMgc3VyZSB0aGlzIHNwZWNpZmljIGxpbmVzIGFyZSByZW1vdmVkIGluIHByb2R1Y3Rpb25cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgICB3ZWJwYWNrSE1SID0gb3B0cy53ZWJwYWNrSE1SO1xuICAgIH1cbiAgICBpbml0aWFsRGF0YSA9IEpTT04ucGFyc2UoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJfX05FWFRfREFUQV9fXCIpLnRleHRDb250ZW50KTtcbiAgICB3aW5kb3cuX19ORVhUX0RBVEFfXyA9IGluaXRpYWxEYXRhO1xuICAgIGRlZmF1bHRMb2NhbGUgPSBpbml0aWFsRGF0YS5kZWZhdWx0TG9jYWxlO1xuICAgIGNvbnN0IHByZWZpeCA9IGluaXRpYWxEYXRhLmFzc2V0UHJlZml4IHx8IFwiXCI7XG4gICAgLy8gV2l0aCBkeW5hbWljIGFzc2V0UHJlZml4IGl0J3Mgbm8gbG9uZ2VyIHBvc3NpYmxlIHRvIHNldCBhc3NldFByZWZpeCBhdCB0aGUgYnVpbGQgdGltZVxuICAgIC8vIFNvLCB0aGlzIGlzIGhvdyB3ZSBkbyBpdCBpbiB0aGUgY2xpZW50IHNpZGUgYXQgcnVudGltZVxuICAgIF9fd2VicGFja19wdWJsaWNfcGF0aF9fID0gXCJcIiArIHByZWZpeCArIFwiL19uZXh0L1wiIC8vZXNsaW50LWRpc2FibGUtbGluZVxuICAgIDtcbiAgICAvLyBJbml0aWFsaXplIG5leHQvY29uZmlnIHdpdGggdGhlIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb25cbiAgICAoMCwgX3J1bnRpbWVjb25maWcuc2V0Q29uZmlnKSh7XG4gICAgICAgIHNlcnZlclJ1bnRpbWVDb25maWc6IHt9LFxuICAgICAgICBwdWJsaWNSdW50aW1lQ29uZmlnOiBpbml0aWFsRGF0YS5ydW50aW1lQ29uZmlnIHx8IHt9XG4gICAgfSk7XG4gICAgYXNQYXRoID0gKDAsIF91dGlscy5nZXRVUkwpKCk7XG4gICAgLy8gbWFrZSBzdXJlIG5vdCB0byBhdHRlbXB0IHN0cmlwcGluZyBiYXNlUGF0aCBmb3IgNDA0c1xuICAgIGlmICgoMCwgX2hhc2Jhc2VwYXRoLmhhc0Jhc2VQYXRoKShhc1BhdGgpKSB7XG4gICAgICAgIGFzUGF0aCA9ICgwLCBfcmVtb3ZlYmFzZXBhdGgucmVtb3ZlQmFzZVBhdGgpKGFzUGF0aCk7XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgIGNvbnN0IHsgbm9ybWFsaXplTG9jYWxlUGF0aCAgfSA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL2kxOG4vbm9ybWFsaXplLWxvY2FsZS1wYXRoXCIpO1xuICAgICAgICBjb25zdCB7IGRldGVjdERvbWFpbkxvY2FsZSAgfSA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL2kxOG4vZGV0ZWN0LWRvbWFpbi1sb2NhbGVcIik7XG4gICAgICAgIGNvbnN0IHsgcGFyc2VSZWxhdGl2ZVVybCAgfSA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9wYXJzZS1yZWxhdGl2ZS11cmxcIik7XG4gICAgICAgIGNvbnN0IHsgZm9ybWF0VXJsICB9ID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2Zvcm1hdC11cmxcIik7XG4gICAgICAgIGlmIChpbml0aWFsRGF0YS5sb2NhbGVzKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRBcyA9IHBhcnNlUmVsYXRpdmVVcmwoYXNQYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsZVBhdGhSZXN1bHQgPSBub3JtYWxpemVMb2NhbGVQYXRoKHBhcnNlZEFzLnBhdGhuYW1lLCBpbml0aWFsRGF0YS5sb2NhbGVzKTtcbiAgICAgICAgICAgIGlmIChsb2NhbGVQYXRoUmVzdWx0LmRldGVjdGVkTG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkQXMucGF0aG5hbWUgPSBsb2NhbGVQYXRoUmVzdWx0LnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgIGFzUGF0aCA9IGZvcm1hdFVybChwYXJzZWRBcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGRlcml2ZSB0aGUgZGVmYXVsdCBsb2NhbGUgaWYgaXQgd2Fzbid0IGRldGVjdGVkIGluIHRoZSBhc1BhdGhcbiAgICAgICAgICAgICAgICAvLyBzaW5jZSB3ZSBkb24ndCBwcmVyZW5kZXIgc3RhdGljIHBhZ2VzIHdpdGggYWxsIHBvc3NpYmxlIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAvLyBsb2NhbGVzXG4gICAgICAgICAgICAgICAgZGVmYXVsdExvY2FsZSA9IGluaXRpYWxEYXRhLmxvY2FsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGF0dGVtcHQgZGV0ZWN0aW5nIGRlZmF1bHQgbG9jYWxlIGJhc2VkIG9uIGhvc3RuYW1lXG4gICAgICAgICAgICBjb25zdCBkZXRlY3RlZERvbWFpbiA9IGRldGVjdERvbWFpbkxvY2FsZShwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9ET01BSU5TLCB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUpO1xuICAgICAgICAgICAgLy8gVE9ETzogaW52ZXN0aWdhdGUgaWYgZGVmYXVsdExvY2FsZSBuZWVkcyB0byBiZSBwb3B1bGF0ZWQgYWZ0ZXJcbiAgICAgICAgICAgIC8vIGh5ZHJhdGlvbiB0byBwcmV2ZW50IG1pc21hdGNoZWQgcmVuZGVyc1xuICAgICAgICAgICAgaWYgKGRldGVjdGVkRG9tYWluKSB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdExvY2FsZSA9IGRldGVjdGVkRG9tYWluLmRlZmF1bHRMb2NhbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGluaXRpYWxEYXRhLnNjcmlwdExvYWRlcikge1xuICAgICAgICBjb25zdCB7IGluaXRTY3JpcHRMb2FkZXIgIH0gPSByZXF1aXJlKFwiLi9zY3JpcHRcIik7XG4gICAgICAgIGluaXRTY3JpcHRMb2FkZXIoaW5pdGlhbERhdGEuc2NyaXB0TG9hZGVyKTtcbiAgICB9XG4gICAgcGFnZUxvYWRlciA9IG5ldyBfcGFnZWxvYWRlci5kZWZhdWx0KGluaXRpYWxEYXRhLmJ1aWxkSWQsIHByZWZpeCk7XG4gICAgY29uc3QgcmVnaXN0ZXIgPSAocGFyYW0pPT57XG4gICAgICAgIGxldCBbciwgZl0gPSBwYXJhbTtcbiAgICAgICAgcmV0dXJuIHBhZ2VMb2FkZXIucm91dGVMb2FkZXIub25FbnRyeXBvaW50KHIsIGYpO1xuICAgIH07XG4gICAgaWYgKHdpbmRvdy5fX05FWFRfUCkge1xuICAgICAgICAvLyBEZWZlciBwYWdlIHJlZ2lzdHJhdGlvbiBmb3IgYW5vdGhlciB0aWNrLiBUaGlzIHdpbGwgaW5jcmVhc2UgdGhlIG92ZXJhbGxcbiAgICAgICAgLy8gbGF0ZW5jeSBpbiBoeWRyYXRpbmcgdGhlIHBhZ2UsIGJ1dCByZWR1Y2UgdGhlIHRvdGFsIGJsb2NraW5nIHRpbWUuXG4gICAgICAgIHdpbmRvdy5fX05FWFRfUC5tYXAoKHApPT5zZXRUaW1lb3V0KCgpPT5yZWdpc3RlcihwKSwgMCkpO1xuICAgIH1cbiAgICB3aW5kb3cuX19ORVhUX1AgPSBbXTtcbiAgICB3aW5kb3cuX19ORVhUX1AucHVzaCA9IHJlZ2lzdGVyO1xuICAgIGhlYWRNYW5hZ2VyID0gKDAsIF9oZWFkbWFuYWdlci5kZWZhdWx0KSgpO1xuICAgIGhlYWRNYW5hZ2VyLmdldElzU3NyID0gKCk9PntcbiAgICAgICAgcmV0dXJuIHJvdXRlci5pc1NzcjtcbiAgICB9O1xuICAgIGFwcEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIl9fbmV4dFwiKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBhc3NldFByZWZpeDogcHJlZml4XG4gICAgfTtcbn1cbmZ1bmN0aW9uIHJlbmRlckFwcChBcHAsIGFwcFByb3BzKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChBcHAsIGFwcFByb3BzKTtcbn1cbmZ1bmN0aW9uIEFwcENvbnRhaW5lcihwYXJhbSkge1xuICAgIGxldCB7IGNoaWxkcmVuICB9ID0gcGFyYW07XG4gICAgdmFyIF9zZWxmX19fTkVYVF9EQVRBX19fYXV0b0V4cG9ydDtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KENvbnRhaW5lciwge1xuICAgICAgICBmbjogKGVycm9yKT0+Ly8gVE9ETzogRml4IGRpc2FibGVkIGVzbGludCBydWxlXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICAgICAgICByZW5kZXJFcnJvcih7XG4gICAgICAgICAgICAgICAgQXBwOiBDYWNoZWRBcHAsXG4gICAgICAgICAgICAgICAgZXJyOiBlcnJvclxuICAgICAgICAgICAgfSkuY2F0Y2goKGVycik9PmNvbnNvbGUuZXJyb3IoXCJFcnJvciByZW5kZXJpbmcgcGFnZTogXCIsIGVycikpXG4gICAgfSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9hcHByb3V0ZXJjb250ZXh0LkFwcFJvdXRlckNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6ICgwLCBfYWRhcHRlcnMuYWRhcHRGb3JBcHBSb3V0ZXJJbnN0YW5jZSkocm91dGVyKVxuICAgIH0sIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfaG9va3NjbGllbnRjb250ZXh0LlNlYXJjaFBhcmFtc0NvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6ICgwLCBfYWRhcHRlcnMuYWRhcHRGb3JTZWFyY2hQYXJhbXMpKHJvdXRlcilcbiAgICB9LCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX2FkYXB0ZXJzLlBhdGhuYW1lQ29udGV4dFByb3ZpZGVyQWRhcHRlciwge1xuICAgICAgICByb3V0ZXI6IHJvdXRlcixcbiAgICAgICAgaXNBdXRvRXhwb3J0OiAoX3NlbGZfX19ORVhUX0RBVEFfX19hdXRvRXhwb3J0ID0gc2VsZi5fX05FWFRfREFUQV9fLmF1dG9FeHBvcnQpICE9IG51bGwgPyBfc2VsZl9fX05FWFRfREFUQV9fX2F1dG9FeHBvcnQgOiBmYWxzZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfcm91dGVyY29udGV4dC5Sb3V0ZXJDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICAgIHZhbHVlOiAoMCwgX3JvdXRlci5tYWtlUHVibGljUm91dGVySW5zdGFuY2UpKHJvdXRlcilcbiAgICB9LCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX2hlYWRtYW5hZ2VyY29udGV4dC5IZWFkTWFuYWdlckNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6IGhlYWRNYW5hZ2VyXG4gICAgfSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9pbWFnZWNvbmZpZ2NvbnRleHQuSW1hZ2VDb25maWdDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICAgIHZhbHVlOiBwcm9jZXNzLmVudi5fX05FWFRfSU1BR0VfT1BUU1xuICAgIH0sIGNoaWxkcmVuKSkpKSkpKTtcbn1cbmNvbnN0IHdyYXBBcHAgPSAoQXBwKT0+KHdyYXBwZWRBcHBQcm9wcyk9PntcbiAgICAgICAgY29uc3QgYXBwUHJvcHMgPSB7XG4gICAgICAgICAgICAuLi53cmFwcGVkQXBwUHJvcHMsXG4gICAgICAgICAgICBDb21wb25lbnQ6IENhY2hlZENvbXBvbmVudCxcbiAgICAgICAgICAgIGVycjogaW5pdGlhbERhdGEuZXJyLFxuICAgICAgICAgICAgcm91dGVyXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQXBwQ29udGFpbmVyLCBudWxsLCByZW5kZXJBcHAoQXBwLCBhcHBQcm9wcykpO1xuICAgIH07XG4vLyBUaGlzIG1ldGhvZCBoYW5kbGVzIGFsbCBydW50aW1lIGFuZCBkZWJ1ZyBlcnJvcnMuXG4vLyA0MDQgYW5kIDUwMCBlcnJvcnMgYXJlIHNwZWNpYWwga2luZCBvZiBlcnJvcnNcbi8vIGFuZCB0aGV5IGFyZSBzdGlsbCBoYW5kbGUgdmlhIHRoZSBtYWluIHJlbmRlciBtZXRob2QuXG5mdW5jdGlvbiByZW5kZXJFcnJvcihyZW5kZXJFcnJvclByb3BzKSB7XG4gICAgbGV0IHsgQXBwICwgZXJyICB9ID0gcmVuZGVyRXJyb3JQcm9wcztcbiAgICAvLyBJbiBkZXZlbG9wbWVudCBydW50aW1lIGVycm9ycyBhcmUgY2F1Z2h0IGJ5IG91ciBvdmVybGF5XG4gICAgLy8gSW4gcHJvZHVjdGlvbiB3ZSBjYXRjaCBydW50aW1lIGVycm9ycyB1c2luZyBjb21wb25lbnREaWRDYXRjaCB3aGljaCB3aWxsIHRyaWdnZXIgcmVuZGVyRXJyb3JcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgIC8vIEEgTmV4dC5qcyByZW5kZXJpbmcgcnVudGltZSBlcnJvciBpcyBhbHdheXMgdW5yZWNvdmVyYWJsZVxuICAgICAgICAvLyBGSVhNRTogbGV0J3MgbWFrZSB0aGlzIHJlY292ZXJhYmxlIChlcnJvciBpbiBHSVAgY2xpZW50LXRyYW5zaXRpb24pXG4gICAgICAgIHdlYnBhY2tITVIub25VbnJlY292ZXJhYmxlRXJyb3IoKTtcbiAgICAgICAgLy8gV2UgbmVlZCB0byByZW5kZXIgYW4gZW1wdHkgPEFwcD4gc28gdGhhdCB0aGUgYDxSZWFjdERldk92ZXJsYXk+YCBjYW5cbiAgICAgICAgLy8gcmVuZGVyIGl0c2VsZi5cbiAgICAgICAgLy8gVE9ETzogRml4IGRpc2FibGVkIGVzbGludCBydWxlXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgcmV0dXJuIGRvUmVuZGVyKHtcbiAgICAgICAgICAgIEFwcDogKCk9Pm51bGwsXG4gICAgICAgICAgICBwcm9wczoge30sXG4gICAgICAgICAgICBDb21wb25lbnQ6ICgpPT5udWxsLFxuICAgICAgICAgICAgc3R5bGVTaGVldHM6IFtdXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBNYWtlIHN1cmUgd2UgbG9nIHRoZSBlcnJvciB0byB0aGUgY29uc29sZSwgb3RoZXJ3aXNlIHVzZXJzIGNhbid0IHRyYWNrIGRvd24gaXNzdWVzLlxuICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICBjb25zb2xlLmVycm9yKFwiQSBjbGllbnQtc2lkZSBleGNlcHRpb24gaGFzIG9jY3VycmVkLCBzZWUgaGVyZSBmb3IgbW9yZSBpbmZvOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9jbGllbnQtc2lkZS1leGNlcHRpb24tb2NjdXJyZWRcIik7XG4gICAgcmV0dXJuIHBhZ2VMb2FkZXIubG9hZFBhZ2UoXCIvX2Vycm9yXCIpLnRoZW4oKHBhcmFtKT0+e1xuICAgICAgICBsZXQgeyBwYWdlOiBFcnJvckNvbXBvbmVudCAsIHN0eWxlU2hlZXRzICB9ID0gcGFyYW07XG4gICAgICAgIHJldHVybiAobGFzdEFwcFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBsYXN0QXBwUHJvcHMuQ29tcG9uZW50KSA9PT0gRXJyb3JDb21wb25lbnQgPyBpbXBvcnQoXCIuLi9wYWdlcy9fZXJyb3JcIikudGhlbigoZXJyb3JNb2R1bGUpPT57XG4gICAgICAgICAgICByZXR1cm4gaW1wb3J0KFwiLi4vcGFnZXMvX2FwcFwiKS50aGVuKChhcHBNb2R1bGUpPT57XG4gICAgICAgICAgICAgICAgQXBwID0gYXBwTW9kdWxlLmRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgcmVuZGVyRXJyb3JQcm9wcy5BcHAgPSBBcHA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yTW9kdWxlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLnRoZW4oKG0pPT4oe1xuICAgICAgICAgICAgICAgIEVycm9yQ29tcG9uZW50OiBtLmRlZmF1bHQsXG4gICAgICAgICAgICAgICAgc3R5bGVTaGVldHM6IFtdXG4gICAgICAgICAgICB9KSkgOiB7XG4gICAgICAgICAgICBFcnJvckNvbXBvbmVudCxcbiAgICAgICAgICAgIHN0eWxlU2hlZXRzXG4gICAgICAgIH07XG4gICAgfSkudGhlbigocGFyYW0pPT57XG4gICAgICAgIGxldCB7IEVycm9yQ29tcG9uZW50ICwgc3R5bGVTaGVldHMgIH0gPSBwYXJhbTtcbiAgICAgICAgdmFyIF9yZW5kZXJFcnJvclByb3BzX3Byb3BzO1xuICAgICAgICAvLyBJbiBwcm9kdWN0aW9uIHdlIGRvIGEgbm9ybWFsIHJlbmRlciB3aXRoIHRoZSBgRXJyb3JDb21wb25lbnRgIGFzIGNvbXBvbmVudC5cbiAgICAgICAgLy8gSWYgd2UndmUgZ290dGVuIGhlcmUgdXBvbiBpbml0aWFsIHJlbmRlciwgd2UgY2FuIHVzZSB0aGUgcHJvcHMgZnJvbSB0aGUgc2VydmVyLlxuICAgICAgICAvLyBPdGhlcndpc2UsIHdlIG5lZWQgdG8gY2FsbCBgZ2V0SW5pdGlhbFByb3BzYCBvbiBgQXBwYCBiZWZvcmUgbW91bnRpbmcuXG4gICAgICAgIGNvbnN0IEFwcFRyZWUgPSB3cmFwQXBwKEFwcCk7XG4gICAgICAgIGNvbnN0IGFwcEN0eCA9IHtcbiAgICAgICAgICAgIENvbXBvbmVudDogRXJyb3JDb21wb25lbnQsXG4gICAgICAgICAgICBBcHBUcmVlLFxuICAgICAgICAgICAgcm91dGVyLFxuICAgICAgICAgICAgY3R4OiB7XG4gICAgICAgICAgICAgICAgZXJyLFxuICAgICAgICAgICAgICAgIHBhdGhuYW1lOiBpbml0aWFsRGF0YS5wYWdlLFxuICAgICAgICAgICAgICAgIHF1ZXJ5OiBpbml0aWFsRGF0YS5xdWVyeSxcbiAgICAgICAgICAgICAgICBhc1BhdGgsXG4gICAgICAgICAgICAgICAgQXBwVHJlZVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCgoX3JlbmRlckVycm9yUHJvcHNfcHJvcHMgPSByZW5kZXJFcnJvclByb3BzLnByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogX3JlbmRlckVycm9yUHJvcHNfcHJvcHMuZXJyKSA/IHJlbmRlckVycm9yUHJvcHMucHJvcHMgOiAoMCwgX3V0aWxzLmxvYWRHZXRJbml0aWFsUHJvcHMpKEFwcCwgYXBwQ3R4KSkudGhlbigoaW5pdFByb3BzKT0+Ly8gVE9ETzogRml4IGRpc2FibGVkIGVzbGludCBydWxlXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICAgICAgICBkb1JlbmRlcih7XG4gICAgICAgICAgICAgICAgLi4ucmVuZGVyRXJyb3JQcm9wcyxcbiAgICAgICAgICAgICAgICBlcnIsXG4gICAgICAgICAgICAgICAgQ29tcG9uZW50OiBFcnJvckNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBzdHlsZVNoZWV0cyxcbiAgICAgICAgICAgICAgICBwcm9wczogaW5pdFByb3BzXG4gICAgICAgICAgICB9KSk7XG4gICAgfSk7XG59XG4vLyBEdW1teSBjb21wb25lbnQgdGhhdCB3ZSByZW5kZXIgYXMgYSBjaGlsZCBvZiBSb290IHNvIHRoYXQgd2UgY2FuXG4vLyB0b2dnbGUgdGhlIGNvcnJlY3Qgc3R5bGVzIGJlZm9yZSB0aGUgcGFnZSBpcyByZW5kZXJlZC5cbmZ1bmN0aW9uIEhlYWQocGFyYW0pIHtcbiAgICBsZXQgeyBjYWxsYmFjayAgfSA9IHBhcmFtO1xuICAgIC8vIFdlIHVzZSBgdXNlTGF5b3V0RWZmZWN0YCB0byBndWFyYW50ZWUgdGhlIGNhbGxiYWNrIGlzIGV4ZWN1dGVkXG4gICAgLy8gYXMgc29vbiBhcyBSZWFjdCBmbHVzaGVzIHRoZSB1cGRhdGUuXG4gICAgX3JlYWN0LmRlZmF1bHQudXNlTGF5b3V0RWZmZWN0KCgpPT5jYWxsYmFjaygpLCBbXG4gICAgICAgIGNhbGxiYWNrXG4gICAgXSk7XG4gICAgcmV0dXJuIG51bGw7XG59XG5sZXQgcmVhY3RSb290ID0gbnVsbDtcbi8vIE9uIGluaXRpYWwgcmVuZGVyIGEgaHlkcmF0ZSBzaG91bGQgYWx3YXlzIGhhcHBlblxubGV0IHNob3VsZEh5ZHJhdGUgPSB0cnVlO1xuZnVuY3Rpb24gY2xlYXJNYXJrcygpIHtcbiAgICBbXG4gICAgICAgIFwiYmVmb3JlUmVuZGVyXCIsXG4gICAgICAgIFwiYWZ0ZXJIeWRyYXRlXCIsXG4gICAgICAgIFwiYWZ0ZXJSZW5kZXJcIixcbiAgICAgICAgXCJyb3V0ZUNoYW5nZVwiXG4gICAgXS5mb3JFYWNoKChtYXJrKT0+cGVyZm9ybWFuY2UuY2xlYXJNYXJrcyhtYXJrKSk7XG59XG5mdW5jdGlvbiBtYXJrSHlkcmF0ZUNvbXBsZXRlKCkge1xuICAgIGlmICghX3V0aWxzLlNUKSByZXR1cm47XG4gICAgcGVyZm9ybWFuY2UubWFyayhcImFmdGVySHlkcmF0ZVwiKSAvLyBtYXJrIGVuZCBvZiBoeWRyYXRpb25cbiAgICA7XG4gICAgcGVyZm9ybWFuY2UubWVhc3VyZShcIk5leHQuanMtYmVmb3JlLWh5ZHJhdGlvblwiLCBcIm5hdmlnYXRpb25TdGFydFwiLCBcImJlZm9yZVJlbmRlclwiKTtcbiAgICBwZXJmb3JtYW5jZS5tZWFzdXJlKFwiTmV4dC5qcy1oeWRyYXRpb25cIiwgXCJiZWZvcmVSZW5kZXJcIiwgXCJhZnRlckh5ZHJhdGVcIik7XG4gICAgaWYgKG9uUGVyZkVudHJ5KSB7XG4gICAgICAgIHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeU5hbWUoXCJOZXh0LmpzLWh5ZHJhdGlvblwiKS5mb3JFYWNoKG9uUGVyZkVudHJ5KTtcbiAgICB9XG4gICAgY2xlYXJNYXJrcygpO1xufVxuZnVuY3Rpb24gbWFya1JlbmRlckNvbXBsZXRlKCkge1xuICAgIGlmICghX3V0aWxzLlNUKSByZXR1cm47XG4gICAgcGVyZm9ybWFuY2UubWFyayhcImFmdGVyUmVuZGVyXCIpIC8vIG1hcmsgZW5kIG9mIHJlbmRlclxuICAgIDtcbiAgICBjb25zdCBuYXZTdGFydEVudHJpZXMgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lKFwicm91dGVDaGFuZ2VcIiwgXCJtYXJrXCIpO1xuICAgIGlmICghbmF2U3RhcnRFbnRyaWVzLmxlbmd0aCkgcmV0dXJuO1xuICAgIHBlcmZvcm1hbmNlLm1lYXN1cmUoXCJOZXh0LmpzLXJvdXRlLWNoYW5nZS10by1yZW5kZXJcIiwgbmF2U3RhcnRFbnRyaWVzWzBdLm5hbWUsIFwiYmVmb3JlUmVuZGVyXCIpO1xuICAgIHBlcmZvcm1hbmNlLm1lYXN1cmUoXCJOZXh0LmpzLXJlbmRlclwiLCBcImJlZm9yZVJlbmRlclwiLCBcImFmdGVyUmVuZGVyXCIpO1xuICAgIGlmIChvblBlcmZFbnRyeSkge1xuICAgICAgICBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lKFwiTmV4dC5qcy1yZW5kZXJcIikuZm9yRWFjaChvblBlcmZFbnRyeSk7XG4gICAgICAgIHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeU5hbWUoXCJOZXh0LmpzLXJvdXRlLWNoYW5nZS10by1yZW5kZXJcIikuZm9yRWFjaChvblBlcmZFbnRyeSk7XG4gICAgfVxuICAgIGNsZWFyTWFya3MoKTtcbiAgICBbXG4gICAgICAgIFwiTmV4dC5qcy1yb3V0ZS1jaGFuZ2UtdG8tcmVuZGVyXCIsXG4gICAgICAgIFwiTmV4dC5qcy1yZW5kZXJcIlxuICAgIF0uZm9yRWFjaCgobWVhc3VyZSk9PnBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXMobWVhc3VyZSkpO1xufVxuZnVuY3Rpb24gcmVuZGVyUmVhY3RFbGVtZW50KGRvbUVsLCBmbikge1xuICAgIC8vIG1hcmsgc3RhcnQgb2YgaHlkcmF0ZS9yZW5kZXJcbiAgICBpZiAoX3V0aWxzLlNUKSB7XG4gICAgICAgIHBlcmZvcm1hbmNlLm1hcmsoXCJiZWZvcmVSZW5kZXJcIik7XG4gICAgfVxuICAgIGNvbnN0IHJlYWN0RWwgPSBmbihzaG91bGRIeWRyYXRlID8gbWFya0h5ZHJhdGVDb21wbGV0ZSA6IG1hcmtSZW5kZXJDb21wbGV0ZSk7XG4gICAgaWYgKCFyZWFjdFJvb3QpIHtcbiAgICAgICAgLy8gVW5saWtlIHdpdGggY3JlYXRlUm9vdCwgeW91IGRvbid0IG5lZWQgYSBzZXBhcmF0ZSByb290LnJlbmRlcigpIGNhbGwgaGVyZVxuICAgICAgICByZWFjdFJvb3QgPSBfY2xpZW50LmRlZmF1bHQuaHlkcmF0ZVJvb3QoZG9tRWwsIHJlYWN0RWwsIHtcbiAgICAgICAgICAgIG9uUmVjb3ZlcmFibGVFcnJvcjogX29ucmVjb3ZlcmFibGVlcnJvci5kZWZhdWx0XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgc2hvdWxkSHlkcmF0ZSB2YXJpYWJsZSB3aGVuIFJlYWN0IDE4IGlzIHN0YWJsZSBhcyBpdCBjYW4gZGVwZW5kIG9uIGByZWFjdFJvb3RgIGV4aXN0aW5nXG4gICAgICAgIHNob3VsZEh5ZHJhdGUgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdGFydFRyYW5zaXRpb24gPSBfcmVhY3QuZGVmYXVsdC5zdGFydFRyYW5zaXRpb247XG4gICAgICAgIHN0YXJ0VHJhbnNpdGlvbigoKT0+e1xuICAgICAgICAgICAgcmVhY3RSb290LnJlbmRlcihyZWFjdEVsKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZnVuY3Rpb24gUm9vdChwYXJhbSkge1xuICAgIGxldCB7IGNhbGxiYWNrcyAsIGNoaWxkcmVuICB9ID0gcGFyYW07XG4gICAgLy8gV2UgdXNlIGB1c2VMYXlvdXRFZmZlY3RgIHRvIGd1YXJhbnRlZSB0aGUgY2FsbGJhY2tzIGFyZSBleGVjdXRlZFxuICAgIC8vIGFzIHNvb24gYXMgUmVhY3QgZmx1c2hlcyB0aGUgdXBkYXRlXG4gICAgX3JlYWN0LmRlZmF1bHQudXNlTGF5b3V0RWZmZWN0KCgpPT5jYWxsYmFja3MuZm9yRWFjaCgoY2FsbGJhY2spPT5jYWxsYmFjaygpKSwgW1xuICAgICAgICBjYWxsYmFja3NcbiAgICBdKTtcbiAgICAvLyBXZSBzaG91bGQgYXNrIHRvIG1lYXN1cmUgdGhlIFdlYiBWaXRhbHMgYWZ0ZXIgcmVuZGVyaW5nIGNvbXBsZXRlcyBzbyB3ZVxuICAgIC8vIGRvbid0IGNhdXNlIGFueSBoeWRyYXRpb24gZGVsYXk6XG4gICAgX3JlYWN0LmRlZmF1bHQudXNlRWZmZWN0KCgpPT57XG4gICAgICAgICgwLCBfcGVyZm9ybWFuY2VyZWxheWVyLmRlZmF1bHQpKG9uUGVyZkVudHJ5KTtcbiAgICB9LCBbXSk7XG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9URVNUX01PREUpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgICAgIF9yZWFjdC5kZWZhdWx0LnVzZUVmZmVjdCgoKT0+e1xuICAgICAgICAgICAgd2luZG93Ll9fTkVYVF9IWURSQVRFRCA9IHRydWU7XG4gICAgICAgICAgICBpZiAod2luZG93Ll9fTkVYVF9IWURSQVRFRF9DQikge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5fX05FWFRfSFlEUkFURURfQ0IoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgW10pO1xuICAgIH1cbiAgICByZXR1cm4gY2hpbGRyZW47XG59XG5mdW5jdGlvbiBkb1JlbmRlcihpbnB1dCkge1xuICAgIGxldCB7IEFwcCAsIENvbXBvbmVudCAsIHByb3BzICwgZXJyICB9ID0gaW5wdXQ7XG4gICAgbGV0IHN0eWxlU2hlZXRzID0gXCJpbml0aWFsXCIgaW4gaW5wdXQgPyB1bmRlZmluZWQgOiBpbnB1dC5zdHlsZVNoZWV0cztcbiAgICBDb21wb25lbnQgPSBDb21wb25lbnQgfHwgbGFzdEFwcFByb3BzLkNvbXBvbmVudDtcbiAgICBwcm9wcyA9IHByb3BzIHx8IGxhc3RBcHBQcm9wcy5wcm9wcztcbiAgICBjb25zdCBhcHBQcm9wcyA9IHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIENvbXBvbmVudCxcbiAgICAgICAgZXJyLFxuICAgICAgICByb3V0ZXJcbiAgICB9O1xuICAgIC8vIGxhc3RBcHBQcm9wcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBSZWFjdERvbS5yZW5kZXIgdG8gYWNjb3VudCBmb3IgUmVhY3REb20gdGhyb3dpbmcgYW4gZXJyb3IuXG4gICAgbGFzdEFwcFByb3BzID0gYXBwUHJvcHM7XG4gICAgbGV0IGNhbmNlbGVkID0gZmFsc2U7XG4gICAgbGV0IHJlc29sdmVQcm9taXNlO1xuICAgIGNvbnN0IHJlbmRlclByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+e1xuICAgICAgICBpZiAobGFzdFJlbmRlclJlamVjdCkge1xuICAgICAgICAgICAgbGFzdFJlbmRlclJlamVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJlc29sdmVQcm9taXNlID0gKCk9PntcbiAgICAgICAgICAgIGxhc3RSZW5kZXJSZWplY3QgPSBudWxsO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9O1xuICAgICAgICBsYXN0UmVuZGVyUmVqZWN0ID0gKCk9PntcbiAgICAgICAgICAgIGNhbmNlbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGxhc3RSZW5kZXJSZWplY3QgPSBudWxsO1xuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXCJDYW5jZWwgcmVuZGVyaW5nIHJvdXRlXCIpO1xuICAgICAgICAgICAgZXJyb3IuY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH07XG4gICAgfSk7XG4gICAgLy8gVGhpcyBmdW5jdGlvbiBoYXMgYSByZXR1cm4gdHlwZSB0byBlbnN1cmUgaXQgZG9lc24ndCBzdGFydCByZXR1cm5pbmcgYVxuICAgIC8vIFByb21pc2UuIEl0IHNob3VsZCByZW1haW4gc3luY2hyb25vdXMuXG4gICAgZnVuY3Rpb24gb25TdGFydCgpIHtcbiAgICAgICAgaWYgKCFzdHlsZVNoZWV0cyB8fCAvLyBXZSB1c2UgYHN0eWxlLWxvYWRlcmAgaW4gZGV2ZWxvcG1lbnQsIHNvIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmdcbiAgICAgICAgLy8gdW5sZXNzIHdlJ3JlIGluIHByb2R1Y3Rpb246XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdHlsZVRhZ3MgPSBsb29zZVRvQXJyYXkoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInN0eWxlW2RhdGEtbi1ocmVmXVwiKSk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRIcmVmcyA9IG5ldyBTZXQoY3VycmVudFN0eWxlVGFncy5tYXAoKHRhZyk9PnRhZy5nZXRBdHRyaWJ1dGUoXCJkYXRhLW4taHJlZlwiKSkpO1xuICAgICAgICBjb25zdCBub3NjcmlwdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJub3NjcmlwdFtkYXRhLW4tY3NzXVwiKTtcbiAgICAgICAgY29uc3Qgbm9uY2UgPSBub3NjcmlwdCA9PSBudWxsID8gdm9pZCAwIDogbm9zY3JpcHQuZ2V0QXR0cmlidXRlKFwiZGF0YS1uLWNzc1wiKTtcbiAgICAgICAgc3R5bGVTaGVldHMuZm9yRWFjaCgocGFyYW0pPT57XG4gICAgICAgICAgICBsZXQgeyBocmVmICwgdGV4dCAgfSA9IHBhcmFtO1xuICAgICAgICAgICAgaWYgKCFjdXJyZW50SHJlZnMuaGFzKGhyZWYpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3R5bGVUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gICAgICAgICAgICAgICAgc3R5bGVUYWcuc2V0QXR0cmlidXRlKFwiZGF0YS1uLWhyZWZcIiwgaHJlZik7XG4gICAgICAgICAgICAgICAgc3R5bGVUYWcuc2V0QXR0cmlidXRlKFwibWVkaWFcIiwgXCJ4XCIpO1xuICAgICAgICAgICAgICAgIGlmIChub25jZSkge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZVRhZy5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBub25jZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVUYWcpO1xuICAgICAgICAgICAgICAgIHN0eWxlVGFnLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBvbkhlYWRDb21taXQoKSB7XG4gICAgICAgIGlmICgvLyBXZSB1c2UgYHN0eWxlLWxvYWRlcmAgaW4gZGV2ZWxvcG1lbnQsIHNvIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmdcbiAgICAgICAgLy8gdW5sZXNzIHdlJ3JlIGluIHByb2R1Y3Rpb246XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiAmJiAvLyBXZSBjYW4gc2tpcCB0aGlzIGR1cmluZyBoeWRyYXRpb24uIFJ1bm5pbmcgaXQgd29udCBjYXVzZSBhbnkgaGFybSwgYnV0XG4gICAgICAgIC8vIHdlIG1heSBhcyB3ZWxsIHNhdmUgdGhlIENQVSBjeWNsZXM6XG4gICAgICAgIHN0eWxlU2hlZXRzICYmIC8vIEVuc3VyZSB0aGlzIHJlbmRlciB3YXMgbm90IGNhbmNlbGVkXG4gICAgICAgICFjYW5jZWxlZCkge1xuICAgICAgICAgICAgY29uc3QgZGVzaXJlZEhyZWZzID0gbmV3IFNldChzdHlsZVNoZWV0cy5tYXAoKHMpPT5zLmhyZWYpKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdHlsZVRhZ3MgPSBsb29zZVRvQXJyYXkoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInN0eWxlW2RhdGEtbi1ocmVmXVwiKSk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SHJlZnMgPSBjdXJyZW50U3R5bGVUYWdzLm1hcCgodGFnKT0+dGFnLmdldEF0dHJpYnV0ZShcImRhdGEtbi1ocmVmXCIpKTtcbiAgICAgICAgICAgIC8vIFRvZ2dsZSBgPHN0eWxlPmAgdGFncyBvbiBvciBvZmYgZGVwZW5kaW5nIG9uIGlmIHRoZXkncmUgbmVlZGVkOlxuICAgICAgICAgICAgZm9yKGxldCBpZHggPSAwOyBpZHggPCBjdXJyZW50SHJlZnMubGVuZ3RoOyArK2lkeCl7XG4gICAgICAgICAgICAgICAgaWYgKGRlc2lyZWRIcmVmcy5oYXMoY3VycmVudEhyZWZzW2lkeF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHlsZVRhZ3NbaWR4XS5yZW1vdmVBdHRyaWJ1dGUoXCJtZWRpYVwiKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3R5bGVUYWdzW2lkeF0uc2V0QXR0cmlidXRlKFwibWVkaWFcIiwgXCJ4XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFJlb3JkZXIgc3R5bGVzIGludG8gaW50ZW5kZWQgb3JkZXI6XG4gICAgICAgICAgICBsZXQgcmVmZXJlbmNlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJub3NjcmlwdFtkYXRhLW4tY3NzXVwiKTtcbiAgICAgICAgICAgIGlmICgvLyBUaGlzIHNob3VsZCBiZSBhbiBpbnZhcmlhbnQ6XG4gICAgICAgICAgICByZWZlcmVuY2VOb2RlKSB7XG4gICAgICAgICAgICAgICAgc3R5bGVTaGVldHMuZm9yRWFjaCgocGFyYW0pPT57XG4gICAgICAgICAgICAgICAgICAgIGxldCB7IGhyZWYgIH0gPSBwYXJhbTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0VGFnID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc3R5bGVbZGF0YS1uLWhyZWY9XCInICsgaHJlZiArICdcIl0nKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKC8vIFRoaXMgc2hvdWxkIGJlIGFuIGludmFyaWFudDpcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VGFnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VOb2RlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRhcmdldFRhZywgcmVmZXJlbmNlTm9kZS5uZXh0U2libGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VOb2RlID0gdGFyZ2V0VGFnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGaW5hbGx5LCBjbGVhbiB1cCBzZXJ2ZXIgcmVuZGVyZWQgc3R5bGVzaGVldHM6XG4gICAgICAgICAgICBsb29zZVRvQXJyYXkoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImxpbmtbZGF0YS1uLXBdXCIpKS5mb3JFYWNoKChlbCk9PntcbiAgICAgICAgICAgICAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnB1dC5zY3JvbGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgeCAsIHkgIH0gPSBpbnB1dC5zY3JvbGw7XG4gICAgICAgICAgICAoMCwgX2hhbmRsZXNtb290aHNjcm9sbC5oYW5kbGVTbW9vdGhTY3JvbGwpKCgpPT57XG4gICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKHgsIHkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gb25Sb290Q29tbWl0KCkge1xuICAgICAgICByZXNvbHZlUHJvbWlzZSgpO1xuICAgIH1cbiAgICBvblN0YXJ0KCk7XG4gICAgY29uc3QgZWxlbSA9IC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfcmVhY3QuZGVmYXVsdC5GcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEhlYWQsIHtcbiAgICAgICAgY2FsbGJhY2s6IG9uSGVhZENvbW1pdFxuICAgIH0pLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQXBwQ29udGFpbmVyLCBudWxsLCByZW5kZXJBcHAoQXBwLCBhcHBQcm9wcyksIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfcG9ydGFsLlBvcnRhbCwge1xuICAgICAgICB0eXBlOiBcIm5leHQtcm91dGUtYW5ub3VuY2VyXCJcbiAgICB9LCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3JvdXRlYW5ub3VuY2VyLlJvdXRlQW5ub3VuY2VyLCBudWxsKSkpKTtcbiAgICAvLyBXZSBjYXRjaCBydW50aW1lIGVycm9ycyB1c2luZyBjb21wb25lbnREaWRDYXRjaCB3aGljaCB3aWxsIHRyaWdnZXIgcmVuZGVyRXJyb3JcbiAgICByZW5kZXJSZWFjdEVsZW1lbnQoYXBwRWxlbWVudCwgKGNhbGxiYWNrKT0+LyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFJvb3QsIHtcbiAgICAgICAgICAgIGNhbGxiYWNrczogW1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrLFxuICAgICAgICAgICAgICAgIG9uUm9vdENvbW1pdFxuICAgICAgICAgICAgXVxuICAgICAgICB9LCBwcm9jZXNzLmVudi5fX05FWFRfU1RSSUNUX01PREUgPyAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX3JlYWN0LmRlZmF1bHQuU3RyaWN0TW9kZSwgbnVsbCwgZWxlbSkgOiBlbGVtKSk7XG4gICAgcmV0dXJuIHJlbmRlclByb21pc2U7XG59XG5hc3luYyBmdW5jdGlvbiByZW5kZXIocmVuZGVyaW5nUHJvcHMpIHtcbiAgICBpZiAocmVuZGVyaW5nUHJvcHMuZXJyKSB7XG4gICAgICAgIGF3YWl0IHJlbmRlckVycm9yKHJlbmRlcmluZ1Byb3BzKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBhd2FpdCBkb1JlbmRlcihyZW5kZXJpbmdQcm9wcyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnN0IHJlbmRlckVyciA9ICgwLCBfaXNlcnJvci5nZXRQcm9wZXJFcnJvcikoZXJyKTtcbiAgICAgICAgLy8gYnViYmxlIHVwIGNhbmNlbGF0aW9uIGVycm9yc1xuICAgICAgICBpZiAocmVuZGVyRXJyLmNhbmNlbGxlZCkge1xuICAgICAgICAgICAgdGhyb3cgcmVuZGVyRXJyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgICAgICAgICAvLyBFbnN1cmUgdGhpcyBlcnJvciBpcyBkaXNwbGF5ZWQgaW4gdGhlIG92ZXJsYXkgaW4gZGV2ZWxvcG1lbnRcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgICAgICB0aHJvdyByZW5kZXJFcnI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCByZW5kZXJFcnJvcih7XG4gICAgICAgICAgICAuLi5yZW5kZXJpbmdQcm9wcyxcbiAgICAgICAgICAgIGVycjogcmVuZGVyRXJyXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmFzeW5jIGZ1bmN0aW9uIGh5ZHJhdGUob3B0cykge1xuICAgIGxldCBpbml0aWFsRXJyID0gaW5pdGlhbERhdGEuZXJyO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGFwcEVudHJ5cG9pbnQgPSBhd2FpdCBwYWdlTG9hZGVyLnJvdXRlTG9hZGVyLndoZW5FbnRyeXBvaW50KFwiL19hcHBcIik7XG4gICAgICAgIGlmIChcImVycm9yXCIgaW4gYXBwRW50cnlwb2ludCkge1xuICAgICAgICAgICAgdGhyb3cgYXBwRW50cnlwb2ludC5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGNvbXBvbmVudDogYXBwICwgZXhwb3J0czogbW9kICB9ID0gYXBwRW50cnlwb2ludDtcbiAgICAgICAgQ2FjaGVkQXBwID0gYXBwO1xuICAgICAgICBpZiAobW9kICYmIG1vZC5yZXBvcnRXZWJWaXRhbHMpIHtcbiAgICAgICAgICAgIG9uUGVyZkVudHJ5ID0gKHBhcmFtKT0+e1xuICAgICAgICAgICAgICAgIGxldCB7IGlkICwgbmFtZSAsIHN0YXJ0VGltZSAsIHZhbHVlICwgZHVyYXRpb24gLCBlbnRyeVR5cGUgLCBlbnRyaWVzICwgYXR0cmlidXRpb24gIH0gPSBwYXJhbTtcbiAgICAgICAgICAgICAgICAvLyBDb21iaW5lcyB0aW1lc3RhbXAgd2l0aCByYW5kb20gbnVtYmVyIGZvciB1bmlxdWUgSURcbiAgICAgICAgICAgICAgICBjb25zdCB1bmlxdWVJRCA9IERhdGUubm93KCkgKyBcIi1cIiArIChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoOWUxMiAtIDEpKSArIDFlMTIpO1xuICAgICAgICAgICAgICAgIGxldCBwZXJmU3RhcnRFbnRyeTtcbiAgICAgICAgICAgICAgICBpZiAoZW50cmllcyAmJiBlbnRyaWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBwZXJmU3RhcnRFbnRyeSA9IGVudHJpZXNbMF0uc3RhcnRUaW1lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB3ZWJWaXRhbHMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBpZCB8fCB1bmlxdWVJRCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRUaW1lOiBzdGFydFRpbWUgfHwgcGVyZlN0YXJ0RW50cnksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSA9PSBudWxsID8gZHVyYXRpb24gOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGVudHJ5VHlwZSA9PT0gXCJtYXJrXCIgfHwgZW50cnlUeXBlID09PSBcIm1lYXN1cmVcIiA/IFwiY3VzdG9tXCIgOiBcIndlYi12aXRhbFwiXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgd2ViVml0YWxzLmF0dHJpYnV0aW9uID0gYXR0cmlidXRpb247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1vZC5yZXBvcnRXZWJWaXRhbHMod2ViVml0YWxzKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFnZUVudHJ5cG9pbnQgPSAvLyBUaGUgZGV2IHNlcnZlciBmYWlscyB0byBzZXJ2ZSBzY3JpcHQgYXNzZXRzIHdoZW4gdGhlcmUncyBhIGh5ZHJhdGlvblxuICAgICAgICAvLyBlcnJvciwgc28gd2UgbmVlZCB0byBza2lwIHdhaXRpbmcgZm9yIHRoZSBlbnRyeXBvaW50LlxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiICYmIGluaXRpYWxEYXRhLmVyciA/IHtcbiAgICAgICAgICAgIGVycm9yOiBpbml0aWFsRGF0YS5lcnJcbiAgICAgICAgfSA6IGF3YWl0IHBhZ2VMb2FkZXIucm91dGVMb2FkZXIud2hlbkVudHJ5cG9pbnQoaW5pdGlhbERhdGEucGFnZSk7XG4gICAgICAgIGlmIChcImVycm9yXCIgaW4gcGFnZUVudHJ5cG9pbnQpIHtcbiAgICAgICAgICAgIHRocm93IHBhZ2VFbnRyeXBvaW50LmVycm9yO1xuICAgICAgICB9XG4gICAgICAgIENhY2hlZENvbXBvbmVudCA9IHBhZ2VFbnRyeXBvaW50LmNvbXBvbmVudDtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgY29uc3QgeyBpc1ZhbGlkRWxlbWVudFR5cGUgIH0gPSByZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0LWlzXCIpO1xuICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRWxlbWVudFR5cGUoQ2FjaGVkQ29tcG9uZW50KSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRlZmF1bHQgZXhwb3J0IGlzIG5vdCBhIFJlYWN0IENvbXBvbmVudCBpbiBwYWdlOiBcIicgKyBpbml0aWFsRGF0YS5wYWdlICsgJ1wiJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBUaGlzIGNhdGNoZXMgZXJyb3JzIGxpa2UgdGhyb3dpbmcgaW4gdGhlIHRvcCBsZXZlbCBvZiBhIG1vZHVsZVxuICAgICAgICBpbml0aWFsRXJyID0gKDAsIF9pc2Vycm9yLmdldFByb3BlckVycm9yKShlcnJvcik7XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgICAgIGNvbnN0IHsgZ2V0U2VydmVyRXJyb3IgIH0gPSByZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL0BuZXh0L3JlYWN0LWRldi1vdmVybGF5L2Rpc3QvY2xpZW50XCIpO1xuICAgICAgICAvLyBTZXJ2ZXItc2lkZSBydW50aW1lIGVycm9ycyBuZWVkIHRvIGJlIHJlLXRocm93biBvbiB0aGUgY2xpZW50LXNpZGUgc29cbiAgICAgICAgLy8gdGhhdCB0aGUgb3ZlcmxheSBpcyByZW5kZXJlZC5cbiAgICAgICAgaWYgKGluaXRpYWxFcnIpIHtcbiAgICAgICAgICAgIGlmIChpbml0aWFsRXJyID09PSBpbml0aWFsRGF0YS5lcnIpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdlbmVyYXRlIGEgbmV3IGVycm9yIG9iamVjdC4gV2UgYHRocm93YCBpdCBiZWNhdXNlIHNvbWUgYnJvd3NlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgc2V0IHRoZSBgc3RhY2tgIHdoZW4gdGhyb3duLCBhbmQgd2Ugd2FudCB0byBlbnN1cmUgb3VycyBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90IG92ZXJyaWRkZW4gd2hlbiB3ZSByZS10aHJvdyBpdCBiZWxvdy5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihpbml0aWFsRXJyLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZXJyb3IubmFtZSA9IGluaXRpYWxFcnIubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3Iuc3RhY2sgPSBpbml0aWFsRXJyLnN0YWNrO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBnZXRTZXJ2ZXJFcnJvcihlcnJvciwgaW5pdGlhbEVyci5zb3VyY2UpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGluaXRpYWxFcnI7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHdpbmRvdy5fX05FWFRfUFJFTE9BRFJFQURZKSB7XG4gICAgICAgIGF3YWl0IHdpbmRvdy5fX05FWFRfUFJFTE9BRFJFQURZKGluaXRpYWxEYXRhLmR5bmFtaWNJZHMpO1xuICAgIH1cbiAgICByb3V0ZXIgPSAoMCwgX3JvdXRlci5jcmVhdGVSb3V0ZXIpKGluaXRpYWxEYXRhLnBhZ2UsIGluaXRpYWxEYXRhLnF1ZXJ5LCBhc1BhdGgsIHtcbiAgICAgICAgaW5pdGlhbFByb3BzOiBpbml0aWFsRGF0YS5wcm9wcyxcbiAgICAgICAgcGFnZUxvYWRlcixcbiAgICAgICAgQXBwOiBDYWNoZWRBcHAsXG4gICAgICAgIENvbXBvbmVudDogQ2FjaGVkQ29tcG9uZW50LFxuICAgICAgICB3cmFwQXBwLFxuICAgICAgICBlcnI6IGluaXRpYWxFcnIsXG4gICAgICAgIGlzRmFsbGJhY2s6IEJvb2xlYW4oaW5pdGlhbERhdGEuaXNGYWxsYmFjayksXG4gICAgICAgIHN1YnNjcmlwdGlvbjogKGluZm8sIEFwcCwgc2Nyb2xsKT0+cmVuZGVyKE9iamVjdC5hc3NpZ24oe30sIGluZm8sIHtcbiAgICAgICAgICAgICAgICBBcHAsXG4gICAgICAgICAgICAgICAgc2Nyb2xsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIGxvY2FsZTogaW5pdGlhbERhdGEubG9jYWxlLFxuICAgICAgICBsb2NhbGVzOiBpbml0aWFsRGF0YS5sb2NhbGVzLFxuICAgICAgICBkZWZhdWx0TG9jYWxlLFxuICAgICAgICBkb21haW5Mb2NhbGVzOiBpbml0aWFsRGF0YS5kb21haW5Mb2NhbGVzLFxuICAgICAgICBpc1ByZXZpZXc6IGluaXRpYWxEYXRhLmlzUHJldmlld1xuICAgIH0pO1xuICAgIGluaXRpYWxNYXRjaGVzTWlkZGxld2FyZSA9IGF3YWl0IHJvdXRlci5faW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlUHJvbWlzZTtcbiAgICBjb25zdCByZW5kZXJDdHggPSB7XG4gICAgICAgIEFwcDogQ2FjaGVkQXBwLFxuICAgICAgICBpbml0aWFsOiB0cnVlLFxuICAgICAgICBDb21wb25lbnQ6IENhY2hlZENvbXBvbmVudCxcbiAgICAgICAgcHJvcHM6IGluaXRpYWxEYXRhLnByb3BzLFxuICAgICAgICBlcnI6IGluaXRpYWxFcnJcbiAgICB9O1xuICAgIGlmIChvcHRzID09IG51bGwgPyB2b2lkIDAgOiBvcHRzLmJlZm9yZVJlbmRlcikge1xuICAgICAgICBhd2FpdCBvcHRzLmJlZm9yZVJlbmRlcigpO1xuICAgIH1cbiAgICByZW5kZXIocmVuZGVyQ3R4KTtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwibW9kdWxlIiwidmVyc2lvbiIsInJvdXRlciIsImVtaXR0ZXIiLCJpbml0aWFsaXplIiwiaHlkcmF0ZSIsIl9leHBvcnQiLCJ0YXJnZXQiLCJhbGwiLCJuYW1lIiwiZW51bWVyYWJsZSIsImdldCIsIl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCIsInJlcXVpcmUiLCJfcmVhY3QiLCJfIiwiX2NsaWVudCIsIl9oZWFkbWFuYWdlcmNvbnRleHQiLCJfbWl0dCIsIl9yb3V0ZXJjb250ZXh0IiwiX2hhbmRsZXNtb290aHNjcm9sbCIsIl9pc2R5bmFtaWMiLCJfcXVlcnlzdHJpbmciLCJfcnVudGltZWNvbmZpZyIsIl91dGlscyIsIl9wb3J0YWwiLCJfaGVhZG1hbmFnZXIiLCJfcGFnZWxvYWRlciIsIl9wZXJmb3JtYW5jZXJlbGF5ZXIiLCJfcm91dGVhbm5vdW5jZXIiLCJfcm91dGVyIiwiX2lzZXJyb3IiLCJfaW1hZ2Vjb25maWdjb250ZXh0IiwiX3JlbW92ZWJhc2VwYXRoIiwiX2hhc2Jhc2VwYXRoIiwiX2FwcHJvdXRlcmNvbnRleHQiLCJfYWRhcHRlcnMiLCJfaG9va3NjbGllbnRjb250ZXh0IiwiX29ucmVjb3ZlcmFibGVlcnJvciIsImRlZmF1bHQiLCJsb29zZVRvQXJyYXkiLCJpbnB1dCIsInNsaWNlIiwiY2FsbCIsImluaXRpYWxEYXRhIiwiZGVmYXVsdExvY2FsZSIsInVuZGVmaW5lZCIsImFzUGF0aCIsInBhZ2VMb2FkZXIiLCJhcHBFbGVtZW50IiwiaGVhZE1hbmFnZXIiLCJpbml0aWFsTWF0Y2hlc01pZGRsZXdhcmUiLCJsYXN0QXBwUHJvcHMiLCJsYXN0UmVuZGVyUmVqZWN0Iiwid2VicGFja0hNUiIsIkNhY2hlZEFwcCIsIm9uUGVyZkVudHJ5IiwiQ2FjaGVkQ29tcG9uZW50Iiwic2VsZiIsIl9fbmV4dF9yZXF1aXJlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwiQ29udGFpbmVyIiwiQ29tcG9uZW50IiwiY29tcG9uZW50RGlkQ2F0Y2giLCJjb21wb25lbnRFcnIiLCJpbmZvIiwicHJvcHMiLCJmbiIsImNvbXBvbmVudERpZE1vdW50Iiwic2Nyb2xsVG9IYXNoIiwiaXNTc3IiLCJpc0ZhbGxiYWNrIiwibmV4dEV4cG9ydCIsImlzRHluYW1pY1JvdXRlIiwicGF0aG5hbWUiLCJsb2NhdGlvbiIsInNlYXJjaCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfSEFTX1JFV1JJVEVTIiwiX19OX1NTRyIsInJlcGxhY2UiLCJTdHJpbmciLCJhc3NpZ24iLCJ1cmxRdWVyeVRvU2VhcmNoUGFyYW1zIiwicXVlcnkiLCJVUkxTZWFyY2hQYXJhbXMiLCJfaCIsInNoYWxsb3ciLCJjYXRjaCIsImVyciIsImNhbmNlbGxlZCIsImNvbXBvbmVudERpZFVwZGF0ZSIsImhhc2giLCJzdWJzdHJpbmciLCJlbCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJzZXRUaW1lb3V0Iiwic2Nyb2xsSW50b1ZpZXciLCJyZW5kZXIiLCJjaGlsZHJlbiIsIlJlYWN0RGV2T3ZlcmxheSIsImNyZWF0ZUVsZW1lbnQiLCJvcHRzIiwiSlNPTiIsInBhcnNlIiwidGV4dENvbnRlbnQiLCJ3aW5kb3ciLCJfX05FWFRfREFUQV9fIiwicHJlZml4IiwiYXNzZXRQcmVmaXgiLCJfX3dlYnBhY2tfcHVibGljX3BhdGhfXyIsInNldENvbmZpZyIsInNlcnZlclJ1bnRpbWVDb25maWciLCJwdWJsaWNSdW50aW1lQ29uZmlnIiwicnVudGltZUNvbmZpZyIsImdldFVSTCIsImhhc0Jhc2VQYXRoIiwicmVtb3ZlQmFzZVBhdGgiLCJfX05FWFRfSTE4Tl9TVVBQT1JUIiwibm9ybWFsaXplTG9jYWxlUGF0aCIsImRldGVjdERvbWFpbkxvY2FsZSIsInBhcnNlUmVsYXRpdmVVcmwiLCJmb3JtYXRVcmwiLCJsb2NhbGVzIiwicGFyc2VkQXMiLCJsb2NhbGVQYXRoUmVzdWx0IiwiZGV0ZWN0ZWRMb2NhbGUiLCJsb2NhbGUiLCJkZXRlY3RlZERvbWFpbiIsIl9fTkVYVF9JMThOX0RPTUFJTlMiLCJob3N0bmFtZSIsInNjcmlwdExvYWRlciIsImluaXRTY3JpcHRMb2FkZXIiLCJidWlsZElkIiwicmVnaXN0ZXIiLCJwYXJhbSIsInIiLCJmIiwicm91dGVMb2FkZXIiLCJvbkVudHJ5cG9pbnQiLCJfX05FWFRfUCIsIm1hcCIsInAiLCJwdXNoIiwiZ2V0SXNTc3IiLCJyZW5kZXJBcHAiLCJBcHAiLCJhcHBQcm9wcyIsIkFwcENvbnRhaW5lciIsIl9zZWxmX19fTkVYVF9EQVRBX19fYXV0b0V4cG9ydCIsImVycm9yIiwicmVuZGVyRXJyb3IiLCJjb25zb2xlIiwiQXBwUm91dGVyQ29udGV4dCIsIlByb3ZpZGVyIiwiYWRhcHRGb3JBcHBSb3V0ZXJJbnN0YW5jZSIsIlNlYXJjaFBhcmFtc0NvbnRleHQiLCJhZGFwdEZvclNlYXJjaFBhcmFtcyIsIlBhdGhuYW1lQ29udGV4dFByb3ZpZGVyQWRhcHRlciIsImlzQXV0b0V4cG9ydCIsImF1dG9FeHBvcnQiLCJSb3V0ZXJDb250ZXh0IiwibWFrZVB1YmxpY1JvdXRlckluc3RhbmNlIiwiSGVhZE1hbmFnZXJDb250ZXh0IiwiSW1hZ2VDb25maWdDb250ZXh0IiwiX19ORVhUX0lNQUdFX09QVFMiLCJ3cmFwQXBwIiwid3JhcHBlZEFwcFByb3BzIiwicmVuZGVyRXJyb3JQcm9wcyIsIm9uVW5yZWNvdmVyYWJsZUVycm9yIiwiZG9SZW5kZXIiLCJzdHlsZVNoZWV0cyIsImxvYWRQYWdlIiwidGhlbiIsInBhZ2UiLCJFcnJvckNvbXBvbmVudCIsImVycm9yTW9kdWxlIiwiYXBwTW9kdWxlIiwibSIsIl9yZW5kZXJFcnJvclByb3BzX3Byb3BzIiwiQXBwVHJlZSIsImFwcEN0eCIsImN0eCIsIlByb21pc2UiLCJyZXNvbHZlIiwibG9hZEdldEluaXRpYWxQcm9wcyIsImluaXRQcm9wcyIsIkhlYWQiLCJjYWxsYmFjayIsInVzZUxheW91dEVmZmVjdCIsInJlYWN0Um9vdCIsInNob3VsZEh5ZHJhdGUiLCJjbGVhck1hcmtzIiwiZm9yRWFjaCIsIm1hcmsiLCJwZXJmb3JtYW5jZSIsIm1hcmtIeWRyYXRlQ29tcGxldGUiLCJTVCIsIm1lYXN1cmUiLCJnZXRFbnRyaWVzQnlOYW1lIiwibWFya1JlbmRlckNvbXBsZXRlIiwibmF2U3RhcnRFbnRyaWVzIiwibGVuZ3RoIiwiY2xlYXJNZWFzdXJlcyIsInJlbmRlclJlYWN0RWxlbWVudCIsImRvbUVsIiwicmVhY3RFbCIsImh5ZHJhdGVSb290Iiwib25SZWNvdmVyYWJsZUVycm9yIiwic3RhcnRUcmFuc2l0aW9uIiwiUm9vdCIsImNhbGxiYWNrcyIsInVzZUVmZmVjdCIsIl9fTkVYVF9URVNUX01PREUiLCJfX05FWFRfSFlEUkFURUQiLCJfX05FWFRfSFlEUkFURURfQ0IiLCJjYW5jZWxlZCIsInJlc29sdmVQcm9taXNlIiwicmVuZGVyUHJvbWlzZSIsInJlamVjdCIsIkVycm9yIiwib25TdGFydCIsImN1cnJlbnRTdHlsZVRhZ3MiLCJxdWVyeVNlbGVjdG9yQWxsIiwiY3VycmVudEhyZWZzIiwiU2V0IiwidGFnIiwiZ2V0QXR0cmlidXRlIiwibm9zY3JpcHQiLCJxdWVyeVNlbGVjdG9yIiwibm9uY2UiLCJocmVmIiwidGV4dCIsImhhcyIsInN0eWxlVGFnIiwic2V0QXR0cmlidXRlIiwiaGVhZCIsImFwcGVuZENoaWxkIiwiY3JlYXRlVGV4dE5vZGUiLCJvbkhlYWRDb21taXQiLCJkZXNpcmVkSHJlZnMiLCJzIiwiaWR4IiwicmVtb3ZlQXR0cmlidXRlIiwicmVmZXJlbmNlTm9kZSIsInRhcmdldFRhZyIsInBhcmVudE5vZGUiLCJpbnNlcnRCZWZvcmUiLCJuZXh0U2libGluZyIsInJlbW92ZUNoaWxkIiwic2Nyb2xsIiwieCIsInkiLCJoYW5kbGVTbW9vdGhTY3JvbGwiLCJzY3JvbGxUbyIsIm9uUm9vdENvbW1pdCIsImVsZW0iLCJGcmFnbWVudCIsIlBvcnRhbCIsInR5cGUiLCJSb3V0ZUFubm91bmNlciIsIl9fTkVYVF9TVFJJQ1RfTU9ERSIsIlN0cmljdE1vZGUiLCJyZW5kZXJpbmdQcm9wcyIsInJlbmRlckVyciIsImdldFByb3BlckVycm9yIiwiaW5pdGlhbEVyciIsImFwcEVudHJ5cG9pbnQiLCJ3aGVuRW50cnlwb2ludCIsImNvbXBvbmVudCIsImFwcCIsIm1vZCIsInJlcG9ydFdlYlZpdGFscyIsImlkIiwic3RhcnRUaW1lIiwiZHVyYXRpb24iLCJlbnRyeVR5cGUiLCJlbnRyaWVzIiwiYXR0cmlidXRpb24iLCJ1bmlxdWVJRCIsIkRhdGUiLCJub3ciLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJwZXJmU3RhcnRFbnRyeSIsIndlYlZpdGFscyIsImxhYmVsIiwicGFnZUVudHJ5cG9pbnQiLCJpc1ZhbGlkRWxlbWVudFR5cGUiLCJnZXRTZXJ2ZXJFcnJvciIsIm1lc3NhZ2UiLCJlIiwic3RhY2siLCJzb3VyY2UiLCJfX05FWFRfUFJFTE9BRFJFQURZIiwiZHluYW1pY0lkcyIsImNyZWF0ZVJvdXRlciIsImluaXRpYWxQcm9wcyIsIkJvb2xlYW4iLCJzdWJzY3JpcHRpb24iLCJkb21haW5Mb2NhbGVzIiwiaXNQcmV2aWV3IiwiX2luaXRpYWxNYXRjaGVzTWlkZGxld2FyZVByb21pc2UiLCJyZW5kZXJDdHgiLCJpbml0aWFsIiwiYmVmb3JlUmVuZGVyIiwiX19lc01vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/index.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/next-dev.js": +/*!***************************************************!*\ + !*** ./node_modules/next/dist/client/next-dev.js ***! + \***************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("// TODO: Remove use of `any` type.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _ = __webpack_require__(/*! ./ */ \"./node_modules/next/dist/client/index.js\");\nconst _ondemandentriesclient = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./dev/on-demand-entries-client */ \"./node_modules/next/dist/client/dev/on-demand-entries-client.js\"));\nconst _webpackhotmiddlewareclient = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./dev/webpack-hot-middleware-client */ \"./node_modules/next/dist/client/dev/webpack-hot-middleware-client.js\"));\nconst _devbuildwatcher = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./dev/dev-build-watcher */ \"./node_modules/next/dist/client/dev/dev-build-watcher.js\"));\nconst _fouc = __webpack_require__(/*! ./dev/fouc */ \"./node_modules/next/dist/client/dev/fouc.js\");\nconst _websocket = __webpack_require__(/*! ./dev/error-overlay/websocket */ \"./node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nconst _querystring = __webpack_require__(/*! ../shared/lib/router/utils/querystring */ \"./node_modules/next/dist/shared/lib/router/utils/querystring.js\");\nif (!window._nextSetupHydrationWarning) {\n const origConsoleError = window.console.error;\n window.console.error = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n const isHydrateError = args.some((arg)=>typeof arg === \"string\" && arg.match(/(hydration|content does not match|did not match)/i));\n if (isHydrateError) {\n args = [\n ...args,\n \"\\n\\nSee more info here: https://nextjs.org/docs/messages/react-hydration-error\"\n ];\n }\n origConsoleError.apply(window.console, args);\n };\n window._nextSetupHydrationWarning = true;\n}\nwindow.next = {\n version: _.version,\n // router is initialized later so it has to be live-binded\n get router () {\n return _.router;\n },\n emitter: _.emitter\n};\nconst webpackHMR = (0, _webpackhotmiddlewareclient.default)();\n(0, _.initialize)({\n webpackHMR\n}).then((param)=>{\n let { assetPrefix } = param;\n (0, _websocket.connectHMR)({\n assetPrefix,\n path: \"/_next/webpack-hmr\"\n });\n return (0, _.hydrate)({\n beforeRender: _fouc.displayContent\n }).then(()=>{\n (0, _ondemandentriesclient.default)();\n let buildIndicatorHandler = ()=>{};\n function devPagesManifestListener(event) {\n if (event.data.includes(\"devPagesManifest\")) {\n fetch(\"\" + assetPrefix + \"/_next/static/development/_devPagesManifest.json\").then((res)=>res.json()).then((manifest)=>{\n window.__DEV_PAGES_MANIFEST = manifest;\n }).catch((err)=>{\n console.log(\"Failed to fetch devPagesManifest\", err);\n });\n } else if (event.data.includes(\"middlewareChanges\")) {\n return window.location.reload();\n } else if (event.data.includes(\"serverOnlyChanges\")) {\n const { pages } = JSON.parse(event.data);\n // Make sure to reload when the dev-overlay is showing for an\n // API route\n if (pages.includes(_.router.query.__NEXT_PAGE)) {\n return window.location.reload();\n }\n if (!_.router.clc && pages.includes(_.router.pathname)) {\n console.log(\"Refreshing page data due to server-side change\");\n buildIndicatorHandler(\"building\");\n const clearIndicator = ()=>buildIndicatorHandler(\"built\");\n _.router.replace(_.router.pathname + \"?\" + String((0, _querystring.assign)((0, _querystring.urlQueryToSearchParams)(_.router.query), new URLSearchParams(location.search))), _.router.asPath, {\n scroll: false\n }).catch(()=>{\n // trigger hard reload when failing to refresh data\n // to show error overlay properly\n location.reload();\n }).finally(clearIndicator);\n }\n }\n }\n (0, _websocket.addMessageListener)(devPagesManifestListener);\n if (true) {\n (0, _devbuildwatcher.default)((handler)=>{\n buildIndicatorHandler = handler;\n }, \"bottom-right\");\n }\n });\n}).catch((err)=>{\n console.error(\"Error was not caught\", err);\n});\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=next-dev.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9uZXh0LWRldi5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQSxrQ0FBa0M7QUFDckI7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRixNQUFNQywyQkFBMkJDLG1CQUFPQSxDQUFDLDRHQUF5QztBQUNsRixNQUFNQyxJQUFJRCxtQkFBT0EsQ0FBQyxvREFBSTtBQUN0QixNQUFNRSx5QkFBeUIsV0FBVyxHQUFHSCx5QkFBeUJFLENBQUMsQ0FBQ0QsbUJBQU9BLENBQUMsdUdBQWdDO0FBQ2hILE1BQU1HLDhCQUE4QixXQUFXLEdBQUdKLHlCQUF5QkUsQ0FBQyxDQUFDRCxtQkFBT0EsQ0FBQyxpSEFBcUM7QUFDMUgsTUFBTUksbUJBQW1CLFdBQVcsR0FBR0wseUJBQXlCRSxDQUFDLENBQUNELG1CQUFPQSxDQUFDLHlGQUF5QjtBQUNuRyxNQUFNSyxRQUFRTCxtQkFBT0EsQ0FBQywrREFBWTtBQUNsQyxNQUFNTSxhQUFhTixtQkFBT0EsQ0FBQyxxR0FBK0I7QUFDMUQsTUFBTU8sZUFBZVAsbUJBQU9BLENBQUMsK0dBQXdDO0FBQ3JFLElBQUksQ0FBQ1EsT0FBT0MsMEJBQTBCLEVBQUU7SUFDcEMsTUFBTUMsbUJBQW1CRixPQUFPRyxPQUFPLENBQUNDLEtBQUs7SUFDN0NKLE9BQU9HLE9BQU8sQ0FBQ0MsS0FBSyxHQUFHLFdBQVc7UUFDOUIsSUFBSSxJQUFJQyxPQUFPQyxVQUFVQyxNQUFNLEVBQUVDLE9BQU8sSUFBSUMsTUFBTUosT0FBT0ssT0FBTyxHQUFHQSxPQUFPTCxNQUFNSyxPQUFPO1lBQ25GRixJQUFJLENBQUNFLEtBQUssR0FBR0osU0FBUyxDQUFDSSxLQUFLO1FBQ2hDO1FBQ0EsTUFBTUMsaUJBQWlCSCxLQUFLSSxJQUFJLENBQUMsQ0FBQ0MsTUFBTSxPQUFPQSxRQUFRLFlBQVlBLElBQUlDLEtBQUssQ0FBQztRQUM3RSxJQUFJSCxnQkFBZ0I7WUFDaEJILE9BQU87bUJBQ0FBO2dCQUNIO2FBQ0g7UUFDTCxDQUFDO1FBQ0ROLGlCQUFpQmEsS0FBSyxDQUFDZixPQUFPRyxPQUFPLEVBQUVLO0lBQzNDO0lBQ0FSLE9BQU9DLDBCQUEwQixHQUFHLElBQUk7QUFDNUMsQ0FBQztBQUNERCxPQUFPZ0IsSUFBSSxHQUFHO0lBQ1ZDLFNBQVN4QixFQUFFd0IsT0FBTztJQUNsQiwwREFBMEQ7SUFDMUQsSUFBSUMsVUFBVTtRQUNWLE9BQU96QixFQUFFeUIsTUFBTTtJQUNuQjtJQUNBQyxTQUFTMUIsRUFBRTBCLE9BQU87QUFDdEI7QUFDQSxNQUFNQyxhQUFhLENBQUMsR0FBR3pCLDRCQUE0QjBCLE9BQU87QUFDekQsSUFBRzVCLEVBQUU2QixVQUFVLEVBQUU7SUFDZEY7QUFDSixHQUFHRyxJQUFJLENBQUMsQ0FBQ0MsUUFBUTtJQUNiLElBQUksRUFBRUMsWUFBVyxFQUFHLEdBQUdEO0lBQ3RCLElBQUcxQixXQUFXNEIsVUFBVSxFQUFFO1FBQ3ZCRDtRQUNBRSxNQUFNO0lBQ1Y7SUFDQSxPQUFPLENBQUMsR0FBR2xDLEVBQUVtQyxPQUFPLEVBQUU7UUFDbEJDLGNBQWNoQyxNQUFNaUMsY0FBYztJQUN0QyxHQUFHUCxJQUFJLENBQUMsSUFBSTtRQUNQLElBQUc3Qix1QkFBdUIyQixPQUFPO1FBQ2xDLElBQUlVLHdCQUF3QixJQUFJLENBQUM7UUFDakMsU0FBU0MseUJBQXlCQyxLQUFLLEVBQUU7WUFDckMsSUFBSUEsTUFBTUMsSUFBSSxDQUFDQyxRQUFRLENBQUMscUJBQXFCO2dCQUN6Q0MsTUFBTSxLQUFLWCxjQUFjLG9EQUFvREYsSUFBSSxDQUFDLENBQUNjLE1BQU1BLElBQUlDLElBQUksSUFBSWYsSUFBSSxDQUFDLENBQUNnQixXQUFXO29CQUNsSHZDLE9BQU93QyxvQkFBb0IsR0FBR0Q7Z0JBQ2xDLEdBQUdFLEtBQUssQ0FBQyxDQUFDQyxNQUFNO29CQUNadkMsUUFBUXdDLEdBQUcsQ0FBQyxvQ0FBb0NEO2dCQUNwRDtZQUNKLE9BQU8sSUFBSVQsTUFBTUMsSUFBSSxDQUFDQyxRQUFRLENBQUMsc0JBQXNCO2dCQUNqRCxPQUFPbkMsT0FBTzRDLFFBQVEsQ0FBQ0MsTUFBTTtZQUNqQyxPQUFPLElBQUlaLE1BQU1DLElBQUksQ0FBQ0MsUUFBUSxDQUFDLHNCQUFzQjtnQkFDakQsTUFBTSxFQUFFVyxNQUFLLEVBQUcsR0FBR0MsS0FBS0MsS0FBSyxDQUFDZixNQUFNQyxJQUFJO2dCQUN4Qyw2REFBNkQ7Z0JBQzdELFlBQVk7Z0JBQ1osSUFBSVksTUFBTVgsUUFBUSxDQUFDMUMsRUFBRXlCLE1BQU0sQ0FBQytCLEtBQUssQ0FBQ0MsV0FBVyxHQUFHO29CQUM1QyxPQUFPbEQsT0FBTzRDLFFBQVEsQ0FBQ0MsTUFBTTtnQkFDakMsQ0FBQztnQkFDRCxJQUFJLENBQUNwRCxFQUFFeUIsTUFBTSxDQUFDaUMsR0FBRyxJQUFJTCxNQUFNWCxRQUFRLENBQUMxQyxFQUFFeUIsTUFBTSxDQUFDa0MsUUFBUSxHQUFHO29CQUNwRGpELFFBQVF3QyxHQUFHLENBQUM7b0JBQ1paLHNCQUFzQjtvQkFDdEIsTUFBTXNCLGlCQUFpQixJQUFJdEIsc0JBQXNCO29CQUNqRHRDLEVBQUV5QixNQUFNLENBQUNvQyxPQUFPLENBQUM3RCxFQUFFeUIsTUFBTSxDQUFDa0MsUUFBUSxHQUFHLE1BQU1HLE9BQU8sQ0FBQyxHQUFHeEQsYUFBYXlELE1BQU0sRUFBRSxDQUFDLEdBQUd6RCxhQUFhMEQsc0JBQXNCLEVBQUVoRSxFQUFFeUIsTUFBTSxDQUFDK0IsS0FBSyxHQUFHLElBQUlTLGdCQUFnQmQsU0FBU2UsTUFBTSxLQUFLbEUsRUFBRXlCLE1BQU0sQ0FBQzBDLE1BQU0sRUFBRTt3QkFDMUxDLFFBQVEsS0FBSztvQkFDakIsR0FBR3BCLEtBQUssQ0FBQyxJQUFJO3dCQUNULG1EQUFtRDt3QkFDbkQsaUNBQWlDO3dCQUNqQ0csU0FBU0MsTUFBTTtvQkFDbkIsR0FBR2lCLE9BQU8sQ0FBQ1Q7Z0JBQ2YsQ0FBQztZQUNMLENBQUM7UUFDTDtRQUNDLElBQUd2RCxXQUFXaUUsa0JBQWtCLEVBQUUvQjtRQUNuQyxJQUFJZ0MsSUFBa0MsRUFBRTtZQUNuQyxJQUFHcEUsaUJBQWlCeUIsT0FBTyxFQUFFLENBQUM4QyxVQUFVO2dCQUNyQ3BDLHdCQUF3Qm9DO1lBQzVCLEdBQUdILGNBQTJDO1FBQ2xELENBQUM7SUFDTDtBQUNKLEdBQUd2QixLQUFLLENBQUMsQ0FBQ0MsTUFBTTtJQUNadkMsUUFBUUMsS0FBSyxDQUFDLHdCQUF3QnNDO0FBQzFDO0FBRUEsSUFBSSxDQUFDLE9BQU9yRCxRQUFRZ0MsT0FBTyxLQUFLLGNBQWUsT0FBT2hDLFFBQVFnQyxPQUFPLEtBQUssWUFBWWhDLFFBQVFnQyxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9oQyxRQUFRZ0MsT0FBTyxDQUFDZ0QsVUFBVSxLQUFLLGFBQWE7SUFDcktsRixPQUFPQyxjQUFjLENBQUNDLFFBQVFnQyxPQUFPLEVBQUUsY0FBYztRQUFFL0IsT0FBTyxJQUFJO0lBQUM7SUFDbkVILE9BQU9xRSxNQUFNLENBQUNuRSxRQUFRZ0MsT0FBTyxFQUFFaEM7SUFDL0JpRixPQUFPakYsT0FBTyxHQUFHQSxRQUFRZ0MsT0FBTztBQUNsQyxDQUFDLENBRUQsb0NBQW9DIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L25leHQtZGV2LmpzPzM1MTUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVE9ETzogUmVtb3ZlIHVzZSBvZiBgYW55YCB0eXBlLlxuXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5jb25zdCBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQgPSByZXF1aXJlKFwiQHN3Yy9oZWxwZXJzL18vX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0XCIpO1xuY29uc3QgXyA9IHJlcXVpcmUoXCIuL1wiKTtcbmNvbnN0IF9vbmRlbWFuZGVudHJpZXNjbGllbnQgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuL2Rldi9vbi1kZW1hbmQtZW50cmllcy1jbGllbnRcIikpO1xuY29uc3QgX3dlYnBhY2tob3RtaWRkbGV3YXJlY2xpZW50ID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi9kZXYvd2VicGFjay1ob3QtbWlkZGxld2FyZS1jbGllbnRcIikpO1xuY29uc3QgX2RldmJ1aWxkd2F0Y2hlciA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcIi4vZGV2L2Rldi1idWlsZC13YXRjaGVyXCIpKTtcbmNvbnN0IF9mb3VjID0gcmVxdWlyZShcIi4vZGV2L2ZvdWNcIik7XG5jb25zdCBfd2Vic29ja2V0ID0gcmVxdWlyZShcIi4vZGV2L2Vycm9yLW92ZXJsYXkvd2Vic29ja2V0XCIpO1xuY29uc3QgX3F1ZXJ5c3RyaW5nID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3F1ZXJ5c3RyaW5nXCIpO1xuaWYgKCF3aW5kb3cuX25leHRTZXR1cEh5ZHJhdGlvbldhcm5pbmcpIHtcbiAgICBjb25zdCBvcmlnQ29uc29sZUVycm9yID0gd2luZG93LmNvbnNvbGUuZXJyb3I7XG4gICAgd2luZG93LmNvbnNvbGUuZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgZm9yKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5Kyspe1xuICAgICAgICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0h5ZHJhdGVFcnJvciA9IGFyZ3Muc29tZSgoYXJnKT0+dHlwZW9mIGFyZyA9PT0gXCJzdHJpbmdcIiAmJiBhcmcubWF0Y2goLyhoeWRyYXRpb258Y29udGVudCBkb2VzIG5vdCBtYXRjaHxkaWQgbm90IG1hdGNoKS9pKSk7XG4gICAgICAgIGlmIChpc0h5ZHJhdGVFcnJvcikge1xuICAgICAgICAgICAgYXJncyA9IFtcbiAgICAgICAgICAgICAgICAuLi5hcmdzLFxuICAgICAgICAgICAgICAgIFwiXFxuXFxuU2VlIG1vcmUgaW5mbyBoZXJlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9yZWFjdC1oeWRyYXRpb24tZXJyb3JcIlxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICBvcmlnQ29uc29sZUVycm9yLmFwcGx5KHdpbmRvdy5jb25zb2xlLCBhcmdzKTtcbiAgICB9O1xuICAgIHdpbmRvdy5fbmV4dFNldHVwSHlkcmF0aW9uV2FybmluZyA9IHRydWU7XG59XG53aW5kb3cubmV4dCA9IHtcbiAgICB2ZXJzaW9uOiBfLnZlcnNpb24sXG4gICAgLy8gcm91dGVyIGlzIGluaXRpYWxpemVkIGxhdGVyIHNvIGl0IGhhcyB0byBiZSBsaXZlLWJpbmRlZFxuICAgIGdldCByb3V0ZXIgKCkge1xuICAgICAgICByZXR1cm4gXy5yb3V0ZXI7XG4gICAgfSxcbiAgICBlbWl0dGVyOiBfLmVtaXR0ZXJcbn07XG5jb25zdCB3ZWJwYWNrSE1SID0gKDAsIF93ZWJwYWNraG90bWlkZGxld2FyZWNsaWVudC5kZWZhdWx0KSgpO1xuKDAsIF8uaW5pdGlhbGl6ZSkoe1xuICAgIHdlYnBhY2tITVJcbn0pLnRoZW4oKHBhcmFtKT0+e1xuICAgIGxldCB7IGFzc2V0UHJlZml4ICB9ID0gcGFyYW07XG4gICAgKDAsIF93ZWJzb2NrZXQuY29ubmVjdEhNUikoe1xuICAgICAgICBhc3NldFByZWZpeCxcbiAgICAgICAgcGF0aDogXCIvX25leHQvd2VicGFjay1obXJcIlxuICAgIH0pO1xuICAgIHJldHVybiAoMCwgXy5oeWRyYXRlKSh7XG4gICAgICAgIGJlZm9yZVJlbmRlcjogX2ZvdWMuZGlzcGxheUNvbnRlbnRcbiAgICB9KS50aGVuKCgpPT57XG4gICAgICAgICgwLCBfb25kZW1hbmRlbnRyaWVzY2xpZW50LmRlZmF1bHQpKCk7XG4gICAgICAgIGxldCBidWlsZEluZGljYXRvckhhbmRsZXIgPSAoKT0+e307XG4gICAgICAgIGZ1bmN0aW9uIGRldlBhZ2VzTWFuaWZlc3RMaXN0ZW5lcihldmVudCkge1xuICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5jbHVkZXMoXCJkZXZQYWdlc01hbmlmZXN0XCIpKSB7XG4gICAgICAgICAgICAgICAgZmV0Y2goXCJcIiArIGFzc2V0UHJlZml4ICsgXCIvX25leHQvc3RhdGljL2RldmVsb3BtZW50L19kZXZQYWdlc01hbmlmZXN0Lmpzb25cIikudGhlbigocmVzKT0+cmVzLmpzb24oKSkudGhlbigobWFuaWZlc3QpPT57XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fX0RFVl9QQUdFU19NQU5JRkVTVCA9IG1hbmlmZXN0O1xuICAgICAgICAgICAgICAgIH0pLmNhdGNoKChlcnIpPT57XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRmFpbGVkIHRvIGZldGNoIGRldlBhZ2VzTWFuaWZlc3RcIiwgZXJyKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YS5pbmNsdWRlcyhcIm1pZGRsZXdhcmVDaGFuZ2VzXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YS5pbmNsdWRlcyhcInNlcnZlck9ubHlDaGFuZ2VzXCIpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBwYWdlcyAgfSA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRvIHJlbG9hZCB3aGVuIHRoZSBkZXYtb3ZlcmxheSBpcyBzaG93aW5nIGZvciBhblxuICAgICAgICAgICAgICAgIC8vIEFQSSByb3V0ZVxuICAgICAgICAgICAgICAgIGlmIChwYWdlcy5pbmNsdWRlcyhfLnJvdXRlci5xdWVyeS5fX05FWFRfUEFHRSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFfLnJvdXRlci5jbGMgJiYgcGFnZXMuaW5jbHVkZXMoXy5yb3V0ZXIucGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUmVmcmVzaGluZyBwYWdlIGRhdGEgZHVlIHRvIHNlcnZlci1zaWRlIGNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgYnVpbGRJbmRpY2F0b3JIYW5kbGVyKFwiYnVpbGRpbmdcIik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsZWFySW5kaWNhdG9yID0gKCk9PmJ1aWxkSW5kaWNhdG9ySGFuZGxlcihcImJ1aWx0XCIpO1xuICAgICAgICAgICAgICAgICAgICBfLnJvdXRlci5yZXBsYWNlKF8ucm91dGVyLnBhdGhuYW1lICsgXCI/XCIgKyBTdHJpbmcoKDAsIF9xdWVyeXN0cmluZy5hc3NpZ24pKCgwLCBfcXVlcnlzdHJpbmcudXJsUXVlcnlUb1NlYXJjaFBhcmFtcykoXy5yb3V0ZXIucXVlcnkpLCBuZXcgVVJMU2VhcmNoUGFyYW1zKGxvY2F0aW9uLnNlYXJjaCkpKSwgXy5yb3V0ZXIuYXNQYXRoLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGw6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKCgpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyIGhhcmQgcmVsb2FkIHdoZW4gZmFpbGluZyB0byByZWZyZXNoIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHNob3cgZXJyb3Igb3ZlcmxheSBwcm9wZXJseVxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pLmZpbmFsbHkoY2xlYXJJbmRpY2F0b3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAoMCwgX3dlYnNvY2tldC5hZGRNZXNzYWdlTGlzdGVuZXIpKGRldlBhZ2VzTWFuaWZlc3RMaXN0ZW5lcik7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfQlVJTERfSU5ESUNBVE9SKSB7XG4gICAgICAgICAgICAoMCwgX2RldmJ1aWxkd2F0Y2hlci5kZWZhdWx0KSgoaGFuZGxlcik9PntcbiAgICAgICAgICAgICAgICBidWlsZEluZGljYXRvckhhbmRsZXIgPSBoYW5kbGVyO1xuICAgICAgICAgICAgfSwgcHJvY2Vzcy5lbnYuX19ORVhUX0JVSUxEX0lORElDQVRPUl9QT1NJVElPTik7XG4gICAgICAgIH1cbiAgICB9KTtcbn0pLmNhdGNoKChlcnIpPT57XG4gICAgY29uc29sZS5lcnJvcihcIkVycm9yIHdhcyBub3QgY2F1Z2h0XCIsIGVycik7XG59KTtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bmV4dC1kZXYuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0IiwicmVxdWlyZSIsIl8iLCJfb25kZW1hbmRlbnRyaWVzY2xpZW50IiwiX3dlYnBhY2tob3RtaWRkbGV3YXJlY2xpZW50IiwiX2RldmJ1aWxkd2F0Y2hlciIsIl9mb3VjIiwiX3dlYnNvY2tldCIsIl9xdWVyeXN0cmluZyIsIndpbmRvdyIsIl9uZXh0U2V0dXBIeWRyYXRpb25XYXJuaW5nIiwib3JpZ0NvbnNvbGVFcnJvciIsImNvbnNvbGUiLCJlcnJvciIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiaXNIeWRyYXRlRXJyb3IiLCJzb21lIiwiYXJnIiwibWF0Y2giLCJhcHBseSIsIm5leHQiLCJ2ZXJzaW9uIiwicm91dGVyIiwiZW1pdHRlciIsIndlYnBhY2tITVIiLCJkZWZhdWx0IiwiaW5pdGlhbGl6ZSIsInRoZW4iLCJwYXJhbSIsImFzc2V0UHJlZml4IiwiY29ubmVjdEhNUiIsInBhdGgiLCJoeWRyYXRlIiwiYmVmb3JlUmVuZGVyIiwiZGlzcGxheUNvbnRlbnQiLCJidWlsZEluZGljYXRvckhhbmRsZXIiLCJkZXZQYWdlc01hbmlmZXN0TGlzdGVuZXIiLCJldmVudCIsImRhdGEiLCJpbmNsdWRlcyIsImZldGNoIiwicmVzIiwianNvbiIsIm1hbmlmZXN0IiwiX19ERVZfUEFHRVNfTUFOSUZFU1QiLCJjYXRjaCIsImVyciIsImxvZyIsImxvY2F0aW9uIiwicmVsb2FkIiwicGFnZXMiLCJKU09OIiwicGFyc2UiLCJxdWVyeSIsIl9fTkVYVF9QQUdFIiwiY2xjIiwicGF0aG5hbWUiLCJjbGVhckluZGljYXRvciIsInJlcGxhY2UiLCJTdHJpbmciLCJhc3NpZ24iLCJ1cmxRdWVyeVRvU2VhcmNoUGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwic2VhcmNoIiwiYXNQYXRoIiwic2Nyb2xsIiwiZmluYWxseSIsImFkZE1lc3NhZ2VMaXN0ZW5lciIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfQlVJTERfSU5ESUNBVE9SIiwiaGFuZGxlciIsIl9fTkVYVF9CVUlMRF9JTkRJQ0FUT1JfUE9TSVRJT04iLCJfX2VzTW9kdWxlIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/next-dev.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/normalize-trailing-slash.js": +/*!*******************************************************************!*\ + !*** ./node_modules/next/dist/client/normalize-trailing-slash.js ***! + \*******************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"normalizePathTrailingSlash\", ({\n enumerable: true,\n get: function() {\n return normalizePathTrailingSlash;\n }\n}));\nconst _removetrailingslash = __webpack_require__(/*! ../shared/lib/router/utils/remove-trailing-slash */ \"./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js\");\nconst _parsepath = __webpack_require__(/*! ../shared/lib/router/utils/parse-path */ \"./node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nconst normalizePathTrailingSlash = (path)=>{\n if (!path.startsWith(\"/\") || undefined) {\n return path;\n }\n const { pathname , query , hash } = (0, _parsepath.parsePath)(path);\n if (false) {}\n return \"\" + (0, _removetrailingslash.removeTrailingSlash)(pathname) + query + hash;\n};\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=normalize-trailing-slash.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9ub3JtYWxpemUtdHJhaWxpbmctc2xhc2guanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRkgsOERBQTZEO0lBQ3pESSxZQUFZLElBQUk7SUFDaEJDLEtBQUssV0FBVztRQUNaLE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQyx1QkFBdUJDLG1CQUFPQSxDQUFDLG1JQUFrRDtBQUN2RixNQUFNQyxhQUFhRCxtQkFBT0EsQ0FBQyw2R0FBdUM7QUFDbEUsTUFBTUYsNkJBQTZCLENBQUNJLE9BQU87SUFDdkMsSUFBSSxDQUFDQSxLQUFLQyxVQUFVLENBQUMsUUFBUUMsU0FBd0MsRUFBRTtRQUNuRSxPQUFPRjtJQUNYLENBQUM7SUFDRCxNQUFNLEVBQUVLLFNBQVEsRUFBR0MsTUFBSyxFQUFHQyxLQUFJLEVBQUcsR0FBRyxDQUFDLEdBQUdSLFdBQVdTLFNBQVMsRUFBRVI7SUFDL0QsSUFBSUUsS0FBaUMsRUFBRSxFQVF0QztJQUNELE9BQU8sS0FBSyxDQUFDLEdBQUdMLHFCQUFxQmMsbUJBQW1CLEVBQUVOLFlBQVlDLFFBQVFDO0FBQ2xGO0FBRUEsSUFBSSxDQUFDLE9BQU9mLFFBQVFxQixPQUFPLEtBQUssY0FBZSxPQUFPckIsUUFBUXFCLE9BQU8sS0FBSyxZQUFZckIsUUFBUXFCLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT3JCLFFBQVFxQixPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLeEIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRcUIsT0FBTyxFQUFFLGNBQWM7UUFBRXBCLE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPeUIsTUFBTSxDQUFDdkIsUUFBUXFCLE9BQU8sRUFBRXJCO0lBQy9Cd0IsT0FBT3hCLE9BQU8sR0FBR0EsUUFBUXFCLE9BQU87QUFDbEMsQ0FBQyxDQUVELG9EQUFvRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9ub3JtYWxpemUtdHJhaWxpbmctc2xhc2guanM/NGMyZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIm5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaDtcbiAgICB9XG59KTtcbmNvbnN0IF9yZW1vdmV0cmFpbGluZ3NsYXNoID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JlbW92ZS10cmFpbGluZy1zbGFzaFwiKTtcbmNvbnN0IF9wYXJzZXBhdGggPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcGFyc2UtcGF0aFwiKTtcbmNvbnN0IG5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoID0gKHBhdGgpPT57XG4gICAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpIHx8IHByb2Nlc3MuZW52Ll9fTkVYVF9NQU5VQUxfVFJBSUxJTkdfU0xBU0gpIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIGNvbnN0IHsgcGF0aG5hbWUgLCBxdWVyeSAsIGhhc2ggIH0gPSAoMCwgX3BhcnNlcGF0aC5wYXJzZVBhdGgpKHBhdGgpO1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfVFJBSUxJTkdfU0xBU0gpIHtcbiAgICAgICAgaWYgKC9cXC5bXi9dK1xcLz8kLy50ZXN0KHBhdGhuYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCIgKyAoMCwgX3JlbW92ZXRyYWlsaW5nc2xhc2gucmVtb3ZlVHJhaWxpbmdTbGFzaCkocGF0aG5hbWUpICsgcXVlcnkgKyBoYXNoO1xuICAgICAgICB9IGVsc2UgaWYgKHBhdGhuYW1lLmVuZHNXaXRoKFwiL1wiKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCIgKyBwYXRobmFtZSArIHF1ZXJ5ICsgaGFzaDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBwYXRobmFtZSArIFwiL1wiICsgcXVlcnkgKyBoYXNoO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBcIlwiICsgKDAsIF9yZW1vdmV0cmFpbGluZ3NsYXNoLnJlbW92ZVRyYWlsaW5nU2xhc2gpKHBhdGhuYW1lKSArIHF1ZXJ5ICsgaGFzaDtcbn07XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW5vcm1hbGl6ZS10cmFpbGluZy1zbGFzaC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwibm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2giLCJfcmVtb3ZldHJhaWxpbmdzbGFzaCIsInJlcXVpcmUiLCJfcGFyc2VwYXRoIiwicGF0aCIsInN0YXJ0c1dpdGgiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX01BTlVBTF9UUkFJTElOR19TTEFTSCIsInBhdGhuYW1lIiwicXVlcnkiLCJoYXNoIiwicGFyc2VQYXRoIiwiX19ORVhUX1RSQUlMSU5HX1NMQVNIIiwidGVzdCIsInJlbW92ZVRyYWlsaW5nU2xhc2giLCJlbmRzV2l0aCIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/normalize-trailing-slash.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/on-recoverable-error.js": +/*!***************************************************************!*\ + !*** ./node_modules/next/dist/client/on-recoverable-error.js ***! + \***************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return onRecoverableError;\n }\n}));\nconst _nossrerror = __webpack_require__(/*! ../shared/lib/lazy-dynamic/no-ssr-error */ \"./node_modules/next/dist/shared/lib/lazy-dynamic/no-ssr-error.js\");\nfunction onRecoverableError(err) {\n // Using default react onRecoverableError\n // x-ref: https://github.com/facebook/react/blob/d4bc16a7d69eb2ea38a88c8ac0b461d5f72cdcab/packages/react-dom/src/client/ReactDOMRoot.js#L83\n const defaultOnRecoverableError = typeof reportError === \"function\" ? reportError : (error)=>{\n window.console.error(error);\n };\n // Skip certain custom errors which are not expected to be reported on client\n if (err.digest === _nossrerror.NEXT_DYNAMIC_NO_SSR_CODE) return;\n defaultOnRecoverableError(err);\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=on-recoverable-error.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9vbi1yZWNvdmVyYWJsZS1lcnJvci5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU8sSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGSCwyQ0FBMEM7SUFDdENJLFlBQVksSUFBSTtJQUNoQkMsS0FBSyxXQUFXO1FBQ1osT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLE1BQU1DLGNBQWNDLG1CQUFPQSxDQUFDLGlIQUF5QztBQUNyRSxTQUFTRixtQkFBbUJHLEdBQUcsRUFBRTtJQUM3Qix5Q0FBeUM7SUFDekMsMklBQTJJO0lBQzNJLE1BQU1DLDRCQUE0QixPQUFPQyxnQkFBZ0IsYUFDekRBLGNBQWMsQ0FBQ0MsUUFBUTtRQUNuQkMsT0FBT0MsT0FBTyxDQUFDRixLQUFLLENBQUNBO0lBQ3pCLENBQUM7SUFDRCw2RUFBNkU7SUFDN0UsSUFBSUgsSUFBSU0sTUFBTSxLQUFLUixZQUFZUyx3QkFBd0IsRUFBRTtJQUN6RE4sMEJBQTBCRDtBQUM5QjtBQUVBLElBQUksQ0FBQyxPQUFPUCxRQUFRZSxPQUFPLEtBQUssY0FBZSxPQUFPZixRQUFRZSxPQUFPLEtBQUssWUFBWWYsUUFBUWUsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPZixRQUFRZSxPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLbEIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRZSxPQUFPLEVBQUUsY0FBYztRQUFFZCxPQUFPLElBQUk7SUFBQztJQUNuRUgsT0FBT21CLE1BQU0sQ0FBQ2pCLFFBQVFlLE9BQU8sRUFBRWY7SUFDL0JrQixPQUFPbEIsT0FBTyxHQUFHQSxRQUFRZSxPQUFPO0FBQ2xDLENBQUMsQ0FFRCxnREFBZ0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvb24tcmVjb3ZlcmFibGUtZXJyb3IuanM/ZWI5MiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG9uUmVjb3ZlcmFibGVFcnJvcjtcbiAgICB9XG59KTtcbmNvbnN0IF9ub3NzcmVycm9yID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvbGF6eS1keW5hbWljL25vLXNzci1lcnJvclwiKTtcbmZ1bmN0aW9uIG9uUmVjb3ZlcmFibGVFcnJvcihlcnIpIHtcbiAgICAvLyBVc2luZyBkZWZhdWx0IHJlYWN0IG9uUmVjb3ZlcmFibGVFcnJvclxuICAgIC8vIHgtcmVmOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvYmxvYi9kNGJjMTZhN2Q2OWViMmVhMzhhODhjOGFjMGI0NjFkNWY3MmNkY2FiL3BhY2thZ2VzL3JlYWN0LWRvbS9zcmMvY2xpZW50L1JlYWN0RE9NUm9vdC5qcyNMODNcbiAgICBjb25zdCBkZWZhdWx0T25SZWNvdmVyYWJsZUVycm9yID0gdHlwZW9mIHJlcG9ydEVycm9yID09PSBcImZ1bmN0aW9uXCIgPyAvLyBlbXVsYXRpbmcgYW4gdW5jYXVnaHQgSmF2YVNjcmlwdCBlcnJvci5cbiAgICByZXBvcnRFcnJvciA6IChlcnJvcik9PntcbiAgICAgICAgd2luZG93LmNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH07XG4gICAgLy8gU2tpcCBjZXJ0YWluIGN1c3RvbSBlcnJvcnMgd2hpY2ggYXJlIG5vdCBleHBlY3RlZCB0byBiZSByZXBvcnRlZCBvbiBjbGllbnRcbiAgICBpZiAoZXJyLmRpZ2VzdCA9PT0gX25vc3NyZXJyb3IuTkVYVF9EWU5BTUlDX05PX1NTUl9DT0RFKSByZXR1cm47XG4gICAgZGVmYXVsdE9uUmVjb3ZlcmFibGVFcnJvcihlcnIpO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1vbi1yZWNvdmVyYWJsZS1lcnJvci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwib25SZWNvdmVyYWJsZUVycm9yIiwiX25vc3NyZXJyb3IiLCJyZXF1aXJlIiwiZXJyIiwiZGVmYXVsdE9uUmVjb3ZlcmFibGVFcnJvciIsInJlcG9ydEVycm9yIiwiZXJyb3IiLCJ3aW5kb3ciLCJjb25zb2xlIiwiZGlnZXN0IiwiTkVYVF9EWU5BTUlDX05PX1NTUl9DT0RFIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/on-recoverable-error.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/page-loader.js": +/*!******************************************************!*\ + !*** ./node_modules/next/dist/client/page-loader.js ***! + \******************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return PageLoader;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _addbasepath = __webpack_require__(/*! ./add-base-path */ \"./node_modules/next/dist/client/add-base-path.js\");\nconst _interpolateas = __webpack_require__(/*! ../shared/lib/router/utils/interpolate-as */ \"./node_modules/next/dist/shared/lib/router/utils/interpolate-as.js\");\nconst _getassetpathfromroute = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../shared/lib/router/utils/get-asset-path-from-route */ \"./node_modules/next/dist/shared/lib/router/utils/get-asset-path-from-route.js\"));\nconst _addlocale = __webpack_require__(/*! ./add-locale */ \"./node_modules/next/dist/client/add-locale.js\");\nconst _isdynamic = __webpack_require__(/*! ../shared/lib/router/utils/is-dynamic */ \"./node_modules/next/dist/shared/lib/router/utils/is-dynamic.js\");\nconst _parserelativeurl = __webpack_require__(/*! ../shared/lib/router/utils/parse-relative-url */ \"./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js\");\nconst _removetrailingslash = __webpack_require__(/*! ../shared/lib/router/utils/remove-trailing-slash */ \"./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js\");\nconst _routeloader = __webpack_require__(/*! ./route-loader */ \"./node_modules/next/dist/client/route-loader.js\");\nclass PageLoader {\n getPageList() {\n if (false) {} else {\n if (window.__DEV_PAGES_MANIFEST) {\n return window.__DEV_PAGES_MANIFEST.pages;\n } else {\n this.promisedDevPagesManifest || (this.promisedDevPagesManifest = fetch(\"\" + this.assetPrefix + \"/_next/static/development/_devPagesManifest.json\").then((res)=>res.json()).then((manifest)=>{\n window.__DEV_PAGES_MANIFEST = manifest;\n return manifest.pages;\n }).catch((err)=>{\n console.log(\"Failed to fetch devPagesManifest:\", err);\n throw new Error(\"Failed to fetch _devPagesManifest.json. Is something blocking that network request?\\n\" + \"Read more: https://nextjs.org/docs/messages/failed-to-fetch-devpagesmanifest\");\n }));\n return this.promisedDevPagesManifest;\n }\n }\n }\n getMiddleware() {\n if (false) {} else {\n if (window.__DEV_MIDDLEWARE_MATCHERS) {\n return window.__DEV_MIDDLEWARE_MATCHERS;\n } else {\n if (!this.promisedMiddlewareMatchers) {\n // TODO: Decide what should happen when fetching fails instead of asserting\n // @ts-ignore\n this.promisedMiddlewareMatchers = fetch(this.assetPrefix + \"/_next/static/\" + this.buildId + \"/_devMiddlewareManifest.json\").then((res)=>res.json()).then((matchers)=>{\n window.__DEV_MIDDLEWARE_MATCHERS = matchers;\n return matchers;\n }).catch((err)=>{\n console.log(\"Failed to fetch _devMiddlewareManifest\", err);\n });\n }\n // TODO Remove this assertion as this could be undefined\n return this.promisedMiddlewareMatchers;\n }\n }\n }\n getDataHref(params) {\n const { asPath , href , locale } = params;\n const { pathname: hrefPathname , query , search } = (0, _parserelativeurl.parseRelativeUrl)(href);\n const { pathname: asPathname } = (0, _parserelativeurl.parseRelativeUrl)(asPath);\n const route = (0, _removetrailingslash.removeTrailingSlash)(hrefPathname);\n if (route[0] !== \"/\") {\n throw new Error('Route name should start with a \"/\", got \"' + route + '\"');\n }\n const getHrefForSlug = (path)=>{\n const dataRoute = (0, _getassetpathfromroute.default)((0, _removetrailingslash.removeTrailingSlash)((0, _addlocale.addLocale)(path, locale)), \".json\");\n return (0, _addbasepath.addBasePath)(\"/_next/data/\" + this.buildId + dataRoute + search, true);\n };\n return getHrefForSlug(params.skipInterpolation ? asPathname : (0, _isdynamic.isDynamicRoute)(route) ? (0, _interpolateas.interpolateAs)(hrefPathname, asPathname, query).result : route);\n }\n _isSsg(/** the route (file-system path) */ route) {\n return this.promisedSsgManifest.then((manifest)=>manifest.has(route));\n }\n loadPage(route) {\n return this.routeLoader.loadRoute(route).then((res)=>{\n if (\"component\" in res) {\n return {\n page: res.component,\n mod: res.exports,\n styleSheets: res.styles.map((o)=>({\n href: o.href,\n text: o.content\n }))\n };\n }\n throw res.error;\n });\n }\n prefetch(route) {\n return this.routeLoader.prefetch(route);\n }\n constructor(buildId, assetPrefix){\n this.routeLoader = (0, _routeloader.createRouteLoader)(assetPrefix);\n this.buildId = buildId;\n this.assetPrefix = assetPrefix;\n this.promisedSsgManifest = new Promise((resolve)=>{\n if (window.__SSG_MANIFEST) {\n resolve(window.__SSG_MANIFEST);\n } else {\n window.__SSG_MANIFEST_CB = ()=>{\n resolve(window.__SSG_MANIFEST);\n };\n }\n });\n }\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=page-loader.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9wYWdlLWxvYWRlci5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU8sSUFBSTtBQUNmLENBQUMsRUFBQztBQUNGSCwyQ0FBMEM7SUFDdENJLFlBQVksSUFBSTtJQUNoQkMsS0FBSyxXQUFXO1FBQ1osT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLE1BQU1DLDJCQUEyQkMsbUJBQU9BLENBQUMsNEdBQXlDO0FBQ2xGLE1BQU1DLGVBQWVELG1CQUFPQSxDQUFDLHlFQUFpQjtBQUM5QyxNQUFNRSxpQkFBaUJGLG1CQUFPQSxDQUFDLHFIQUEyQztBQUMxRSxNQUFNRyx5QkFBeUIsV0FBVyxHQUFHSix5QkFBeUJLLENBQUMsQ0FBQ0osbUJBQU9BLENBQUMsMklBQXNEO0FBQ3RJLE1BQU1LLGFBQWFMLG1CQUFPQSxDQUFDLG1FQUFjO0FBQ3pDLE1BQU1NLGFBQWFOLG1CQUFPQSxDQUFDLDZHQUF1QztBQUNsRSxNQUFNTyxvQkFBb0JQLG1CQUFPQSxDQUFDLDZIQUErQztBQUNqRixNQUFNUSx1QkFBdUJSLG1CQUFPQSxDQUFDLG1JQUFrRDtBQUN2RixNQUFNUyxlQUFlVCxtQkFBT0EsQ0FBQyx1RUFBZ0I7QUFDN0MsTUFBTUY7SUFDRlksY0FBYztRQUNWLElBQUlDLEtBQXFDLEVBQUUsRUFFMUMsTUFBTTtZQUNILElBQUlLLE9BQU9DLG9CQUFvQixFQUFFO2dCQUM3QixPQUFPRCxPQUFPQyxvQkFBb0IsQ0FBQ0MsS0FBSztZQUM1QyxPQUFPO2dCQUNILElBQUksQ0FBQ0Msd0JBQXdCLElBQUssS0FBSSxDQUFDQSx3QkFBd0IsR0FBR0MsTUFBTSxLQUFLLElBQUksQ0FBQ0MsV0FBVyxHQUFHLG9EQUFvRFIsSUFBSSxDQUFDLENBQUNTLE1BQU1BLElBQUlDLElBQUksSUFBSVYsSUFBSSxDQUFDLENBQUNDLFdBQVc7b0JBQ3pMRSxPQUFPQyxvQkFBb0IsR0FBR0g7b0JBQzlC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bEMsQ0FBQyxDQUVELHVDQUF1QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9wYWdlLWxvYWRlci5qcz9lODdhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGVmYXVsdFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUGFnZUxvYWRlcjtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfYWRkYmFzZXBhdGggPSByZXF1aXJlKFwiLi9hZGQtYmFzZS1wYXRoXCIpO1xuY29uc3QgX2ludGVycG9sYXRlYXMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaW50ZXJwb2xhdGUtYXNcIik7XG5jb25zdCBfZ2V0YXNzZXRwYXRoZnJvbXJvdXRlID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZ2V0LWFzc2V0LXBhdGgtZnJvbS1yb3V0ZVwiKSk7XG5jb25zdCBfYWRkbG9jYWxlID0gcmVxdWlyZShcIi4vYWRkLWxvY2FsZVwiKTtcbmNvbnN0IF9pc2R5bmFtaWMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaXMtZHluYW1pY1wiKTtcbmNvbnN0IF9wYXJzZXJlbGF0aXZldXJsID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhcnNlLXJlbGF0aXZlLXVybFwiKTtcbmNvbnN0IF9yZW1vdmV0cmFpbGluZ3NsYXNoID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JlbW92ZS10cmFpbGluZy1zbGFzaFwiKTtcbmNvbnN0IF9yb3V0ZWxvYWRlciA9IHJlcXVpcmUoXCIuL3JvdXRlLWxvYWRlclwiKTtcbmNsYXNzIFBhZ2VMb2FkZXIge1xuICAgIGdldFBhZ2VMaXN0KCkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIF9yb3V0ZWxvYWRlci5nZXRDbGllbnRCdWlsZE1hbmlmZXN0KSgpLnRoZW4oKG1hbmlmZXN0KT0+bWFuaWZlc3Quc29ydGVkUGFnZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHdpbmRvdy5fX0RFVl9QQUdFU19NQU5JRkVTVCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cuX19ERVZfUEFHRVNfTUFOSUZFU1QucGFnZXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvbWlzZWREZXZQYWdlc01hbmlmZXN0IHx8ICh0aGlzLnByb21pc2VkRGV2UGFnZXNNYW5pZmVzdCA9IGZldGNoKFwiXCIgKyB0aGlzLmFzc2V0UHJlZml4ICsgXCIvX25leHQvc3RhdGljL2RldmVsb3BtZW50L19kZXZQYWdlc01hbmlmZXN0Lmpzb25cIikudGhlbigocmVzKT0+cmVzLmpzb24oKSkudGhlbigobWFuaWZlc3QpPT57XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fX0RFVl9QQUdFU19NQU5JRkVTVCA9IG1hbmlmZXN0O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFuaWZlc3QucGFnZXM7XG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycik9PntcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJGYWlsZWQgdG8gZmV0Y2ggZGV2UGFnZXNNYW5pZmVzdDpcIiwgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmFpbGVkIHRvIGZldGNoIF9kZXZQYWdlc01hbmlmZXN0Lmpzb24uIElzIHNvbWV0aGluZyBibG9ja2luZyB0aGF0IG5ldHdvcmsgcmVxdWVzdD9cXG5cIiArIFwiUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9mYWlsZWQtdG8tZmV0Y2gtZGV2cGFnZXNtYW5pZmVzdFwiKTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvbWlzZWREZXZQYWdlc01hbmlmZXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGdldE1pZGRsZXdhcmUoKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pZGRsZXdhcmVNYXRjaGVycyA9IHByb2Nlc3MuZW52Ll9fTkVYVF9NSURETEVXQVJFX01BVENIRVJTO1xuICAgICAgICAgICAgd2luZG93Ll9fTUlERExFV0FSRV9NQVRDSEVSUyA9IG1pZGRsZXdhcmVNYXRjaGVycyA/IG1pZGRsZXdhcmVNYXRjaGVycyA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHJldHVybiB3aW5kb3cuX19NSURETEVXQVJFX01BVENIRVJTO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHdpbmRvdy5fX0RFVl9NSURETEVXQVJFX01BVENIRVJTKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5fX0RFVl9NSURETEVXQVJFX01BVENIRVJTO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucHJvbWlzZWRNaWRkbGV3YXJlTWF0Y2hlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogRGVjaWRlIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGZldGNoaW5nIGZhaWxzIGluc3RlYWQgb2YgYXNzZXJ0aW5nXG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9taXNlZE1pZGRsZXdhcmVNYXRjaGVycyA9IGZldGNoKHRoaXMuYXNzZXRQcmVmaXggKyBcIi9fbmV4dC9zdGF0aWMvXCIgKyB0aGlzLmJ1aWxkSWQgKyBcIi9fZGV2TWlkZGxld2FyZU1hbmlmZXN0Lmpzb25cIikudGhlbigocmVzKT0+cmVzLmpzb24oKSkudGhlbigobWF0Y2hlcnMpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX19ERVZfTUlERExFV0FSRV9NQVRDSEVSUyA9IG1hdGNoZXJzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXJzO1xuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJGYWlsZWQgdG8gZmV0Y2ggX2Rldk1pZGRsZXdhcmVNYW5pZmVzdFwiLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVE9ETyBSZW1vdmUgdGhpcyBhc3NlcnRpb24gYXMgdGhpcyBjb3VsZCBiZSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9taXNlZE1pZGRsZXdhcmVNYXRjaGVycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXREYXRhSHJlZihwYXJhbXMpIHtcbiAgICAgICAgY29uc3QgeyBhc1BhdGggLCBocmVmICwgbG9jYWxlICB9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCB7IHBhdGhuYW1lOiBocmVmUGF0aG5hbWUgLCBxdWVyeSAsIHNlYXJjaCAgfSA9ICgwLCBfcGFyc2VyZWxhdGl2ZXVybC5wYXJzZVJlbGF0aXZlVXJsKShocmVmKTtcbiAgICAgICAgY29uc3QgeyBwYXRobmFtZTogYXNQYXRobmFtZSAgfSA9ICgwLCBfcGFyc2VyZWxhdGl2ZXVybC5wYXJzZVJlbGF0aXZlVXJsKShhc1BhdGgpO1xuICAgICAgICBjb25zdCByb3V0ZSA9ICgwLCBfcmVtb3ZldHJhaWxpbmdzbGFzaC5yZW1vdmVUcmFpbGluZ1NsYXNoKShocmVmUGF0aG5hbWUpO1xuICAgICAgICBpZiAocm91dGVbMF0gIT09IFwiL1wiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JvdXRlIG5hbWUgc2hvdWxkIHN0YXJ0IHdpdGggYSBcIi9cIiwgZ290IFwiJyArIHJvdXRlICsgJ1wiJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZ2V0SHJlZkZvclNsdWcgPSAocGF0aCk9PntcbiAgICAgICAgICAgIGNvbnN0IGRhdGFSb3V0ZSA9ICgwLCBfZ2V0YXNzZXRwYXRoZnJvbXJvdXRlLmRlZmF1bHQpKCgwLCBfcmVtb3ZldHJhaWxpbmdzbGFzaC5yZW1vdmVUcmFpbGluZ1NsYXNoKSgoMCwgX2FkZGxvY2FsZS5hZGRMb2NhbGUpKHBhdGgsIGxvY2FsZSkpLCBcIi5qc29uXCIpO1xuICAgICAgICAgICAgcmV0dXJuICgwLCBfYWRkYmFzZXBhdGguYWRkQmFzZVBhdGgpKFwiL19uZXh0L2RhdGEvXCIgKyB0aGlzLmJ1aWxkSWQgKyBkYXRhUm91dGUgKyBzZWFyY2gsIHRydWUpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZ2V0SHJlZkZvclNsdWcocGFyYW1zLnNraXBJbnRlcnBvbGF0aW9uID8gYXNQYXRobmFtZSA6ICgwLCBfaXNkeW5hbWljLmlzRHluYW1pY1JvdXRlKShyb3V0ZSkgPyAoMCwgX2ludGVycG9sYXRlYXMuaW50ZXJwb2xhdGVBcykoaHJlZlBhdGhuYW1lLCBhc1BhdGhuYW1lLCBxdWVyeSkucmVzdWx0IDogcm91dGUpO1xuICAgIH1cbiAgICBfaXNTc2coLyoqIHRoZSByb3V0ZSAoZmlsZS1zeXN0ZW0gcGF0aCkgKi8gcm91dGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvbWlzZWRTc2dNYW5pZmVzdC50aGVuKChtYW5pZmVzdCk9Pm1hbmlmZXN0Lmhhcyhyb3V0ZSkpO1xuICAgIH1cbiAgICBsb2FkUGFnZShyb3V0ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZUxvYWRlci5sb2FkUm91dGUocm91dGUpLnRoZW4oKHJlcyk9PntcbiAgICAgICAgICAgIGlmIChcImNvbXBvbmVudFwiIGluIHJlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IHJlcy5jb21wb25lbnQsXG4gICAgICAgICAgICAgICAgICAgIG1vZDogcmVzLmV4cG9ydHMsXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlU2hlZXRzOiByZXMuc3R5bGVzLm1hcCgobyk9Pih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogby5ocmVmLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IG8uY29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IHJlcy5lcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByZWZldGNoKHJvdXRlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlTG9hZGVyLnByZWZldGNoKHJvdXRlKTtcbiAgICB9XG4gICAgY29uc3RydWN0b3IoYnVpbGRJZCwgYXNzZXRQcmVmaXgpe1xuICAgICAgICB0aGlzLnJvdXRlTG9hZGVyID0gKDAsIF9yb3V0ZWxvYWRlci5jcmVhdGVSb3V0ZUxvYWRlcikoYXNzZXRQcmVmaXgpO1xuICAgICAgICB0aGlzLmJ1aWxkSWQgPSBidWlsZElkO1xuICAgICAgICB0aGlzLmFzc2V0UHJlZml4ID0gYXNzZXRQcmVmaXg7XG4gICAgICAgIHRoaXMucHJvbWlzZWRTc2dNYW5pZmVzdCA9IG5ldyBQcm9taXNlKChyZXNvbHZlKT0+e1xuICAgICAgICAgICAgaWYgKHdpbmRvdy5fX1NTR19NQU5JRkVTVCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUod2luZG93Ll9fU1NHX01BTklGRVNUKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgd2luZG93Ll9fU1NHX01BTklGRVNUX0NCID0gKCk9PntcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh3aW5kb3cuX19TU0dfTUFOSUZFU1QpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFnZS1sb2FkZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsIlBhZ2VMb2FkZXIiLCJfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQiLCJyZXF1aXJlIiwiX2FkZGJhc2VwYXRoIiwiX2ludGVycG9sYXRlYXMiLCJfZ2V0YXNzZXRwYXRoZnJvbXJvdXRlIiwiXyIsIl9hZGRsb2NhbGUiLCJfaXNkeW5hbWljIiwiX3BhcnNlcmVsYXRpdmV1cmwiLCJfcmVtb3ZldHJhaWxpbmdzbGFzaCIsIl9yb3V0ZWxvYWRlciIsImdldFBhZ2VMaXN0IiwicHJvY2VzcyIsImdldENsaWVudEJ1aWxkTWFuaWZlc3QiLCJ0aGVuIiwibWFuaWZlc3QiLCJzb3J0ZWRQYWdlcyIsIndpbmRvdyIsIl9fREVWX1BBR0VTX01BTklGRVNUIiwicGFnZXMiLCJwcm9taXNlZERldlBhZ2VzTWFuaWZlc3QiLCJmZXRjaCIsImFzc2V0UHJlZml4IiwicmVzIiwianNvbiIsImNhdGNoIiwiZXJyIiwiY29uc29sZSIsImxvZyIsIkVycm9yIiwiZ2V0TWlkZGxld2FyZSIsIm1pZGRsZXdhcmVNYXRjaGVycyIsImVudiIsIl9fTkVYVF9NSURETEVXQVJFX01BVENIRVJTIiwiX19NSURETEVXQVJFX01BVENIRVJTIiwidW5kZWZpbmVkIiwiX19ERVZfTUlERExFV0FSRV9NQVRDSEVSUyIsInByb21pc2VkTWlkZGxld2FyZU1hdGNoZXJzIiwiYnVpbGRJZCIsIm1hdGNoZXJzIiwiZ2V0RGF0YUhyZWYiLCJwYXJhbXMiLCJhc1BhdGgiLCJocmVmIiwibG9jYWxlIiwicGF0aG5hbWUiLCJocmVmUGF0aG5hbWUiLCJxdWVyeSIsInNlYXJjaCIsInBhcnNlUmVsYXRpdmVVcmwiLCJhc1BhdGhuYW1lIiwicm91dGUiLCJyZW1vdmVUcmFpbGluZ1NsYXNoIiwiZ2V0SHJlZkZvclNsdWciLCJwYXRoIiwiZGF0YVJvdXRlIiwiZGVmYXVsdCIsImFkZExvY2FsZSIsImFkZEJhc2VQYXRoIiwic2tpcEludGVycG9sYXRpb24iLCJpc0R5bmFtaWNSb3V0ZSIsImludGVycG9sYXRlQXMiLCJyZXN1bHQiLCJfaXNTc2ciLCJwcm9taXNlZFNzZ01hbmlmZXN0IiwiaGFzIiwibG9hZFBhZ2UiLCJyb3V0ZUxvYWRlciIsImxvYWRSb3V0ZSIsInBhZ2UiLCJjb21wb25lbnQiLCJtb2QiLCJzdHlsZVNoZWV0cyIsInN0eWxlcyIsIm1hcCIsIm8iLCJ0ZXh0IiwiY29udGVudCIsImVycm9yIiwicHJlZmV0Y2giLCJjb25zdHJ1Y3RvciIsImNyZWF0ZVJvdXRlTG9hZGVyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJfX1NTR19NQU5JRkVTVCIsIl9fU1NHX01BTklGRVNUX0NCIiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/page-loader.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/performance-relayer.js": +/*!**************************************************************!*\ + !*** ./node_modules/next/dist/client/performance-relayer.js ***! + \**************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("/* global location */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return _default;\n }\n}));\n// copied to prevent pulling in un-necessary utils\nconst WEB_VITALS = [\n \"CLS\",\n \"FCP\",\n \"FID\",\n \"INP\",\n \"LCP\",\n \"TTFB\"\n];\nconst initialHref = location.href;\nlet isRegistered = false;\nlet userReportHandler;\nfunction onReport(metric) {\n if (userReportHandler) {\n userReportHandler(metric);\n }\n // This code is not shipped, executed, or present in the client-side\n // JavaScript bundle unless explicitly enabled in your application.\n //\n // When this feature is enabled, we'll make it very clear by printing a\n // message during the build (`next build`).\n if (false) { var _window___NEXT_DATA__; }\n}\nconst _default = (onPerfEntry)=>{\n // Update function if it changes:\n userReportHandler = onPerfEntry;\n // Only register listeners once:\n if (isRegistered) {\n return;\n }\n isRegistered = true;\n const attributions = undefined;\n for (const webVital of WEB_VITALS){\n try {\n let mod;\n if (false) {}\n if (!mod) {\n mod = __webpack_require__(/*! next/dist/compiled/web-vitals */ \"./node_modules/next/dist/compiled/web-vitals/web-vitals.js\");\n }\n mod[\"on\" + webVital](onReport);\n } catch (err) {\n // Do nothing if the module fails to load\n console.warn(\"Failed to track \" + webVital + \" web-vital\", err);\n }\n }\n};\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=performance-relayer.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9wZXJmb3JtYW5jZS1yZWxheWVyLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFBLG1CQUFtQixHQUFnQjtBQUNuQ0EsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRkgsMkNBQTBDO0lBQ3RDSSxZQUFZLElBQUk7SUFDaEJDLEtBQUssV0FBVztRQUNaLE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixrREFBa0Q7QUFDbEQsTUFBTUMsYUFBYTtJQUNmO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNIO0FBQ0QsTUFBTUMsY0FBY0MsU0FBU0MsSUFBSTtBQUNqQyxJQUFJQyxlQUFlLEtBQUs7QUFDeEIsSUFBSUM7QUFDSixTQUFTQyxTQUFTQyxNQUFNLEVBQUU7SUFDdEIsSUFBSUYsbUJBQW1CO1FBQ25CQSxrQkFBa0JFO0lBQ3RCLENBQUM7SUFDRCxvRUFBb0U7SUFDcEUsbUVBQW1FO0lBQ25FLEVBQUU7SUFDRix1RUFBdUU7SUFDdkUsMkNBQTJDO0lBQzNDLElBQUlDLEtBQzJCLEVBQUUsOEJBbUNoQztBQUNMO0FBQ0EsTUFBTVQsV0FBVyxDQUFDeUMsY0FBYztJQUM1QixpQ0FBaUM7SUFDakNuQyxvQkFBb0JtQztJQUNwQixnQ0FBZ0M7SUFDaEMsSUFBSXBDLGNBQWM7UUFDZDtJQUNKLENBQUM7SUFDREEsZUFBZSxJQUFJO0lBQ25CLE1BQU1xQyxlQUFlakMsU0FBeUM7SUFDOUQsS0FBSyxNQUFNbUMsWUFBWTNDLFdBQVc7UUFDOUIsSUFBSTtZQUNBLElBQUk0QztZQUNKLElBQUlwQyxLQUE2QyxFQUFFLEVBSWxEO1lBQ0QsSUFBSSxDQUFDb0MsS0FBSztnQkFDTkEsTUFBTUcsbUJBQU9BLENBQUMsaUdBQStCO1lBQ2pELENBQUM7WUFDREgsR0FBRyxDQUFDLE9BQU9ELFNBQVMsQ0FBQ3JDO1FBQ3pCLEVBQUUsT0FBT2lDLEtBQUs7WUFDVix5Q0FBeUM7WUFDekNGLFFBQVFXLElBQUksQ0FBQyxxQkFBcUJMLFdBQVcsY0FBY0o7UUFDL0Q7SUFDSjtBQUNKO0FBRUEsSUFBSSxDQUFDLE9BQU81QyxRQUFRc0QsT0FBTyxLQUFLLGNBQWUsT0FBT3RELFFBQVFzRCxPQUFPLEtBQUssWUFBWXRELFFBQVFzRCxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU90RCxRQUFRc0QsT0FBTyxDQUFDQyxVQUFVLEtBQUssYUFBYTtJQUNyS3pELE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUXNELE9BQU8sRUFBRSxjQUFjO1FBQUVyRCxPQUFPLElBQUk7SUFBQztJQUNuRUgsT0FBTzBELE1BQU0sQ0FBQ3hELFFBQVFzRCxPQUFPLEVBQUV0RDtJQUMvQnlELE9BQU96RCxPQUFPLEdBQUdBLFFBQVFzRCxPQUFPO0FBQ2xDLENBQUMsQ0FFRCwrQ0FBK0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcGVyZm9ybWFuY2UtcmVsYXllci5qcz9lZjcxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGdsb2JhbCBsb2NhdGlvbiAqLyBcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9kZWZhdWx0O1xuICAgIH1cbn0pO1xuLy8gY29waWVkIHRvIHByZXZlbnQgcHVsbGluZyBpbiB1bi1uZWNlc3NhcnkgdXRpbHNcbmNvbnN0IFdFQl9WSVRBTFMgPSBbXG4gICAgXCJDTFNcIixcbiAgICBcIkZDUFwiLFxuICAgIFwiRklEXCIsXG4gICAgXCJJTlBcIixcbiAgICBcIkxDUFwiLFxuICAgIFwiVFRGQlwiXG5dO1xuY29uc3QgaW5pdGlhbEhyZWYgPSBsb2NhdGlvbi5ocmVmO1xubGV0IGlzUmVnaXN0ZXJlZCA9IGZhbHNlO1xubGV0IHVzZXJSZXBvcnRIYW5kbGVyO1xuZnVuY3Rpb24gb25SZXBvcnQobWV0cmljKSB7XG4gICAgaWYgKHVzZXJSZXBvcnRIYW5kbGVyKSB7XG4gICAgICAgIHVzZXJSZXBvcnRIYW5kbGVyKG1ldHJpYyk7XG4gICAgfVxuICAgIC8vIFRoaXMgY29kZSBpcyBub3Qgc2hpcHBlZCwgZXhlY3V0ZWQsIG9yIHByZXNlbnQgaW4gdGhlIGNsaWVudC1zaWRlXG4gICAgLy8gSmF2YVNjcmlwdCBidW5kbGUgdW5sZXNzIGV4cGxpY2l0bHkgZW5hYmxlZCBpbiB5b3VyIGFwcGxpY2F0aW9uLlxuICAgIC8vXG4gICAgLy8gV2hlbiB0aGlzIGZlYXR1cmUgaXMgZW5hYmxlZCwgd2UnbGwgbWFrZSBpdCB2ZXJ5IGNsZWFyIGJ5IHByaW50aW5nIGFcbiAgICAvLyBtZXNzYWdlIGR1cmluZyB0aGUgYnVpbGQgKGBuZXh0IGJ1aWxkYCkuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiAmJiAvLyBUaGlzIGZpZWxkIGlzIGVtcHR5IHVubGVzcyB5b3UgZXhwbGljaXRseSBjb25maWd1cmUgaXQ6XG4gICAgcHJvY2Vzcy5lbnYuX19ORVhUX0FOQUxZVElDU19JRCkge1xuICAgICAgICB2YXIgX3dpbmRvd19fX05FWFRfREFUQV9fO1xuICAgICAgICBjb25zdCBib2R5ID0ge1xuICAgICAgICAgICAgZHNuOiBwcm9jZXNzLmVudi5fX05FWFRfQU5BTFlUSUNTX0lELFxuICAgICAgICAgICAgaWQ6IG1ldHJpYy5pZCxcbiAgICAgICAgICAgIHBhZ2U6IChfd2luZG93X19fTkVYVF9EQVRBX18gPSB3aW5kb3cuX19ORVhUX0RBVEFfXykgPT0gbnVsbCA/IHZvaWQgMCA6IF93aW5kb3dfX19ORVhUX0RBVEFfXy5wYWdlLFxuICAgICAgICAgICAgaHJlZjogaW5pdGlhbEhyZWYsXG4gICAgICAgICAgICBldmVudF9uYW1lOiBtZXRyaWMubmFtZSxcbiAgICAgICAgICAgIHZhbHVlOiBtZXRyaWMudmFsdWUudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHNwZWVkOiBcImNvbm5lY3Rpb25cIiBpbiBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yW1wiY29ubmVjdGlvblwiXSAmJiBcImVmZmVjdGl2ZVR5cGVcIiBpbiBuYXZpZ2F0b3JbXCJjb25uZWN0aW9uXCJdID8gbmF2aWdhdG9yW1wiY29ubmVjdGlvblwiXVtcImVmZmVjdGl2ZVR5cGVcIl0gOiBcIlwiXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbXG4gICAgICAgICAgICBuZXcgVVJMU2VhcmNoUGFyYW1zKGJvZHkpLnRvU3RyaW5nKClcbiAgICAgICAgXSwge1xuICAgICAgICAgICAgLy8gVGhpcyBjb250ZW50IHR5cGUgaXMgbmVjZXNzYXJ5IGZvciBgc2VuZEJlYWNvbmA6XG4gICAgICAgICAgICB0eXBlOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB2aXRhbHNVcmwgPSBcImh0dHBzOi8vdml0YWxzLnZlcmNlbC1pbnNpZ2h0cy5jb20vdjEvdml0YWxzXCI7XG4gICAgICAgIC8vIE5hdmlnYXRvciBoYXMgdG8gYmUgYm91bmQgdG8gZW5zdXJlIGl0IGRvZXMgbm90IGVycm9yIGluIHNvbWUgYnJvd3NlcnNcbiAgICAgICAgLy8gaHR0cHM6Ly94Z3dhbmcubWUvcG9zdHMveW91LW1heS1ub3Qta25vdy1iZWFjb24vI2l0LW1heS10aHJvdy1lcnJvciUyQy1iZS1zdXJlLXRvLWNhdGNoXG4gICAgICAgIGNvbnN0IHNlbmQgPSBuYXZpZ2F0b3Iuc2VuZEJlYWNvbiAmJiBuYXZpZ2F0b3Iuc2VuZEJlYWNvbi5iaW5kKG5hdmlnYXRvcik7XG4gICAgICAgIGZ1bmN0aW9uIGZhbGxiYWNrU2VuZCgpIHtcbiAgICAgICAgICAgIGZldGNoKHZpdGFsc1VybCwge1xuICAgICAgICAgICAgICAgIGJvZHk6IGJsb2IsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICBjcmVkZW50aWFsczogXCJvbWl0XCIsXG4gICAgICAgICAgICAgICAga2VlcGFsaXZlOiB0cnVlXG4gICAgICAgICAgICB9KS5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gSWYgc2VuZCBpcyB1bmRlZmluZWQgaXQnbGwgdGhyb3cgYXMgd2VsbC4gVGhpcyByZWR1Y2VzIG91dHB1dCBjb2RlIHNpemUuXG4gICAgICAgICAgICBzZW5kKHZpdGFsc1VybCwgYmxvYikgfHwgZmFsbGJhY2tTZW5kKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgZmFsbGJhY2tTZW5kKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5jb25zdCBfZGVmYXVsdCA9IChvblBlcmZFbnRyeSk9PntcbiAgICAvLyBVcGRhdGUgZnVuY3Rpb24gaWYgaXQgY2hhbmdlczpcbiAgICB1c2VyUmVwb3J0SGFuZGxlciA9IG9uUGVyZkVudHJ5O1xuICAgIC8vIE9ubHkgcmVnaXN0ZXIgbGlzdGVuZXJzIG9uY2U6XG4gICAgaWYgKGlzUmVnaXN0ZXJlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlzUmVnaXN0ZXJlZCA9IHRydWU7XG4gICAgY29uc3QgYXR0cmlidXRpb25zID0gcHJvY2Vzcy5lbnYuX19ORVhUX1dFQl9WSVRBTFNfQVRUUklCVVRJT047XG4gICAgZm9yIChjb25zdCB3ZWJWaXRhbCBvZiBXRUJfVklUQUxTKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBtb2Q7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0hBU19XRUJfVklUQUxTX0FUVFJJQlVUSU9OKSB7XG4gICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogYXR0cmlidXRpb25zLmluY2x1ZGVzKHdlYlZpdGFsKSkge1xuICAgICAgICAgICAgICAgICAgICBtb2QgPSByZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3dlYi12aXRhbHMtYXR0cmlidXRpb25cIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFtb2QpIHtcbiAgICAgICAgICAgICAgICBtb2QgPSByZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3dlYi12aXRhbHNcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtb2RbXCJvblwiICsgd2ViVml0YWxdKG9uUmVwb3J0KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBEbyBub3RoaW5nIGlmIHRoZSBtb2R1bGUgZmFpbHMgdG8gbG9hZFxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiRmFpbGVkIHRvIHRyYWNrIFwiICsgd2ViVml0YWwgKyBcIiB3ZWItdml0YWxcIiwgZXJyKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBlcmZvcm1hbmNlLXJlbGF5ZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsIl9kZWZhdWx0IiwiV0VCX1ZJVEFMUyIsImluaXRpYWxIcmVmIiwibG9jYXRpb24iLCJocmVmIiwiaXNSZWdpc3RlcmVkIiwidXNlclJlcG9ydEhhbmRsZXIiLCJvblJlcG9ydCIsIm1ldHJpYyIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfQU5BTFlUSUNTX0lEIiwiX3dpbmRvd19fX05FWFRfREFUQV9fIiwiYm9keSIsImRzbiIsImlkIiwicGFnZSIsIndpbmRvdyIsIl9fTkVYVF9EQVRBX18iLCJldmVudF9uYW1lIiwibmFtZSIsInRvU3RyaW5nIiwic3BlZWQiLCJuYXZpZ2F0b3IiLCJibG9iIiwiQmxvYiIsIlVSTFNlYXJjaFBhcmFtcyIsInR5cGUiLCJ2aXRhbHNVcmwiLCJzZW5kIiwic2VuZEJlYWNvbiIsImJpbmQiLCJmYWxsYmFja1NlbmQiLCJmZXRjaCIsIm1ldGhvZCIsImNyZWRlbnRpYWxzIiwia2VlcGFsaXZlIiwiY2F0Y2giLCJjb25zb2xlIiwiZXJyb3IiLCJlcnIiLCJvblBlcmZFbnRyeSIsImF0dHJpYnV0aW9ucyIsIl9fTkVYVF9XRUJfVklUQUxTX0FUVFJJQlVUSU9OIiwid2ViVml0YWwiLCJtb2QiLCJfX05FWFRfSEFTX1dFQl9WSVRBTFNfQVRUUklCVVRJT04iLCJpbmNsdWRlcyIsInJlcXVpcmUiLCJ3YXJuIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/performance-relayer.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/portal/index.js": +/*!*******************************************************!*\ + !*** ./node_modules/next/dist/client/portal/index.js ***! + \*******************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"Portal\", ({\n enumerable: true,\n get: function() {\n return Portal;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"./node_modules/next/dist/compiled/react/index.js\");\nconst _reactdom = __webpack_require__(/*! react-dom */ \"./node_modules/next/dist/compiled/react-dom/index.js\");\nconst Portal = (param)=>{\n let { children , type } = param;\n const [portalNode, setPortalNode] = (0, _react.useState)(null);\n (0, _react.useEffect)(()=>{\n const element = document.createElement(type);\n document.body.appendChild(element);\n setPortalNode(element);\n return ()=>{\n document.body.removeChild(element);\n };\n }, [\n type\n ]);\n return portalNode ? /*#__PURE__*/ (0, _reactdom.createPortal)(children, portalNode) : null;\n};\n_c = Portal;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=index.js.map\nvar _c;\n$RefreshReg$(_c, \"Portal\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9wb3J0YWwvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRkgsMENBQXlDO0lBQ3JDSSxZQUFZLElBQUk7SUFDaEJDLEtBQUssV0FBVztRQUNaLE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQyxTQUFTQyxtQkFBT0EsQ0FBQywrREFBTztBQUM5QixNQUFNQyxZQUFZRCxtQkFBT0EsQ0FBQyx1RUFBVztBQUNyQyxNQUFNRixTQUFTLENBQUNJLFFBQVE7SUFDcEIsSUFBSSxFQUFFQyxTQUFRLEVBQUdDLEtBQUksRUFBRyxHQUFHRjtJQUMzQixNQUFNLENBQUNHLFlBQVlDLGNBQWMsR0FBRyxDQUFDLEdBQUdQLE9BQU9RLFFBQVEsRUFBRSxJQUFJO0lBQzVELElBQUdSLE9BQU9TLFNBQVMsRUFBRSxJQUFJO1FBQ3RCLE1BQU1DLFVBQVVDLFNBQVNDLGFBQWEsQ0FBQ1A7UUFDdkNNLFNBQVNFLElBQUksQ0FBQ0MsV0FBVyxDQUFDSjtRQUMxQkgsY0FBY0c7UUFDZCxPQUFPLElBQUk7WUFDUEMsU0FBU0UsSUFBSSxDQUFDRSxXQUFXLENBQUNMO1FBQzlCO0lBQ0osR0FBRztRQUNDTDtLQUNIO0lBQ0QsT0FBT0MsYUFBMkIsV0FBSCxHQUFJLElBQUdKLFVBQVVjLFlBQVksRUFBRVosVUFBVUUsY0FBYyxJQUFJO0FBQzlGO0tBZE1QO0FBZ0JOLElBQUksQ0FBQyxPQUFPSixRQUFRc0IsT0FBTyxLQUFLLGNBQWUsT0FBT3RCLFFBQVFzQixPQUFPLEtBQUssWUFBWXRCLFFBQVFzQixPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU90QixRQUFRc0IsT0FBTyxDQUFDQyxVQUFVLEtBQUssYUFBYTtJQUNyS3pCLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUXNCLE9BQU8sRUFBRSxjQUFjO1FBQUVyQixPQUFPLElBQUk7SUFBQztJQUNuRUgsT0FBTzBCLE1BQU0sQ0FBQ3hCLFFBQVFzQixPQUFPLEVBQUV0QjtJQUMvQnlCLE9BQU96QixPQUFPLEdBQUdBLFFBQVFzQixPQUFPO0FBQ2xDLENBQUMsQ0FFRCxpQ0FBaUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcG9ydGFsL2luZGV4LmpzPzMxYTIiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJQb3J0YWxcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFBvcnRhbDtcbiAgICB9XG59KTtcbmNvbnN0IF9yZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbmNvbnN0IF9yZWFjdGRvbSA9IHJlcXVpcmUoXCJyZWFjdC1kb21cIik7XG5jb25zdCBQb3J0YWwgPSAocGFyYW0pPT57XG4gICAgbGV0IHsgY2hpbGRyZW4gLCB0eXBlICB9ID0gcGFyYW07XG4gICAgY29uc3QgW3BvcnRhbE5vZGUsIHNldFBvcnRhbE5vZGVdID0gKDAsIF9yZWFjdC51c2VTdGF0ZSkobnVsbCk7XG4gICAgKDAsIF9yZWFjdC51c2VFZmZlY3QpKCgpPT57XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHR5cGUpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICBzZXRQb3J0YWxOb2RlKGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgIH07XG4gICAgfSwgW1xuICAgICAgICB0eXBlXG4gICAgXSk7XG4gICAgcmV0dXJuIHBvcnRhbE5vZGUgPyAvKiNfX1BVUkVfXyovICgwLCBfcmVhY3Rkb20uY3JlYXRlUG9ydGFsKShjaGlsZHJlbiwgcG9ydGFsTm9kZSkgOiBudWxsO1xufTtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsIlBvcnRhbCIsIl9yZWFjdCIsInJlcXVpcmUiLCJfcmVhY3Rkb20iLCJwYXJhbSIsImNoaWxkcmVuIiwidHlwZSIsInBvcnRhbE5vZGUiLCJzZXRQb3J0YWxOb2RlIiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJlbGVtZW50IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiYm9keSIsImFwcGVuZENoaWxkIiwicmVtb3ZlQ2hpbGQiLCJjcmVhdGVQb3J0YWwiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/portal/index.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/remove-base-path.js": +/*!***********************************************************!*\ + !*** ./node_modules/next/dist/client/remove-base-path.js ***! + \***********************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"removeBasePath\", ({\n enumerable: true,\n get: function() {\n return removeBasePath;\n }\n}));\nconst _hasbasepath = __webpack_require__(/*! ./has-base-path */ \"./node_modules/next/dist/client/has-base-path.js\");\nconst basePath = false || \"\";\nfunction removeBasePath(path) {\n if (false) {}\n path = path.slice(basePath.length);\n if (!path.startsWith(\"/\")) path = \"/\" + path;\n return path;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=remove-base-path.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZW1vdmUtYmFzZS1wYXRoLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTyxJQUFJO0FBQ2YsQ0FBQyxFQUFDO0FBQ0ZILGtEQUFpRDtJQUM3Q0ksWUFBWSxJQUFJO0lBQ2hCQyxLQUFLLFdBQVc7UUFDWixPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsTUFBTUMsZUFBZUMsbUJBQU9BLENBQUMseUVBQWlCO0FBQzlDLE1BQU1DLFdBQVdDLE1BQWtDLElBQUk7QUFDdkQsU0FBU0osZUFBZU8sSUFBSSxFQUFFO0lBQzFCLElBQUlILEtBQTBDLEVBQUUsRUFJL0M7SUFDREcsT0FBT0EsS0FBS0csS0FBSyxDQUFDUCxTQUFTUSxNQUFNO0lBQ2pDLElBQUksQ0FBQ0osS0FBS0ssVUFBVSxDQUFDLE1BQU1MLE9BQU8sTUFBTUE7SUFDeEMsT0FBT0E7QUFDWDtBQUVBLElBQUksQ0FBQyxPQUFPWCxRQUFRaUIsT0FBTyxLQUFLLGNBQWUsT0FBT2pCLFFBQVFpQixPQUFPLEtBQUssWUFBWWpCLFFBQVFpQixPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9qQixRQUFRaUIsT0FBTyxDQUFDQyxVQUFVLEtBQUssYUFBYTtJQUNyS3BCLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUWlCLE9BQU8sRUFBRSxjQUFjO1FBQUVoQixPQUFPLElBQUk7SUFBQztJQUNuRUgsT0FBT3FCLE1BQU0sQ0FBQ25CLFFBQVFpQixPQUFPLEVBQUVqQjtJQUMvQm9CLE9BQU9wQixPQUFPLEdBQUdBLFFBQVFpQixPQUFPO0FBQ2xDLENBQUMsQ0FFRCw0Q0FBNEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcmVtb3ZlLWJhc2UtcGF0aC5qcz9iNGYxIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwicmVtb3ZlQmFzZVBhdGhcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlbW92ZUJhc2VQYXRoO1xuICAgIH1cbn0pO1xuY29uc3QgX2hhc2Jhc2VwYXRoID0gcmVxdWlyZShcIi4vaGFzLWJhc2UtcGF0aFwiKTtcbmNvbnN0IGJhc2VQYXRoID0gcHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSCB8fCBcIlwiO1xuZnVuY3Rpb24gcmVtb3ZlQmFzZVBhdGgocGF0aCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfTUFOVUFMX0NMSUVOVF9CQVNFX1BBVEgpIHtcbiAgICAgICAgaWYgKCEoMCwgX2hhc2Jhc2VwYXRoLmhhc0Jhc2VQYXRoKShwYXRoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcGF0aCA9IHBhdGguc2xpY2UoYmFzZVBhdGgubGVuZ3RoKTtcbiAgICBpZiAoIXBhdGguc3RhcnRzV2l0aChcIi9cIikpIHBhdGggPSBcIi9cIiArIHBhdGg7XG4gICAgcmV0dXJuIHBhdGg7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlbW92ZS1iYXNlLXBhdGguanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsInJlbW92ZUJhc2VQYXRoIiwiX2hhc2Jhc2VwYXRoIiwicmVxdWlyZSIsImJhc2VQYXRoIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9ST1VURVJfQkFTRVBBVEgiLCJwYXRoIiwiX19ORVhUX01BTlVBTF9DTElFTlRfQkFTRV9QQVRIIiwiaGFzQmFzZVBhdGgiLCJzbGljZSIsImxlbmd0aCIsInN0YXJ0c1dpdGgiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/remove-base-path.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/remove-locale.js": +/*!********************************************************!*\ + !*** ./node_modules/next/dist/client/remove-locale.js ***! + \********************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"removeLocale\", ({\n enumerable: true,\n get: function() {\n return removeLocale;\n }\n}));\nconst _parsepath = __webpack_require__(/*! ../shared/lib/router/utils/parse-path */ \"./node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nfunction removeLocale(path, locale) {\n if (false) {}\n return path;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=remove-locale.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZW1vdmUtbG9jYWxlLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTyxJQUFJO0FBQ2YsQ0FBQyxFQUFDO0FBQ0ZILGdEQUErQztJQUMzQ0ksWUFBWSxJQUFJO0lBQ2hCQyxLQUFLLFdBQVc7UUFDWixPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsTUFBTUMsYUFBYUMsbUJBQU9BLENBQUMsNkdBQXVDO0FBQ2xFLFNBQVNGLGFBQWFHLElBQUksRUFBRUMsTUFBTSxFQUFFO0lBQ2hDLElBQUlDLEtBQStCLEVBQUUsRUFLcEM7SUFDRCxPQUFPRjtBQUNYO0FBRUEsSUFBSSxDQUFDLE9BQU9QLFFBQVFvQixPQUFPLEtBQUssY0FBZSxPQUFPcEIsUUFBUW9CLE9BQU8sS0FBSyxZQUFZcEIsUUFBUW9CLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT3BCLFFBQVFvQixPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLdkIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRb0IsT0FBTyxFQUFFLGNBQWM7UUFBRW5CLE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPd0IsTUFBTSxDQUFDdEIsUUFBUW9CLE9BQU8sRUFBRXBCO0lBQy9CdUIsT0FBT3ZCLE9BQU8sR0FBR0EsUUFBUW9CLE9BQU87QUFDbEMsQ0FBQyxDQUVELHlDQUF5QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZW1vdmUtbG9jYWxlLmpzPzQ3NTMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJyZW1vdmVMb2NhbGVcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlbW92ZUxvY2FsZTtcbiAgICB9XG59KTtcbmNvbnN0IF9wYXJzZXBhdGggPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcGFyc2UtcGF0aFwiKTtcbmZ1bmN0aW9uIHJlbW92ZUxvY2FsZShwYXRoLCBsb2NhbGUpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICBjb25zdCB7IHBhdGhuYW1lICB9ID0gKDAsIF9wYXJzZXBhdGgucGFyc2VQYXRoKShwYXRoKTtcbiAgICAgICAgY29uc3QgcGF0aExvd2VyID0gcGF0aG5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgbG9jYWxlTG93ZXIgPSBsb2NhbGUgPT0gbnVsbCA/IHZvaWQgMCA6IGxvY2FsZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXR1cm4gbG9jYWxlICYmIChwYXRoTG93ZXIuc3RhcnRzV2l0aChcIi9cIiArIGxvY2FsZUxvd2VyICsgXCIvXCIpIHx8IHBhdGhMb3dlciA9PT0gXCIvXCIgKyBsb2NhbGVMb3dlcikgPyBcIlwiICsgKHBhdGhuYW1lLmxlbmd0aCA9PT0gbG9jYWxlLmxlbmd0aCArIDEgPyBcIi9cIiA6IFwiXCIpICsgcGF0aC5zbGljZShsb2NhbGUubGVuZ3RoICsgMSkgOiBwYXRoO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aDtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVtb3ZlLWxvY2FsZS5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwicmVtb3ZlTG9jYWxlIiwiX3BhcnNlcGF0aCIsInJlcXVpcmUiLCJwYXRoIiwibG9jYWxlIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9JMThOX1NVUFBPUlQiLCJwYXRobmFtZSIsInBhcnNlUGF0aCIsInBhdGhMb3dlciIsInRvTG93ZXJDYXNlIiwibG9jYWxlTG93ZXIiLCJzdGFydHNXaXRoIiwibGVuZ3RoIiwic2xpY2UiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/remove-locale.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/request-idle-callback.js": +/*!****************************************************************!*\ + !*** ./node_modules/next/dist/client/request-idle-callback.js ***! + \****************************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n requestIdleCallback: function() {\n return requestIdleCallback;\n },\n cancelIdleCallback: function() {\n return cancelIdleCallback;\n }\n});\nconst requestIdleCallback = typeof self !== \"undefined\" && self.requestIdleCallback && self.requestIdleCallback.bind(window) || function(cb) {\n let start = Date.now();\n return self.setTimeout(function() {\n cb({\n didTimeout: false,\n timeRemaining: function() {\n return Math.max(0, 50 - (Date.now() - start));\n }\n });\n }, 1);\n};\nconst cancelIdleCallback = typeof self !== \"undefined\" && self.cancelIdleCallback && self.cancelIdleCallback.bind(window) || function(id) {\n return clearTimeout(id);\n};\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=request-idle-callback.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZXF1ZXN0LWlkbGUtY2FsbGJhY2suanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRixLQUFNQyxDQUFBQSxDQUdOO0FBQ0EsU0FBU0csUUFBUUMsTUFBTSxFQUFFQyxHQUFHLEVBQUU7SUFDMUIsSUFBSSxJQUFJQyxRQUFRRCxJQUFJVCxPQUFPQyxjQUFjLENBQUNPLFFBQVFFLE1BQU07UUFDcERDLFlBQVksSUFBSTtRQUNoQkMsS0FBS0gsR0FBRyxDQUFDQyxLQUFLO0lBQ2xCO0FBQ0o7QUFDQUgsUUFBUUwsU0FBUztJQUNiRyxxQkFBcUIsV0FBVztRQUM1QixPQUFPQTtJQUNYO0lBQ0FDLG9CQUFvQixXQUFXO1FBQzNCLE9BQU9BO0lBQ1g7QUFDSjtBQUNBLE1BQU1ELHNCQUFzQixPQUFPUSxTQUFTLGVBQWVBLEtBQUtSLG1CQUFtQixJQUFJUSxLQUFLUixtQkFBbUIsQ0FBQ1MsSUFBSSxDQUFDQyxXQUFXLFNBQVNDLEVBQUUsRUFBRTtJQUN6SSxJQUFJQyxRQUFRQyxLQUFLQyxHQUFHO0lBQ3BCLE9BQU9OLEtBQUtPLFVBQVUsQ0FBQyxXQUFXO1FBQzlCSixHQUFHO1lBQ0NLLFlBQVksS0FBSztZQUNqQkMsZUFBZSxXQUFXO2dCQUN0QixPQUFPQyxLQUFLQyxHQUFHLENBQUMsR0FBRyxLQUFNTixDQUFBQSxLQUFLQyxHQUFHLEtBQUtGLEtBQUk7WUFDOUM7UUFDSjtJQUNKLEdBQUc7QUFDUDtBQUNBLE1BQU1YLHFCQUFxQixPQUFPTyxTQUFTLGVBQWVBLEtBQUtQLGtCQUFrQixJQUFJTyxLQUFLUCxrQkFBa0IsQ0FBQ1EsSUFBSSxDQUFDQyxXQUFXLFNBQVNVLEVBQUUsRUFBRTtJQUN0SSxPQUFPQyxhQUFhRDtBQUN4QjtBQUVBLElBQUksQ0FBQyxPQUFPdkIsUUFBUXlCLE9BQU8sS0FBSyxjQUFlLE9BQU96QixRQUFReUIsT0FBTyxLQUFLLFlBQVl6QixRQUFReUIsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPekIsUUFBUXlCLE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLGFBQWE7SUFDcks1QixPQUFPQyxjQUFjLENBQUNDLFFBQVF5QixPQUFPLEVBQUUsY0FBYztRQUFFeEIsT0FBTyxJQUFJO0lBQUM7SUFDbkVILE9BQU82QixNQUFNLENBQUMzQixRQUFReUIsT0FBTyxFQUFFekI7SUFDL0JFLE9BQU9GLE9BQU8sR0FBR0EsUUFBUXlCLE9BQU87QUFDbEMsQ0FBQyxDQUVELGlEQUFpRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZXF1ZXN0LWlkbGUtY2FsbGJhY2suanM/MWUyMCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIHJlcXVlc3RJZGxlQ2FsbGJhY2s6IG51bGwsXG4gICAgY2FuY2VsSWRsZUNhbGxiYWNrOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIHJlcXVlc3RJZGxlQ2FsbGJhY2s6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVxdWVzdElkbGVDYWxsYmFjaztcbiAgICB9LFxuICAgIGNhbmNlbElkbGVDYWxsYmFjazogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjYW5jZWxJZGxlQ2FsbGJhY2s7XG4gICAgfVxufSk7XG5jb25zdCByZXF1ZXN0SWRsZUNhbGxiYWNrID0gdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgJiYgc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrICYmIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjay5iaW5kKHdpbmRvdykgfHwgZnVuY3Rpb24oY2IpIHtcbiAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIHJldHVybiBzZWxmLnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIGNiKHtcbiAgICAgICAgICAgIGRpZFRpbWVvdXQ6IGZhbHNlLFxuICAgICAgICAgICAgdGltZVJlbWFpbmluZzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIDUwIC0gKERhdGUubm93KCkgLSBzdGFydCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9LCAxKTtcbn07XG5jb25zdCBjYW5jZWxJZGxlQ2FsbGJhY2sgPSB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiAmJiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayAmJiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjay5iaW5kKHdpbmRvdykgfHwgZnVuY3Rpb24oaWQpIHtcbiAgICByZXR1cm4gY2xlYXJUaW1lb3V0KGlkKTtcbn07XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlcXVlc3QtaWRsZS1jYWxsYmFjay5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJtb2R1bGUiLCJyZXF1ZXN0SWRsZUNhbGxiYWNrIiwiY2FuY2VsSWRsZUNhbGxiYWNrIiwiX2V4cG9ydCIsInRhcmdldCIsImFsbCIsIm5hbWUiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwic2VsZiIsImJpbmQiLCJ3aW5kb3ciLCJjYiIsInN0YXJ0IiwiRGF0ZSIsIm5vdyIsInNldFRpbWVvdXQiLCJkaWRUaW1lb3V0IiwidGltZVJlbWFpbmluZyIsIk1hdGgiLCJtYXgiLCJpZCIsImNsZWFyVGltZW91dCIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/request-idle-callback.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/route-announcer.js": +/*!**********************************************************!*\ + !*** ./node_modules/next/dist/client/route-announcer.js ***! + \**********************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nvar _s = $RefreshSig$();\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n RouteAnnouncer: function() {\n return RouteAnnouncer;\n },\n default: function() {\n return _default;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"./node_modules/next/dist/compiled/react/index.js\"));\nconst _router = __webpack_require__(/*! ./router */ \"./node_modules/next/dist/client/router.js\");\nconst nextjsRouteAnnouncerStyles = {\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n top: 0,\n width: \"1px\",\n // https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n};\nconst RouteAnnouncer = ()=>{\n _s();\n const { asPath } = (0, _router.useRouter)();\n const [routeAnnouncement, setRouteAnnouncement] = _react.default.useState(\"\");\n // Only announce the path change, but not for the first load because screen\n // reader will do that automatically.\n const previouslyLoadedPath = _react.default.useRef(asPath);\n // Every time the path changes, announce the new page’s title following this\n // priority: first the document title (from head), otherwise the first h1, or\n // if none of these exist, then the pathname from the URL. This methodology is\n // inspired by Marcy Sutton’s accessible client routing user testing. More\n // information can be found here:\n // https://www.gatsbyjs.com/blog/2019-07-11-user-testing-accessible-client-routing/\n _react.default.useEffect(()=>{\n // If the path hasn't change, we do nothing.\n if (previouslyLoadedPath.current === asPath) return;\n previouslyLoadedPath.current = asPath;\n if (document.title) {\n setRouteAnnouncement(document.title);\n } else {\n const pageHeader = document.querySelector(\"h1\");\n var _pageHeader_innerText;\n const content = (_pageHeader_innerText = pageHeader == null ? void 0 : pageHeader.innerText) != null ? _pageHeader_innerText : pageHeader == null ? void 0 : pageHeader.textContent;\n setRouteAnnouncement(content || asPath);\n }\n }, [\n asPath\n ]);\n return /*#__PURE__*/ _react.default.createElement(\"p\", {\n \"aria-live\": \"assertive\" // Make the announcement immediately.\n ,\n id: \"__next-route-announcer__\",\n role: \"alert\",\n style: nextjsRouteAnnouncerStyles\n }, routeAnnouncement);\n};\n_s(RouteAnnouncer, \"YC5SCNeVaenA6x7RBk3t0O2D/M8=\");\n_c = RouteAnnouncer;\nconst _default = RouteAnnouncer;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=route-announcer.js.map\nvar _c;\n$RefreshReg$(_c, \"RouteAnnouncer\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yb3V0ZS1hbm5vdW5jZXIuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTyxJQUFJO0FBQ2YsQ0FBQyxFQUFDO0FBQ0YsS0FBTUMsQ0FBQUEsQ0FHTjtBQUNBLFNBQVNHLFFBQVFDLE1BQU0sRUFBRUMsR0FBRyxFQUFFO0lBQzFCLElBQUksSUFBSUMsUUFBUUQsSUFBSVQsT0FBT0MsY0FBYyxDQUFDTyxRQUFRRSxNQUFNO1FBQ3BEQyxZQUFZLElBQUk7UUFDaEJDLEtBQUtILEdBQUcsQ0FBQ0MsS0FBSztJQUNsQjtBQUNKO0FBQ0FILFFBQVFMLFNBQVM7SUFDYkcsZ0JBQWdCLFdBQVc7UUFDdkIsT0FBT0E7SUFDWDtJQUNBQyxTQUFTLFdBQVc7UUFDaEIsT0FBT087SUFDWDtBQUNKO0FBQ0EsTUFBTUMsMkJBQTJCQyxtQkFBT0EsQ0FBQyw0R0FBeUM7QUFDbEYsTUFBTUMsU0FBUyxXQUFXLEdBQUdGLHlCQUF5QkcsQ0FBQyxDQUFDRixtQkFBT0EsQ0FBQywrREFBTztBQUN2RSxNQUFNRyxVQUFVSCxtQkFBT0EsQ0FBQywyREFBVTtBQUNsQyxNQUFNSSw2QkFBNkI7SUFDL0JDLFFBQVE7SUFDUkMsTUFBTTtJQUNOQyxRQUFRO0lBQ1JDLFFBQVE7SUFDUkMsVUFBVTtJQUNWQyxTQUFTO0lBQ1RDLFVBQVU7SUFDVkMsS0FBSztJQUNMQyxPQUFPO0lBQ1Asd0ZBQXdGO0lBQ3hGQyxZQUFZO0lBQ1pDLFVBQVU7QUFDZDtBQUNBLE1BQU16QixpQkFBaUIsSUFBSTs7SUFDdkIsTUFBTSxFQUFFMEIsT0FBTSxFQUFHLEdBQUcsQ0FBQyxHQUFHYixRQUFRYyxTQUFTO0lBQ3pDLE1BQU0sQ0FBQ0MsbUJBQW1CQyxxQkFBcUIsR0FBR2xCLE9BQU9WLE9BQU8sQ0FBQzZCLFFBQVEsQ0FBQztJQUMxRSwyRUFBMkU7SUFDM0UscUNBQXFDO0lBQ3JDLE1BQU1DLHVCQUF1QnBCLE9BQU9WLE9BQU8sQ0FBQytCLE1BQU0sQ0FBQ047SUFDbkQsNEVBQTRFO0lBQzVFLDZFQUE2RTtJQUM3RSw4RUFBOEU7SUFDOUUsMEVBQTBFO0lBQzFFLGlDQUFpQztJQUNqQyxtRkFBbUY7SUFDbkZmLE9BQU9WLE9BQU8sQ0FBQ2dDLFNBQVMsQ0FBQyxJQUFJO1FBQ3pCLDRDQUE0QztRQUM1QyxJQUFJRixxQkFBcUJHLE9BQU8sS0FBS1IsUUFBUTtRQUM3Q0sscUJBQXFCRyxPQUFPLEdBQUdSO1FBQy9CLElBQUlTLFNBQVNDLEtBQUssRUFBRTtZQUNoQlAscUJBQXFCTSxTQUFTQyxLQUFLO1FBQ3ZDLE9BQU87WUFDSCxNQUFNQyxhQUFhRixTQUFTRyxhQUFhLENBQUM7WUFDMUMsSUFBSUM7WUFDSixNQUFNQyxVQUFVLENBQUNELHdCQUF3QkYsY0FBYyxJQUFJLEdBQUcsS0FBSyxJQUFJQSxXQUFXSSxTQUFTLEtBQUssSUFBSSxHQUFHRix3QkFBd0JGLGNBQWMsSUFBSSxHQUFHLEtBQUssSUFBSUEsV0FBV0ssV0FBVztZQUNuTGIscUJBQXFCVyxXQUFXZDtRQUNwQyxDQUFDO0lBQ0wsR0FDQTtRQUNJQTtLQUNIO0lBQ0QsT0FBTyxXQUFXLEdBQUdmLE9BQU9WLE9BQU8sQ0FBQzBDLGFBQWEsQ0FBQyxLQUFLO1FBQ25ELGFBQWEsWUFBWSxxQ0FBcUM7O1FBRTlEQyxJQUFJO1FBQ0pDLE1BQU07UUFDTkMsT0FBT2hDO0lBQ1gsR0FBR2M7QUFDUDtHQW5DTTVCO0tBQUFBO0FBb0NOLE1BQU1RLFdBQVdSO0FBRWpCLElBQUksQ0FBQyxPQUFPSCxRQUFRSSxPQUFPLEtBQUssY0FBZSxPQUFPSixRQUFRSSxPQUFPLEtBQUssWUFBWUosUUFBUUksT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPSixRQUFRSSxPQUFPLENBQUM4QyxVQUFVLEtBQUssYUFBYTtJQUNyS3BELE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUUksT0FBTyxFQUFFLGNBQWM7UUFBRUgsT0FBTyxJQUFJO0lBQUM7SUFDbkVILE9BQU9xRCxNQUFNLENBQUNuRCxRQUFRSSxPQUFPLEVBQUVKO0lBQy9CRSxPQUFPRixPQUFPLEdBQUdBLFFBQVFJLE9BQU87QUFDbEMsQ0FBQyxDQUVELDJDQUEyQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yb3V0ZS1hbm5vdW5jZXIuanM/NTgyNyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIFJvdXRlQW5ub3VuY2VyOiBudWxsLFxuICAgIGRlZmF1bHQ6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgUm91dGVBbm5vdW5jZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUm91dGVBbm5vdW5jZXI7XG4gICAgfSxcbiAgICBkZWZhdWx0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9kZWZhdWx0O1xuICAgIH1cbn0pO1xuY29uc3QgX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0ID0gcmVxdWlyZShcIkBzd2MvaGVscGVycy9fL19pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdFwiKTtcbmNvbnN0IF9yZWFjdCA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcInJlYWN0XCIpKTtcbmNvbnN0IF9yb3V0ZXIgPSByZXF1aXJlKFwiLi9yb3V0ZXJcIik7XG5jb25zdCBuZXh0anNSb3V0ZUFubm91bmNlclN0eWxlcyA9IHtcbiAgICBib3JkZXI6IDAsXG4gICAgY2xpcDogXCJyZWN0KDAgMCAwIDApXCIsXG4gICAgaGVpZ2h0OiBcIjFweFwiLFxuICAgIG1hcmdpbjogXCItMXB4XCIsXG4gICAgb3ZlcmZsb3c6IFwiaGlkZGVuXCIsXG4gICAgcGFkZGluZzogMCxcbiAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgIHRvcDogMCxcbiAgICB3aWR0aDogXCIxcHhcIixcbiAgICAvLyBodHRwczovL21lZGl1bS5jb20vQGplc3NlYmVhY2gvYmV3YXJlLXNtdXNoZWQtb2ZmLXNjcmVlbi1hY2Nlc3NpYmxlLXRleHQtNTk1MmE0YzJjYmZlXG4gICAgd2hpdGVTcGFjZTogXCJub3dyYXBcIixcbiAgICB3b3JkV3JhcDogXCJub3JtYWxcIlxufTtcbmNvbnN0IFJvdXRlQW5ub3VuY2VyID0gKCk9PntcbiAgICBjb25zdCB7IGFzUGF0aCAgfSA9ICgwLCBfcm91dGVyLnVzZVJvdXRlcikoKTtcbiAgICBjb25zdCBbcm91dGVBbm5vdW5jZW1lbnQsIHNldFJvdXRlQW5ub3VuY2VtZW50XSA9IF9yZWFjdC5kZWZhdWx0LnVzZVN0YXRlKFwiXCIpO1xuICAgIC8vIE9ubHkgYW5ub3VuY2UgdGhlIHBhdGggY2hhbmdlLCBidXQgbm90IGZvciB0aGUgZmlyc3QgbG9hZCBiZWNhdXNlIHNjcmVlblxuICAgIC8vIHJlYWRlciB3aWxsIGRvIHRoYXQgYXV0b21hdGljYWxseS5cbiAgICBjb25zdCBwcmV2aW91c2x5TG9hZGVkUGF0aCA9IF9yZWFjdC5kZWZhdWx0LnVzZVJlZihhc1BhdGgpO1xuICAgIC8vIEV2ZXJ5IHRpbWUgdGhlIHBhdGggY2hhbmdlcywgYW5ub3VuY2UgdGhlIG5ldyBwYWdl4oCZcyB0aXRsZSBmb2xsb3dpbmcgdGhpc1xuICAgIC8vIHByaW9yaXR5OiBmaXJzdCB0aGUgZG9jdW1lbnQgdGl0bGUgKGZyb20gaGVhZCksIG90aGVyd2lzZSB0aGUgZmlyc3QgaDEsIG9yXG4gICAgLy8gaWYgbm9uZSBvZiB0aGVzZSBleGlzdCwgdGhlbiB0aGUgcGF0aG5hbWUgZnJvbSB0aGUgVVJMLiBUaGlzIG1ldGhvZG9sb2d5IGlzXG4gICAgLy8gaW5zcGlyZWQgYnkgTWFyY3kgU3V0dG9u4oCZcyBhY2Nlc3NpYmxlIGNsaWVudCByb3V0aW5nIHVzZXIgdGVzdGluZy4gTW9yZVxuICAgIC8vIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBoZXJlOlxuICAgIC8vIGh0dHBzOi8vd3d3LmdhdHNieWpzLmNvbS9ibG9nLzIwMTktMDctMTEtdXNlci10ZXN0aW5nLWFjY2Vzc2libGUtY2xpZW50LXJvdXRpbmcvXG4gICAgX3JlYWN0LmRlZmF1bHQudXNlRWZmZWN0KCgpPT57XG4gICAgICAgIC8vIElmIHRoZSBwYXRoIGhhc24ndCBjaGFuZ2UsIHdlIGRvIG5vdGhpbmcuXG4gICAgICAgIGlmIChwcmV2aW91c2x5TG9hZGVkUGF0aC5jdXJyZW50ID09PSBhc1BhdGgpIHJldHVybjtcbiAgICAgICAgcHJldmlvdXNseUxvYWRlZFBhdGguY3VycmVudCA9IGFzUGF0aDtcbiAgICAgICAgaWYgKGRvY3VtZW50LnRpdGxlKSB7XG4gICAgICAgICAgICBzZXRSb3V0ZUFubm91bmNlbWVudChkb2N1bWVudC50aXRsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwYWdlSGVhZGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcImgxXCIpO1xuICAgICAgICAgICAgdmFyIF9wYWdlSGVhZGVyX2lubmVyVGV4dDtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSAoX3BhZ2VIZWFkZXJfaW5uZXJUZXh0ID0gcGFnZUhlYWRlciA9PSBudWxsID8gdm9pZCAwIDogcGFnZUhlYWRlci5pbm5lclRleHQpICE9IG51bGwgPyBfcGFnZUhlYWRlcl9pbm5lclRleHQgOiBwYWdlSGVhZGVyID09IG51bGwgPyB2b2lkIDAgOiBwYWdlSGVhZGVyLnRleHRDb250ZW50O1xuICAgICAgICAgICAgc2V0Um91dGVBbm5vdW5jZW1lbnQoY29udGVudCB8fCBhc1BhdGgpO1xuICAgICAgICB9XG4gICAgfSwgLy8gVE9ETzogc3dpdGNoIHRvIHBhdGhuYW1lICsgcXVlcnkgb2JqZWN0IG9mIGR5bmFtaWMgcm91dGUgcmVxdWlyZW1lbnRzXG4gICAgW1xuICAgICAgICBhc1BhdGhcbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicFwiLCB7XG4gICAgICAgIFwiYXJpYS1saXZlXCI6IFwiYXNzZXJ0aXZlXCIgLy8gTWFrZSB0aGUgYW5ub3VuY2VtZW50IGltbWVkaWF0ZWx5LlxuICAgICAgICAsXG4gICAgICAgIGlkOiBcIl9fbmV4dC1yb3V0ZS1hbm5vdW5jZXJfX1wiLFxuICAgICAgICByb2xlOiBcImFsZXJ0XCIsXG4gICAgICAgIHN0eWxlOiBuZXh0anNSb3V0ZUFubm91bmNlclN0eWxlc1xuICAgIH0sIHJvdXRlQW5ub3VuY2VtZW50KTtcbn07XG5jb25zdCBfZGVmYXVsdCA9IFJvdXRlQW5ub3VuY2VyO1xuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yb3V0ZS1hbm5vdW5jZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwibW9kdWxlIiwiUm91dGVBbm5vdW5jZXIiLCJkZWZhdWx0IiwiX2V4cG9ydCIsInRhcmdldCIsImFsbCIsIm5hbWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX2RlZmF1bHQiLCJfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiXyIsIl9yb3V0ZXIiLCJuZXh0anNSb3V0ZUFubm91bmNlclN0eWxlcyIsImJvcmRlciIsImNsaXAiLCJoZWlnaHQiLCJtYXJnaW4iLCJvdmVyZmxvdyIsInBhZGRpbmciLCJwb3NpdGlvbiIsInRvcCIsIndpZHRoIiwid2hpdGVTcGFjZSIsIndvcmRXcmFwIiwiYXNQYXRoIiwidXNlUm91dGVyIiwicm91dGVBbm5vdW5jZW1lbnQiLCJzZXRSb3V0ZUFubm91bmNlbWVudCIsInVzZVN0YXRlIiwicHJldmlvdXNseUxvYWRlZFBhdGgiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJjdXJyZW50IiwiZG9jdW1lbnQiLCJ0aXRsZSIsInBhZ2VIZWFkZXIiLCJxdWVyeVNlbGVjdG9yIiwiX3BhZ2VIZWFkZXJfaW5uZXJUZXh0IiwiY29udGVudCIsImlubmVyVGV4dCIsInRleHRDb250ZW50IiwiY3JlYXRlRWxlbWVudCIsImlkIiwicm9sZSIsInN0eWxlIiwiX19lc01vZHVsZSIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/route-announcer.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/route-loader.js": +/*!*******************************************************!*\ + !*** ./node_modules/next/dist/client/route-loader.js ***! + \*******************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n markAssetError: function() {\n return markAssetError;\n },\n isAssetError: function() {\n return isAssetError;\n },\n getClientBuildManifest: function() {\n return getClientBuildManifest;\n },\n createRouteLoader: function() {\n return createRouteLoader;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _getassetpathfromroute = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../shared/lib/router/utils/get-asset-path-from-route */ \"./node_modules/next/dist/shared/lib/router/utils/get-asset-path-from-route.js\"));\nconst _trustedtypes = __webpack_require__(/*! ./trusted-types */ \"./node_modules/next/dist/client/trusted-types.js\");\nconst _requestidlecallback = __webpack_require__(/*! ./request-idle-callback */ \"./node_modules/next/dist/client/request-idle-callback.js\");\n// 3.8s was arbitrarily chosen as it's what https://web.dev/interactive\n// considers as \"Good\" time-to-interactive. We must assume something went\n// wrong beyond this point, and then fall-back to a full page transition to\n// show the user something of value.\nconst MS_MAX_IDLE_DELAY = 3800;\nfunction withFuture(key, map, generator) {\n let entry = map.get(key);\n if (entry) {\n if (\"future\" in entry) {\n return entry.future;\n }\n return Promise.resolve(entry);\n }\n let resolver;\n const prom = new Promise((resolve)=>{\n resolver = resolve;\n });\n map.set(key, entry = {\n resolve: resolver,\n future: prom\n });\n return generator ? generator() // eslint-disable-next-line no-sequences\n .then((value)=>(resolver(value), value)).catch((err)=>{\n map.delete(key);\n throw err;\n }) : prom;\n}\nconst ASSET_LOAD_ERROR = Symbol(\"ASSET_LOAD_ERROR\");\nfunction markAssetError(err) {\n return Object.defineProperty(err, ASSET_LOAD_ERROR, {});\n}\nfunction isAssetError(err) {\n return err && ASSET_LOAD_ERROR in err;\n}\nfunction hasPrefetch(link) {\n try {\n link = document.createElement(\"link\");\n return(// with relList.support\n !!window.MSInputMethodContext && !!document.documentMode || link.relList.supports(\"prefetch\"));\n } catch (e) {\n return false;\n }\n}\nconst canPrefetch = hasPrefetch();\nfunction prefetchViaDom(href, as, link) {\n return new Promise((resolve, reject)=>{\n const selector = '\\n link[rel=\"prefetch\"][href^=\"' + href + '\"],\\n link[rel=\"preload\"][href^=\"' + href + '\"],\\n script[src^=\"' + href + '\"]';\n if (document.querySelector(selector)) {\n return resolve();\n }\n link = document.createElement(\"link\");\n // The order of property assignment here is intentional:\n if (as) link.as = as;\n link.rel = \"prefetch\";\n link.crossOrigin = undefined;\n link.onload = resolve;\n link.onerror = ()=>reject(markAssetError(new Error(\"Failed to prefetch: \" + href)));\n // `href` should always be last:\n link.href = href;\n document.head.appendChild(link);\n });\n}\nfunction appendScript(src, script) {\n return new Promise((resolve, reject)=>{\n script = document.createElement(\"script\");\n // The order of property assignment here is intentional.\n // 1. Setup success/failure hooks in case the browser synchronously\n // executes when `src` is set.\n script.onload = resolve;\n script.onerror = ()=>reject(markAssetError(new Error(\"Failed to load script: \" + src)));\n // 2. Configure the cross-origin attribute before setting `src` in case the\n // browser begins to fetch.\n script.crossOrigin = undefined;\n // 3. Finally, set the source and inject into the DOM in case the child\n // must be appended for fetching to start.\n script.src = src;\n document.body.appendChild(script);\n });\n}\n// We wait for pages to be built in dev before we start the route transition\n// timeout to prevent an un-necessary hard navigation in development.\nlet devBuildPromise;\n// Resolve a promise that times out after given amount of milliseconds.\nfunction resolvePromiseWithTimeout(p, ms, err) {\n return new Promise((resolve, reject)=>{\n let cancelled = false;\n p.then((r)=>{\n // Resolved, cancel the timeout\n cancelled = true;\n resolve(r);\n }).catch(reject);\n // We wrap these checks separately for better dead-code elimination in\n // production bundles.\n if (true) {\n (devBuildPromise || Promise.resolve()).then(()=>{\n (0, _requestidlecallback.requestIdleCallback)(()=>setTimeout(()=>{\n if (!cancelled) {\n reject(err);\n }\n }, ms));\n });\n }\n if (false) {}\n });\n}\nfunction getClientBuildManifest() {\n if (self.__BUILD_MANIFEST) {\n return Promise.resolve(self.__BUILD_MANIFEST);\n }\n const onBuildManifest = new Promise((resolve)=>{\n // Mandatory because this is not concurrent safe:\n const cb = self.__BUILD_MANIFEST_CB;\n self.__BUILD_MANIFEST_CB = ()=>{\n resolve(self.__BUILD_MANIFEST);\n cb && cb();\n };\n });\n return resolvePromiseWithTimeout(onBuildManifest, MS_MAX_IDLE_DELAY, markAssetError(new Error(\"Failed to load client build manifest\")));\n}\nfunction getFilesForRoute(assetPrefix, route) {\n if (true) {\n const scriptUrl = assetPrefix + \"/_next/static/chunks/pages\" + encodeURI((0, _getassetpathfromroute.default)(route, \".js\"));\n return Promise.resolve({\n scripts: [\n (0, _trustedtypes.__unsafeCreateTrustedScriptURL)(scriptUrl)\n ],\n // Styles are handled by `style-loader` in development:\n css: []\n });\n }\n return getClientBuildManifest().then((manifest)=>{\n if (!(route in manifest)) {\n throw markAssetError(new Error(\"Failed to lookup route: \" + route));\n }\n const allFiles = manifest[route].map((entry)=>assetPrefix + \"/_next/\" + encodeURI(entry));\n return {\n scripts: allFiles.filter((v)=>v.endsWith(\".js\")).map((v)=>(0, _trustedtypes.__unsafeCreateTrustedScriptURL)(v)),\n css: allFiles.filter((v)=>v.endsWith(\".css\"))\n };\n });\n}\nfunction createRouteLoader(assetPrefix) {\n const entrypoints = new Map();\n const loadedScripts = new Map();\n const styleSheets = new Map();\n const routes = new Map();\n function maybeExecuteScript(src) {\n // With HMR we might need to \"reload\" scripts when they are\n // disposed and readded. Executing scripts twice has no functional\n // differences\n if (false) {} else {\n return appendScript(src);\n }\n }\n function fetchStyleSheet(href) {\n let prom = styleSheets.get(href);\n if (prom) {\n return prom;\n }\n styleSheets.set(href, prom = fetch(href).then((res)=>{\n if (!res.ok) {\n throw new Error(\"Failed to load stylesheet: \" + href);\n }\n return res.text().then((text)=>({\n href: href,\n content: text\n }));\n }).catch((err)=>{\n throw markAssetError(err);\n }));\n return prom;\n }\n return {\n whenEntrypoint (route) {\n return withFuture(route, entrypoints);\n },\n onEntrypoint (route, execute) {\n (execute ? Promise.resolve().then(()=>execute()).then((exports1)=>({\n component: exports1 && exports1.default || exports1,\n exports: exports1\n }), (err)=>({\n error: err\n })) : Promise.resolve(undefined)).then((input)=>{\n const old = entrypoints.get(route);\n if (old && \"resolve\" in old) {\n if (input) {\n entrypoints.set(route, input);\n old.resolve(input);\n }\n } else {\n if (input) {\n entrypoints.set(route, input);\n } else {\n entrypoints.delete(route);\n }\n // when this entrypoint has been resolved before\n // the route is outdated and we want to invalidate\n // this cache entry\n routes.delete(route);\n }\n });\n },\n loadRoute (route, prefetch) {\n return withFuture(route, routes, ()=>{\n let devBuildPromiseResolve;\n if (true) {\n devBuildPromise = new Promise((resolve)=>{\n devBuildPromiseResolve = resolve;\n });\n }\n return resolvePromiseWithTimeout(getFilesForRoute(assetPrefix, route).then((param)=>{\n let { scripts , css } = param;\n return Promise.all([\n entrypoints.has(route) ? [] : Promise.all(scripts.map(maybeExecuteScript)),\n Promise.all(css.map(fetchStyleSheet))\n ]);\n }).then((res)=>{\n return this.whenEntrypoint(route).then((entrypoint)=>({\n entrypoint,\n styles: res[1]\n }));\n }), MS_MAX_IDLE_DELAY, markAssetError(new Error(\"Route did not complete loading: \" + route))).then((param)=>{\n let { entrypoint , styles } = param;\n const res = Object.assign({\n styles: styles\n }, entrypoint);\n return \"error\" in entrypoint ? entrypoint : res;\n }).catch((err)=>{\n if (prefetch) {\n // we don't want to cache errors during prefetch\n throw err;\n }\n return {\n error: err\n };\n }).finally(()=>{\n return devBuildPromiseResolve == null ? void 0 : devBuildPromiseResolve();\n });\n });\n },\n prefetch (route) {\n // https://github.com/GoogleChromeLabs/quicklink/blob/453a661fa1fa940e2d2e044452398e38c67a98fb/src/index.mjs#L115-L118\n // License: Apache 2.0\n let cn;\n if (cn = navigator.connection) {\n // Don't prefetch if using 2G or if Save-Data is enabled.\n if (cn.saveData || /2g/.test(cn.effectiveType)) return Promise.resolve();\n }\n return getFilesForRoute(assetPrefix, route).then((output)=>Promise.all(canPrefetch ? output.scripts.map((script)=>prefetchViaDom(script.toString(), \"script\")) : [])).then(()=>{\n (0, _requestidlecallback.requestIdleCallback)(()=>this.loadRoute(route, true).catch(()=>{}));\n }).catch(()=>{});\n }\n };\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=route-loader.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yb3V0ZS1sb2FkZXIuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRixLQUFNQyxDQUFBQSxDQUtOO0FBQ0EsU0FBU0ssUUFBUUMsTUFBTSxFQUFFQyxHQUFHLEVBQUU7SUFDMUIsSUFBSSxJQUFJQyxRQUFRRCxJQUFJWCxPQUFPQyxjQUFjLENBQUNTLFFBQVFFLE1BQU07UUFDcERDLFlBQVksSUFBSTtRQUNoQkMsS0FBS0gsR0FBRyxDQUFDQyxLQUFLO0lBQ2xCO0FBQ0o7QUFDQUgsUUFBUVAsU0FBUztJQUNiRyxnQkFBZ0IsV0FBVztRQUN2QixPQUFPQTtJQUNYO0lBQ0FDLGNBQWMsV0FBVztRQUNyQixPQUFPQTtJQUNYO0lBQ0FDLHdCQUF3QixXQUFXO1FBQy9CLE9BQU9BO0lBQ1g7SUFDQUMsbUJBQW1CLFdBQVc7UUFDMUIsT0FBT0E7SUFDWDtBQUNKO0FBQ0EsTUFBTU8sMkJBQTJCQyxtQkFBT0EsQ0FBQyw0R0FBeUM7QUFDbEYsTUFBTUMseUJBQXlCLFdBQVcsR0FBR0YseUJBQXlCRyxDQUFDLENBQUNGLG1CQUFPQSxDQUFDLDJJQUFzRDtBQUN0SSxNQUFNRyxnQkFBZ0JILG1CQUFPQSxDQUFDLHlFQUFpQjtBQUMvQyxNQUFNSSx1QkFBdUJKLG1CQUFPQSxDQUFDLHlGQUF5QjtBQUM5RCx1RUFBdUU7QUFDdkUseUVBQXlFO0FBQ3pFLDJFQUEyRTtBQUMzRSxvQ0FBb0M7QUFDcEMsTUFBTUssb0JBQW9CO0FBQzFCLFNBQVNDLFdBQVdDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxTQUFTLEVBQUU7SUFDckMsSUFBSUMsUUFBUUYsSUFBSVYsR0FBRyxDQUFDUztJQUNwQixJQUFJRyxPQUFPO1FBQ1AsSUFBSSxZQUFZQSxPQUFPO1lBQ25CLE9BQU9BLE1BQU1DLE1BQU07UUFDdkIsQ0FBQztRQUNELE9BQU9DLFFBQVFDLE9B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SyxhQUFhO0lBQ3JLdkksT0FBT0MsY0FBYyxDQUFDQyxRQUFRc0YsT0FBTyxFQUFFLGNBQWM7UUFBRXJGLE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPOEgsTUFBTSxDQUFDNUgsUUFBUXNGLE9BQU8sRUFBRXRGO0lBQy9CRSxPQUFPRixPQUFPLEdBQUdBLFFBQVFzRixPQUFPO0FBQ2xDLENBQUMsQ0FFRCx3Q0FBd0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcm91dGUtbG9hZGVyLmpzP2VhMzQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBtYXJrQXNzZXRFcnJvcjogbnVsbCxcbiAgICBpc0Fzc2V0RXJyb3I6IG51bGwsXG4gICAgZ2V0Q2xpZW50QnVpbGRNYW5pZmVzdDogbnVsbCxcbiAgICBjcmVhdGVSb3V0ZUxvYWRlcjogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBtYXJrQXNzZXRFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBtYXJrQXNzZXRFcnJvcjtcbiAgICB9LFxuICAgIGlzQXNzZXRFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc0Fzc2V0RXJyb3I7XG4gICAgfSxcbiAgICBnZXRDbGllbnRCdWlsZE1hbmlmZXN0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldENsaWVudEJ1aWxkTWFuaWZlc3Q7XG4gICAgfSxcbiAgICBjcmVhdGVSb3V0ZUxvYWRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVSb3V0ZUxvYWRlcjtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfZ2V0YXNzZXRwYXRoZnJvbXJvdXRlID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZ2V0LWFzc2V0LXBhdGgtZnJvbS1yb3V0ZVwiKSk7XG5jb25zdCBfdHJ1c3RlZHR5cGVzID0gcmVxdWlyZShcIi4vdHJ1c3RlZC10eXBlc1wiKTtcbmNvbnN0IF9yZXF1ZXN0aWRsZWNhbGxiYWNrID0gcmVxdWlyZShcIi4vcmVxdWVzdC1pZGxlLWNhbGxiYWNrXCIpO1xuLy8gMy44cyB3YXMgYXJiaXRyYXJpbHkgY2hvc2VuIGFzIGl0J3Mgd2hhdCBodHRwczovL3dlYi5kZXYvaW50ZXJhY3RpdmVcbi8vIGNvbnNpZGVycyBhcyBcIkdvb2RcIiB0aW1lLXRvLWludGVyYWN0aXZlLiBXZSBtdXN0IGFzc3VtZSBzb21ldGhpbmcgd2VudFxuLy8gd3JvbmcgYmV5b25kIHRoaXMgcG9pbnQsIGFuZCB0aGVuIGZhbGwtYmFjayB0byBhIGZ1bGwgcGFnZSB0cmFuc2l0aW9uIHRvXG4vLyBzaG93IHRoZSB1c2VyIHNvbWV0aGluZyBvZiB2YWx1ZS5cbmNvbnN0IE1TX01BWF9JRExFX0RFTEFZID0gMzgwMDtcbmZ1bmN0aW9uIHdpdGhGdXR1cmUoa2V5LCBtYXAsIGdlbmVyYXRvcikge1xuICAgIGxldCBlbnRyeSA9IG1hcC5nZXQoa2V5KTtcbiAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgaWYgKFwiZnV0dXJlXCIgaW4gZW50cnkpIHtcbiAgICAgICAgICAgIHJldHVybiBlbnRyeS5mdXR1cmU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShlbnRyeSk7XG4gICAgfVxuICAgIGxldCByZXNvbHZlcjtcbiAgICBjb25zdCBwcm9tID0gbmV3IFByb21pc2UoKHJlc29sdmUpPT57XG4gICAgICAgIHJlc29sdmVyID0gcmVzb2x2ZTtcbiAgICB9KTtcbiAgICBtYXAuc2V0KGtleSwgZW50cnkgPSB7XG4gICAgICAgIHJlc29sdmU6IHJlc29sdmVyLFxuICAgICAgICBmdXR1cmU6IHByb21cbiAgICB9KTtcbiAgICByZXR1cm4gZ2VuZXJhdG9yID8gZ2VuZXJhdG9yKCkvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VxdWVuY2VzXG4gICAgLnRoZW4oKHZhbHVlKT0+KHJlc29sdmVyKHZhbHVlKSwgdmFsdWUpKS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICBtYXAuZGVsZXRlKGtleSk7XG4gICAgICAgIHRocm93IGVycjtcbiAgICB9KSA6IHByb207XG59XG5jb25zdCBBU1NFVF9MT0FEX0VSUk9SID0gU3ltYm9sKFwiQVNTRVRfTE9BRF9FUlJPUlwiKTtcbmZ1bmN0aW9uIG1hcmtBc3NldEVycm9yKGVycikge1xuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXJyLCBBU1NFVF9MT0FEX0VSUk9SLCB7fSk7XG59XG5mdW5jdGlvbiBpc0Fzc2V0RXJyb3IoZXJyKSB7XG4gICAgcmV0dXJuIGVyciAmJiBBU1NFVF9MT0FEX0VSUk9SIGluIGVycjtcbn1cbmZ1bmN0aW9uIGhhc1ByZWZldGNoKGxpbmspIHtcbiAgICB0cnkge1xuICAgICAgICBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpbmtcIik7XG4gICAgICAgIHJldHVybigvLyBkZXRlY3QgSUUxMSBzaW5jZSBpdCBzdXBwb3J0cyBwcmVmZXRjaCBidXQgaXNuJ3QgZGV0ZWN0ZWRcbiAgICAgICAgLy8gd2l0aCByZWxMaXN0LnN1cHBvcnRcbiAgICAgICAgISF3aW5kb3cuTVNJbnB1dE1ldGhvZENvbnRleHQgJiYgISFkb2N1bWVudC5kb2N1bWVudE1vZGUgfHwgbGluay5yZWxMaXN0LnN1cHBvcnRzKFwicHJlZmV0Y2hcIikpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmNvbnN0IGNhblByZWZldGNoID0gaGFzUHJlZmV0Y2goKTtcbmZ1bmN0aW9uIHByZWZldGNoVmlhRG9tKGhyZWYsIGFzLCBsaW5rKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICAgIGNvbnN0IHNlbGVjdG9yID0gJ1xcbiAgICAgIGxpbmtbcmVsPVwicHJlZmV0Y2hcIl1baHJlZl49XCInICsgaHJlZiArICdcIl0sXFxuICAgICAgbGlua1tyZWw9XCJwcmVsb2FkXCJdW2hyZWZePVwiJyArIGhyZWYgKyAnXCJdLFxcbiAgICAgIHNjcmlwdFtzcmNePVwiJyArIGhyZWYgKyAnXCJdJztcbiAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcbiAgICAgICAgLy8gVGhlIG9yZGVyIG9mIHByb3BlcnR5IGFzc2lnbm1lbnQgaGVyZSBpcyBpbnRlbnRpb25hbDpcbiAgICAgICAgaWYgKGFzKSBsaW5rLmFzID0gYXM7XG4gICAgICAgIGxpbmsucmVsID0gXCJwcmVmZXRjaFwiO1xuICAgICAgICBsaW5rLmNyb3NzT3JpZ2luID0gcHJvY2Vzcy5lbnYuX19ORVhUX0NST1NTX09SSUdJTjtcbiAgICAgICAgbGluay5vbmxvYWQgPSByZXNvbHZlO1xuICAgICAgICBsaW5rLm9uZXJyb3IgPSAoKT0+cmVqZWN0KG1hcmtBc3NldEVycm9yKG5ldyBFcnJvcihcIkZhaWxlZCB0byBwcmVmZXRjaDogXCIgKyBocmVmKSkpO1xuICAgICAgICAvLyBgaHJlZmAgc2hvdWxkIGFsd2F5cyBiZSBsYXN0OlxuICAgICAgICBsaW5rLmhyZWYgPSBocmVmO1xuICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gYXBwZW5kU2NyaXB0KHNyYywgc2NyaXB0KSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICAgIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XG4gICAgICAgIC8vIFRoZSBvcmRlciBvZiBwcm9wZXJ0eSBhc3NpZ25tZW50IGhlcmUgaXMgaW50ZW50aW9uYWwuXG4gICAgICAgIC8vIDEuIFNldHVwIHN1Y2Nlc3MvZmFpbHVyZSBob29rcyBpbiBjYXNlIHRoZSBicm93c2VyIHN5bmNocm9ub3VzbHlcbiAgICAgICAgLy8gICAgZXhlY3V0ZXMgd2hlbiBgc3JjYCBpcyBzZXQuXG4gICAgICAgIHNjcmlwdC5vbmxvYWQgPSByZXNvbHZlO1xuICAgICAgICBzY3JpcHQub25lcnJvciA9ICgpPT5yZWplY3QobWFya0Fzc2V0RXJyb3IobmV3IEVycm9yKFwiRmFpbGVkIHRvIGxvYWQgc2NyaXB0OiBcIiArIHNyYykpKTtcbiAgICAgICAgLy8gMi4gQ29uZmlndXJlIHRoZSBjcm9zcy1vcmlnaW4gYXR0cmlidXRlIGJlZm9yZSBzZXR0aW5nIGBzcmNgIGluIGNhc2UgdGhlXG4gICAgICAgIC8vICAgIGJyb3dzZXIgYmVnaW5zIHRvIGZldGNoLlxuICAgICAgICBzY3JpcHQuY3Jvc3NPcmlnaW4gPSBwcm9jZXNzLmVudi5fX05FWFRfQ1JPU1NfT1JJR0lOO1xuICAgICAgICAvLyAzLiBGaW5hbGx5LCBzZXQgdGhlIHNvdXJjZSBhbmQgaW5qZWN0IGludG8gdGhlIERPTSBpbiBjYXNlIHRoZSBjaGlsZFxuICAgICAgICAvLyAgICBtdXN0IGJlIGFwcGVuZGVkIGZvciBmZXRjaGluZyB0byBzdGFydC5cbiAgICAgICAgc2NyaXB0LnNyYyA9IHNyYztcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgIH0pO1xufVxuLy8gV2Ugd2FpdCBmb3IgcGFnZXMgdG8gYmUgYnVpbHQgaW4gZGV2IGJlZm9yZSB3ZSBzdGFydCB0aGUgcm91dGUgdHJhbnNpdGlvblxuLy8gdGltZW91dCB0byBwcmV2ZW50IGFuIHVuLW5lY2Vzc2FyeSBoYXJkIG5hdmlnYXRpb24gaW4gZGV2ZWxvcG1lbnQuXG5sZXQgZGV2QnVpbGRQcm9taXNlO1xuLy8gUmVzb2x2ZSBhIHByb21pc2UgdGhhdCB0aW1lcyBvdXQgYWZ0ZXIgZ2l2ZW4gYW1vdW50IG9mIG1pbGxpc2Vjb25kcy5cbmZ1bmN0aW9uIHJlc29sdmVQcm9taXNlV2l0aFRpbWVvdXQocCwgbXMsIGVycikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+e1xuICAgICAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2U7XG4gICAgICAgIHAudGhlbigocik9PntcbiAgICAgICAgICAgIC8vIFJlc29sdmVkLCBjYW5jZWwgdGhlIHRpbWVvdXRcbiAgICAgICAgICAgIGNhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgICAgICByZXNvbHZlKHIpO1xuICAgICAgICB9KS5jYXRjaChyZWplY3QpO1xuICAgICAgICAvLyBXZSB3cmFwIHRoZXNlIGNoZWNrcyBzZXBhcmF0ZWx5IGZvciBiZXR0ZXIgZGVhZC1jb2RlIGVsaW1pbmF0aW9uIGluXG4gICAgICAgIC8vIHByb2R1Y3Rpb24gYnVuZGxlcy5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpIHtcbiAgICAgICAgICAgIChkZXZCdWlsZFByb21pc2UgfHwgUHJvbWlzZS5yZXNvbHZlKCkpLnRoZW4oKCk9PntcbiAgICAgICAgICAgICAgICAoMCwgX3JlcXVlc3RpZGxlY2FsbGJhY2sucmVxdWVzdElkbGVDYWxsYmFjaykoKCk9PnNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIG1zKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgICAgICAgKDAsIF9yZXF1ZXN0aWRsZWNhbGxiYWNrLnJlcXVlc3RJZGxlQ2FsbGJhY2spKCgpPT5zZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIG1zKSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGdldENsaWVudEJ1aWxkTWFuaWZlc3QoKSB7XG4gICAgaWYgKHNlbGYuX19CVUlMRF9NQU5JRkVTVCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHNlbGYuX19CVUlMRF9NQU5JRkVTVCk7XG4gICAgfVxuICAgIGNvbnN0IG9uQnVpbGRNYW5pZmVzdCA9IG5ldyBQcm9taXNlKChyZXNvbHZlKT0+e1xuICAgICAgICAvLyBNYW5kYXRvcnkgYmVjYXVzZSB0aGlzIGlzIG5vdCBjb25jdXJyZW50IHNhZmU6XG4gICAgICAgIGNvbnN0IGNiID0gc2VsZi5fX0JVSUxEX01BTklGRVNUX0NCO1xuICAgICAgICBzZWxmLl9fQlVJTERfTUFOSUZFU1RfQ0IgPSAoKT0+e1xuICAgICAgICAgICAgcmVzb2x2ZShzZWxmLl9fQlVJTERfTUFOSUZFU1QpO1xuICAgICAgICAgICAgY2IgJiYgY2IoKTtcbiAgICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzb2x2ZVByb21pc2VXaXRoVGltZW91dChvbkJ1aWxkTWFuaWZlc3QsIE1TX01BWF9JRExFX0RFTEFZLCBtYXJrQXNzZXRFcnJvcihuZXcgRXJyb3IoXCJGYWlsZWQgdG8gbG9hZCBjbGllbnQgYnVpbGQgbWFuaWZlc3RcIikpKTtcbn1cbmZ1bmN0aW9uIGdldEZpbGVzRm9yUm91dGUoYXNzZXRQcmVmaXgsIHJvdXRlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpIHtcbiAgICAgICAgY29uc3Qgc2NyaXB0VXJsID0gYXNzZXRQcmVmaXggKyBcIi9fbmV4dC9zdGF0aWMvY2h1bmtzL3BhZ2VzXCIgKyBlbmNvZGVVUkkoKDAsIF9nZXRhc3NldHBhdGhmcm9tcm91dGUuZGVmYXVsdCkocm91dGUsIFwiLmpzXCIpKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICBzY3JpcHRzOiBbXG4gICAgICAgICAgICAgICAgKDAsIF90cnVzdGVkdHlwZXMuX191bnNhZmVDcmVhdGVUcnVzdGVkU2NyaXB0VVJMKShzY3JpcHRVcmwpXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLy8gU3R5bGVzIGFyZSBoYW5kbGVkIGJ5IGBzdHlsZS1sb2FkZXJgIGluIGRldmVsb3BtZW50OlxuICAgICAgICAgICAgY3NzOiBbXVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGdldENsaWVudEJ1aWxkTWFuaWZlc3QoKS50aGVuKChtYW5pZmVzdCk9PntcbiAgICAgICAgaWYgKCEocm91dGUgaW4gbWFuaWZlc3QpKSB7XG4gICAgICAgICAgICB0aHJvdyBtYXJrQXNzZXRFcnJvcihuZXcgRXJyb3IoXCJGYWlsZWQgdG8gbG9va3VwIHJvdXRlOiBcIiArIHJvdXRlKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWxsRmlsZXMgPSBtYW5pZmVzdFtyb3V0ZV0ubWFwKChlbnRyeSk9PmFzc2V0UHJlZml4ICsgXCIvX25leHQvXCIgKyBlbmNvZGVVUkkoZW50cnkpKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNjcmlwdHM6IGFsbEZpbGVzLmZpbHRlcigodik9PnYuZW5kc1dpdGgoXCIuanNcIikpLm1hcCgodik9PigwLCBfdHJ1c3RlZHR5cGVzLl9fdW5zYWZlQ3JlYXRlVHJ1c3RlZFNjcmlwdFVSTCkodikpLFxuICAgICAgICAgICAgY3NzOiBhbGxGaWxlcy5maWx0ZXIoKHYpPT52LmVuZHNXaXRoKFwiLmNzc1wiKSlcbiAgICAgICAgfTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJvdXRlTG9hZGVyKGFzc2V0UHJlZml4KSB7XG4gICAgY29uc3QgZW50cnlwb2ludHMgPSBuZXcgTWFwKCk7XG4gICAgY29uc3QgbG9hZGVkU2NyaXB0cyA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCBzdHlsZVNoZWV0cyA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCByb3V0ZXMgPSBuZXcgTWFwKCk7XG4gICAgZnVuY3Rpb24gbWF5YmVFeGVjdXRlU2NyaXB0KHNyYykge1xuICAgICAgICAvLyBXaXRoIEhNUiB3ZSBtaWdodCBuZWVkIHRvIFwicmVsb2FkXCIgc2NyaXB0cyB3aGVuIHRoZXkgYXJlXG4gICAgICAgIC8vIGRpc3Bvc2VkIGFuZCByZWFkZGVkLiBFeGVjdXRpbmcgc2NyaXB0cyB0d2ljZSBoYXMgbm8gZnVuY3Rpb25hbFxuICAgICAgICAvLyBkaWZmZXJlbmNlc1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgICAgICAgbGV0IHByb20gPSBsb2FkZWRTY3JpcHRzLmdldChzcmMudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICBpZiAocHJvbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU2tpcCBleGVjdXRpbmcgc2NyaXB0IGlmIGl0J3MgYWxyZWFkeSBpbiB0aGUgRE9NOlxuICAgICAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3NjcmlwdFtzcmNePVwiJyArIHNyYyArICdcIl0nKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvYWRlZFNjcmlwdHMuc2V0KHNyYy50b1N0cmluZygpLCBwcm9tID0gYXBwZW5kU2NyaXB0KHNyYykpO1xuICAgICAgICAgICAgcmV0dXJuIHByb207XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYXBwZW5kU2NyaXB0KHNyYyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZmV0Y2hTdHlsZVNoZWV0KGhyZWYpIHtcbiAgICAgICAgbGV0IHByb20gPSBzdHlsZVNoZWV0cy5nZXQoaHJlZik7XG4gICAgICAgIGlmIChwcm9tKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJvbTtcbiAgICAgICAgfVxuICAgICAgICBzdHlsZVNoZWV0cy5zZXQoaHJlZiwgcHJvbSA9IGZldGNoKGhyZWYpLnRoZW4oKHJlcyk9PntcbiAgICAgICAgICAgIGlmICghcmVzLm9rKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmFpbGVkIHRvIGxvYWQgc3R5bGVzaGVldDogXCIgKyBocmVmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXMudGV4dCgpLnRoZW4oKHRleHQpPT4oe1xuICAgICAgICAgICAgICAgICAgICBocmVmOiBocmVmLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB0ZXh0XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgdGhyb3cgbWFya0Fzc2V0RXJyb3IoZXJyKTtcbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4gcHJvbTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgd2hlbkVudHJ5cG9pbnQgKHJvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aEZ1dHVyZShyb3V0ZSwgZW50cnlwb2ludHMpO1xuICAgICAgICB9LFxuICAgICAgICBvbkVudHJ5cG9pbnQgKHJvdXRlLCBleGVjdXRlKSB7XG4gICAgICAgICAgICAoZXhlY3V0ZSA/IFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmV4ZWN1dGUoKSkudGhlbigoZXhwb3J0czEpPT4oe1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IGV4cG9ydHMxICYmIGV4cG9ydHMxLmRlZmF1bHQgfHwgZXhwb3J0czEsXG4gICAgICAgICAgICAgICAgICAgIGV4cG9ydHM6IGV4cG9ydHMxXG4gICAgICAgICAgICAgICAgfSksIChlcnIpPT4oe1xuICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyXG4gICAgICAgICAgICAgICAgfSkpIDogUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCkpLnRoZW4oKGlucHV0KT0+e1xuICAgICAgICAgICAgICAgIGNvbnN0IG9sZCA9IGVudHJ5cG9pbnRzLmdldChyb3V0ZSk7XG4gICAgICAgICAgICAgICAgaWYgKG9sZCAmJiBcInJlc29sdmVcIiBpbiBvbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50cy5zZXQocm91dGUsIGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9sZC5yZXNvbHZlKGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludHMuc2V0KHJvdXRlLCBpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50cy5kZWxldGUocm91dGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdGhpcyBlbnRyeXBvaW50IGhhcyBiZWVuIHJlc29sdmVkIGJlZm9yZVxuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcm91dGUgaXMgb3V0ZGF0ZWQgYW5kIHdlIHdhbnQgdG8gaW52YWxpZGF0ZVxuICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGNhY2hlIGVudHJ5XG4gICAgICAgICAgICAgICAgICAgIHJvdXRlcy5kZWxldGUocm91dGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBsb2FkUm91dGUgKHJvdXRlLCBwcmVmZXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuIHdpdGhGdXR1cmUocm91dGUsIHJvdXRlcywgKCk9PntcbiAgICAgICAgICAgICAgICBsZXQgZGV2QnVpbGRQcm9taXNlUmVzb2x2ZTtcbiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgICAgICAgICAgICAgICBkZXZCdWlsZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldkJ1aWxkUHJvbWlzZVJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVQcm9taXNlV2l0aFRpbWVvdXQoZ2V0RmlsZXNGb3JSb3V0ZShhc3NldFByZWZpeCwgcm91dGUpLnRoZW4oKHBhcmFtKT0+e1xuICAgICAgICAgICAgICAgICAgICBsZXQgeyBzY3JpcHRzICwgY3NzICB9ID0gcGFyYW07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50cy5oYXMocm91dGUpID8gW10gOiBQcm9taXNlLmFsbChzY3JpcHRzLm1hcChtYXliZUV4ZWN1dGVTY3JpcHQpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFByb21pc2UuYWxsKGNzcy5tYXAoZmV0Y2hTdHlsZVNoZWV0KSlcbiAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgfSkudGhlbigocmVzKT0+e1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53aGVuRW50cnlwb2ludChyb3V0ZSkudGhlbigoZW50cnlwb2ludCk9Pih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6IHJlc1sxXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH0pLCBNU19NQVhfSURMRV9ERUxBWSwgbWFya0Fzc2V0RXJyb3IobmV3IEVycm9yKFwiUm91dGUgZGlkIG5vdCBjb21wbGV0ZSBsb2FkaW5nOiBcIiArIHJvdXRlKSkpLnRoZW4oKHBhcmFtKT0+e1xuICAgICAgICAgICAgICAgICAgICBsZXQgeyBlbnRyeXBvaW50ICwgc3R5bGVzICB9ID0gcGFyYW07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzOiBzdHlsZXNcbiAgICAgICAgICAgICAgICAgICAgfSwgZW50cnlwb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcImVycm9yXCIgaW4gZW50cnlwb2ludCA/IGVudHJ5cG9pbnQgOiByZXM7XG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycik9PntcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZldGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBkb24ndCB3YW50IHRvIGNhY2hlIGVycm9ycyBkdXJpbmcgcHJlZmV0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVyclxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLmZpbmFsbHkoKCk9PntcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRldkJ1aWxkUHJvbWlzZVJlc29sdmUgPT0gbnVsbCA/IHZvaWQgMCA6IGRldkJ1aWxkUHJvbWlzZVJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwcmVmZXRjaCAocm91dGUpIHtcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWVMYWJzL3F1aWNrbGluay9ibG9iLzQ1M2E2NjFmYTFmYTk0MGUyZDJlMDQ0NDUyMzk4ZTM4YzY3YTk4ZmIvc3JjL2luZGV4Lm1qcyNMMTE1LUwxMThcbiAgICAgICAgICAgIC8vIExpY2Vuc2U6IEFwYWNoZSAyLjBcbiAgICAgICAgICAgIGxldCBjbjtcbiAgICAgICAgICAgIGlmIChjbiA9IG5hdmlnYXRvci5jb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgLy8gRG9uJ3QgcHJlZmV0Y2ggaWYgdXNpbmcgMkcgb3IgaWYgU2F2ZS1EYXRhIGlzIGVuYWJsZWQuXG4gICAgICAgICAgICAgICAgaWYgKGNuLnNhdmVEYXRhIHx8IC8yZy8udGVzdChjbi5lZmZlY3RpdmVUeXBlKSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGdldEZpbGVzRm9yUm91dGUoYXNzZXRQcmVmaXgsIHJvdXRlKS50aGVuKChvdXRwdXQpPT5Qcm9taXNlLmFsbChjYW5QcmVmZXRjaCA/IG91dHB1dC5zY3JpcHRzLm1hcCgoc2NyaXB0KT0+cHJlZmV0Y2hWaWFEb20oc2NyaXB0LnRvU3RyaW5nKCksIFwic2NyaXB0XCIpKSA6IFtdKSkudGhlbigoKT0+e1xuICAgICAgICAgICAgICAgICgwLCBfcmVxdWVzdGlkbGVjYWxsYmFjay5yZXF1ZXN0SWRsZUNhbGxiYWNrKSgoKT0+dGhpcy5sb2FkUm91dGUocm91dGUsIHRydWUpLmNhdGNoKCgpPT57fSkpO1xuICAgICAgICAgICAgfSkuY2F0Y2goLy8gc3dhbGxvdyBwcmVmZXRjaCBlcnJvcnNcbiAgICAgICAgICAgICgpPT57fSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yb3V0ZS1sb2FkZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwibW9kdWxlIiwibWFya0Fzc2V0RXJyb3IiLCJpc0Fzc2V0RXJyb3IiLCJnZXRDbGllbnRCdWlsZE1hbmlmZXN0IiwiY3JlYXRlUm91dGVMb2FkZXIiLCJfZXhwb3J0IiwidGFyZ2V0IiwiYWxsIiwibmFtZSIsImVudW1lcmFibGUiLCJnZXQiLCJfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQiLCJyZXF1aXJlIiwiX2dldGFzc2V0cGF0aGZyb21yb3V0ZSIsIl8iLCJfdHJ1c3RlZHR5cGVzIiwiX3JlcXVlc3RpZGxlY2FsbGJhY2siLCJNU19NQVhfSURMRV9ERUxBWSIsIndpdGhGdXR1cmUiLCJrZXkiLCJtYXAiLCJnZW5lcmF0b3IiLCJlbnRyeSIsImZ1dHVyZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVzb2x2ZXIiLCJwcm9tIiwic2V0IiwidGhlbiIsImNhdGNoIiwiZXJyIiwiZGVsZXRlIiwiQVNTRVRfTE9BRF9FUlJPUiIsIlN5bWJvbCIsImhhc1ByZWZldGNoIiwibGluayIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsIndpbmRvdyIsIk1TSW5wdXRNZXRob2RDb250ZXh0IiwiZG9jdW1lbnRNb2RlIiwicmVsTGlzdCIsInN1cHBvcnRzIiwiZSIsImNhblByZWZldGNoIiwicHJlZmV0Y2hWaWFEb20iLCJocmVmIiwiYXMiLCJyZWplY3QiLCJzZWxlY3RvciIsInF1ZXJ5U2VsZWN0b3IiLCJyZWwiLCJjcm9zc09yaWdpbiIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfQ1JPU1NfT1JJR0lOIiwib25sb2FkIiwib25lcnJvciIsIkVycm9yIiwiaGVhZCIsImFwcGVuZENoaWxkIiwiYXBwZW5kU2NyaXB0Iiwic3JjIiwic2NyaXB0IiwiYm9keSIsImRldkJ1aWxkUHJvbWlzZSIsInJlc29sdmVQcm9taXNlV2l0aFRpbWVvdXQiLCJwIiwibXMiLCJjYW5jZWxsZWQiLCJyIiwicmVxdWVzdElkbGVDYWxsYmFjayIsInNldFRpbWVvdXQiLCJzZWxmIiwiX19CVUlMRF9NQU5JRkVTVCIsIm9uQnVpbGRNYW5pZmVzdCIsImNiIiwiX19CVUlMRF9NQU5JRkVTVF9DQiIsImdldEZpbGVzRm9yUm91dGUiLCJhc3NldFByZWZpeCIsInJvdXRlIiwic2NyaXB0VXJsIiwiZW5jb2RlVVJJIiwiZGVmYXVsdCIsInNjcmlwdHMiLCJfX3Vuc2FmZUNyZWF0ZVRydXN0ZWRTY3JpcHRVUkwiLCJjc3MiLCJtYW5pZmVzdCIsImFsbEZpbGVzIiwiZmlsdGVyIiwidiIsImVuZHNXaXRoIiwiZW50cnlwb2ludHMiLCJNYXAiLCJsb2FkZWRTY3JpcHRzIiwic3R5bGVTaGVldHMiLCJyb3V0ZXMiLCJtYXliZUV4ZWN1dGVTY3JpcHQiLCJ0b1N0cmluZyIsImZldGNoU3R5bGVTaGVldCIsImZldGNoIiwicmVzIiwib2siLCJ0ZXh0IiwiY29udGVudCIsIndoZW5FbnRyeXBvaW50Iiwib25FbnRyeXBvaW50IiwiZXhlY3V0ZSIsImV4cG9ydHMxIiwiY29tcG9uZW50IiwiZXJyb3IiLCJ1bmRlZmluZWQiLCJpbnB1dCIsIm9sZCIsImxvYWRSb3V0ZSIsInByZWZldGNoIiwiZGV2QnVpbGRQcm9taXNlUmVzb2x2ZSIsInBhcmFtIiwiaGFzIiwiZW50cnlwb2ludCIsInN0eWxlcyIsImFzc2lnbiIsImZpbmFsbHkiLCJjbiIsIm5hdmlnYXRvciIsImNvbm5lY3Rpb24iLCJzYXZlRGF0YSIsInRlc3QiLCJlZmZlY3RpdmVUeXBlIiwib3V0cHV0IiwiX19lc01vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/route-loader.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/router.js": +/*!*************************************************!*\ + !*** ./node_modules/next/dist/client/router.js ***! + \*************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("/* global window */ \nvar _s = $RefreshSig$();\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n Router: function() {\n return _router.default;\n },\n // Export the singletonRouter and this is the public API.\n default: function() {\n return _default;\n },\n withRouter: function() {\n return _withrouter.default;\n },\n useRouter: function() {\n return useRouter;\n },\n createRouter: function() {\n return createRouter;\n },\n makePublicRouterInstance: function() {\n return makePublicRouterInstance;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"./node_modules/next/dist/compiled/react/index.js\"));\nconst _router = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../shared/lib/router/router */ \"./node_modules/next/dist/shared/lib/router/router.js\"));\nconst _routercontext = __webpack_require__(/*! ../shared/lib/router-context */ \"./node_modules/next/dist/shared/lib/router-context.js\");\nconst _iserror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../lib/is-error */ \"./node_modules/next/dist/lib/is-error.js\"));\nconst _withrouter = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./with-router */ \"./node_modules/next/dist/client/with-router.js\"));\nconst singletonRouter = {\n router: null,\n readyCallbacks: [],\n ready (cb) {\n if (this.router) return cb();\n if (true) {\n this.readyCallbacks.push(cb);\n }\n }\n};\n// Create public properties and methods of the router in the singletonRouter\nconst urlPropertyFields = [\n \"pathname\",\n \"route\",\n \"query\",\n \"asPath\",\n \"components\",\n \"isFallback\",\n \"basePath\",\n \"locale\",\n \"locales\",\n \"defaultLocale\",\n \"isReady\",\n \"isPreview\",\n \"isLocaleDomain\",\n \"domainLocales\"\n];\nconst routerEvents = [\n \"routeChangeStart\",\n \"beforeHistoryChange\",\n \"routeChangeComplete\",\n \"routeChangeError\",\n \"hashChangeStart\",\n \"hashChangeComplete\"\n];\nconst coreMethodFields = [\n \"push\",\n \"replace\",\n \"reload\",\n \"back\",\n \"prefetch\",\n \"beforePopState\"\n];\n// Events is a static property on the router, the router doesn't have to be initialized to use it\nObject.defineProperty(singletonRouter, \"events\", {\n get () {\n return _router.default.events;\n }\n});\nfunction getRouter() {\n if (!singletonRouter.router) {\n const message = \"No router instance found.\\n\" + 'You should only use \"next/router\" on the client side of your app.\\n';\n throw new Error(message);\n }\n return singletonRouter.router;\n}\nurlPropertyFields.forEach((field)=>{\n // Here we need to use Object.defineProperty because we need to return\n // the property assigned to the actual router\n // The value might get changed as we change routes and this is the\n // proper way to access it\n Object.defineProperty(singletonRouter, field, {\n get () {\n const router = getRouter();\n return router[field];\n }\n });\n});\ncoreMethodFields.forEach((field)=>{\n singletonRouter[field] = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n const router = getRouter();\n return router[field](...args);\n };\n});\nrouterEvents.forEach((event)=>{\n singletonRouter.ready(()=>{\n _router.default.events.on(event, function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n const eventField = \"on\" + event.charAt(0).toUpperCase() + event.substring(1);\n const _singletonRouter = singletonRouter;\n if (_singletonRouter[eventField]) {\n try {\n _singletonRouter[eventField](...args);\n } catch (err) {\n console.error(\"Error when running the Router event: \" + eventField);\n console.error((0, _iserror.default)(err) ? err.message + \"\\n\" + err.stack : err + \"\");\n }\n }\n });\n });\n});\nconst _default = singletonRouter;\nfunction useRouter() {\n _s();\n const router = _react.default.useContext(_routercontext.RouterContext);\n if (!router) {\n throw new Error(\"NextRouter was not mounted. https://nextjs.org/docs/messages/next-router-not-mounted\");\n }\n return router;\n}\n_s(useRouter, \"rbAhEc3dLGnVlsHWaSDsgP4MZS0=\");\nfunction createRouter() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n singletonRouter.router = new _router.default(...args);\n singletonRouter.readyCallbacks.forEach((cb)=>cb());\n singletonRouter.readyCallbacks = [];\n return singletonRouter.router;\n}\nfunction makePublicRouterInstance(router) {\n const scopedRouter = router;\n const instance = {};\n for (const property of urlPropertyFields){\n if (typeof scopedRouter[property] === \"object\") {\n instance[property] = Object.assign(Array.isArray(scopedRouter[property]) ? [] : {}, scopedRouter[property]) // makes sure query is not stateful\n ;\n continue;\n }\n instance[property] = scopedRouter[property];\n }\n // Events is a static property on the router, the router doesn't have to be initialized to use it\n instance.events = _router.default.events;\n coreMethodFields.forEach((field)=>{\n instance[field] = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n return scopedRouter[field](...args);\n };\n });\n return instance;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=router.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports on update so we can compare the boundary\n // signatures.\n module.hot.dispose(function (data) {\n data.prevExports = currentExports;\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevExports !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevExports !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yb3V0ZXIuanMuanMiLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLEdBQWdCOztBQUNqQ0EsOENBQTZDO0lBQ3pDRyxPQUFPLElBQUk7QUFDZixDQUFDLEVBQUM7QUFDRixLQUFNQyxDQUFBQSxDQU9OO0FBQ0EsU0FBU08sUUFBUUMsTUFBTSxFQUFFQyxHQUFHLEVBQUU7SUFDMUIsSUFBSSxJQUFJQyxRQUFRRCxJQUFJYixPQUFPQyxjQUFjLENBQUNXLFFBQVFFLE1BQU07UUFDcERDLFlBQVksSUFBSTtRQUNoQkMsS0FBS0gsR0FBRyxDQUFDQyxLQUFLO0lBQ2xCO0FBQ0o7QUFDQUgsUUFBUVQsU0FBUztJQUNiRyxRQUFRLFdBQVc7UUFDZixPQUFPWSxRQUFRWCxPQUFPO0lBQzFCO0lBQ0EseURBQXlEO0lBQ3pEQSxTQUFTLFdBQVc7UUFDaEIsT0FBT1k7SUFDWDtJQUNBWCxZQUFZLFdBQVc7UUFDbkIsT0FBT1ksWUFBWWIsT0FBTztJQUM5QjtJQUNBRSxXQUFXLFdBQVc7UUFDbEIsT0FBT0E7SUFDWDtJQUNBQyxjQUFjLFdBQVc7UUFDckIsT0FBT0E7SUFDWDtJQUNBQywwQkFBMEIsV0FBVztRQUNqQyxPQUFPQTtJQUNYO0FBQ0o7QUFDQSxNQUFNVSwyQkFBMkJDLG1CQUFPQSxDQUFDLDRHQUF5QztBQUNsRixNQUFNQyxTQUFTLFdBQVcsR0FBR0YseUJBQXlCRyxDQUFDLENBQUNGLG1CQUFPQSxDQUFDLCtEQUFPO0FBQ3ZFLE1BQU1KLFVBQVUsV0FBVyxHQUFHRyx5QkFBeUJHLENBQUMsQ0FBQ0YsbUJBQU9BLENBQUMseUZBQTZCO0FBQzlGLE1BQU1HLGlCQUFpQkgsbUJBQU9BLENBQUMsMkZBQThCO0FBQzdELE1BQU1JLFdBQVcsV0FBVyxHQUFHTCx5QkFBeUJHLENBQUMsQ0FBQ0YsbUJBQU9BLENBQUMsaUVBQWlCO0FBQ25GLE1BQU1GLGNBQWMsV0FBVyxHQUFHQyx5QkFBeUJHLENBQUMsQ0FBQ0YsbUJB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TUFBTTtJQUN4Q0QsaUJBQWlCSyxPQUFPLENBQUMsQ0FBQ0MsUUFBUTtRQUM5QnFCLFFBQVEsQ0FBQ3JCLE1BQU0sR0FBRyxXQUFXO1lBQ3pCLElBQUksSUFBSUMsT0FBT0MsVUFBVUMsTUFBTSxFQUFFQyxPQUFPLElBQUlDLE1BQU1KLE9BQU9LLE9BQU8sR0FBR0EsT0FBT0wsTUFBTUssT0FBTztnQkFDbkZGLElBQUksQ0FBQ0UsS0FBSyxHQUFHSixTQUFTLENBQUNJLEtBQUs7WUFDaEM7WUFDQSxPQUFPYyxZQUFZLENBQUNwQixNQUFNLElBQUlJO1FBQ2xDO0lBQ0o7SUFDQSxPQUFPaUI7QUFDWDtBQUVBLElBQUksQ0FBQyxPQUFPM0QsUUFBUUksT0FBTyxLQUFLLGNBQWUsT0FBT0osUUFBUUksT0FBTyxLQUFLLFlBQVlKLFFBQVFJLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT0osUUFBUUksT0FBTyxDQUFDMkQsVUFBVSxLQUFLLGFBQWE7SUFDcktqRSxPQUFPQyxjQUFjLENBQUNDLFFBQVFJLE9BQU8sRUFBRSxjQUFjO1FBQUVILE9BQU8sSUFBSTtJQUFDO0lBQ25FSCxPQUFPK0QsTUFBTSxDQUFDN0QsUUFBUUksT0FBTyxFQUFFSjtJQUMvQkUsT0FBT0YsT0FBTyxHQUFHQSxRQUFRSSxPQUFPO0FBQ2xDLENBQUMsQ0FFRCxrQ0FBa0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcm91dGVyLmpzPzMxZmMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIHdpbmRvdyAqLyBcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIFJvdXRlcjogbnVsbCxcbiAgICBkZWZhdWx0OiBudWxsLFxuICAgIHdpdGhSb3V0ZXI6IG51bGwsXG4gICAgdXNlUm91dGVyOiBudWxsLFxuICAgIGNyZWF0ZVJvdXRlcjogbnVsbCxcbiAgICBtYWtlUHVibGljUm91dGVySW5zdGFuY2U6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgUm91dGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9yb3V0ZXIuZGVmYXVsdDtcbiAgICB9LFxuICAgIC8vIEV4cG9ydCB0aGUgc2luZ2xldG9uUm91dGVyIGFuZCB0aGlzIGlzIHRoZSBwdWJsaWMgQVBJLlxuICAgIGRlZmF1bHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2RlZmF1bHQ7XG4gICAgfSxcbiAgICB3aXRoUm91dGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF93aXRocm91dGVyLmRlZmF1bHQ7XG4gICAgfSxcbiAgICB1c2VSb3V0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdXNlUm91dGVyO1xuICAgIH0sXG4gICAgY3JlYXRlUm91dGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVJvdXRlcjtcbiAgICB9LFxuICAgIG1ha2VQdWJsaWNSb3V0ZXJJbnN0YW5jZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBtYWtlUHVibGljUm91dGVySW5zdGFuY2U7XG4gICAgfVxufSk7XG5jb25zdCBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQgPSByZXF1aXJlKFwiQHN3Yy9oZWxwZXJzL18vX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0XCIpO1xuY29uc3QgX3JlYWN0ID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwicmVhY3RcIikpO1xuY29uc3QgX3JvdXRlciA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3JvdXRlclwiKSk7XG5jb25zdCBfcm91dGVyY29udGV4dCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci1jb250ZXh0XCIpO1xuY29uc3QgX2lzZXJyb3IgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuLi9saWIvaXMtZXJyb3JcIikpO1xuY29uc3QgX3dpdGhyb3V0ZXIgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuL3dpdGgtcm91dGVyXCIpKTtcbmNvbnN0IHNpbmdsZXRvblJvdXRlciA9IHtcbiAgICByb3V0ZXI6IG51bGwsXG4gICAgcmVhZHlDYWxsYmFja3M6IFtdLFxuICAgIHJlYWR5IChjYikge1xuICAgICAgICBpZiAodGhpcy5yb3V0ZXIpIHJldHVybiBjYigpO1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgdGhpcy5yZWFkeUNhbGxiYWNrcy5wdXNoKGNiKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG4vLyBDcmVhdGUgcHVibGljIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgb2YgdGhlIHJvdXRlciBpbiB0aGUgc2luZ2xldG9uUm91dGVyXG5jb25zdCB1cmxQcm9wZXJ0eUZpZWxkcyA9IFtcbiAgICBcInBhdGhuYW1lXCIsXG4gICAgXCJyb3V0ZVwiLFxuICAgIFwicXVlcnlcIixcbiAgICBcImFzUGF0aFwiLFxuICAgIFwiY29tcG9uZW50c1wiLFxuICAgIFwiaXNGYWxsYmFja1wiLFxuICAgIFwiYmFzZVBhdGhcIixcbiAgICBcImxvY2FsZVwiLFxuICAgIFwibG9jYWxlc1wiLFxuICAgIFwiZGVmYXVsdExvY2FsZVwiLFxuICAgIFwiaXNSZWFkeVwiLFxuICAgIFwiaXNQcmV2aWV3XCIsXG4gICAgXCJpc0xvY2FsZURvbWFpblwiLFxuICAgIFwiZG9tYWluTG9jYWxlc1wiXG5dO1xuY29uc3Qgcm91dGVyRXZlbnRzID0gW1xuICAgIFwicm91dGVDaGFuZ2VTdGFydFwiLFxuICAgIFwiYmVmb3JlSGlzdG9yeUNoYW5nZVwiLFxuICAgIFwicm91dGVDaGFuZ2VDb21wbGV0ZVwiLFxuICAgIFwicm91dGVDaGFuZ2VFcnJvclwiLFxuICAgIFwiaGFzaENoYW5nZVN0YXJ0XCIsXG4gICAgXCJoYXNoQ2hhbmdlQ29tcGxldGVcIlxuXTtcbmNvbnN0IGNvcmVNZXRob2RGaWVsZHMgPSBbXG4gICAgXCJwdXNoXCIsXG4gICAgXCJyZXBsYWNlXCIsXG4gICAgXCJyZWxvYWRcIixcbiAgICBcImJhY2tcIixcbiAgICBcInByZWZldGNoXCIsXG4gICAgXCJiZWZvcmVQb3BTdGF0ZVwiXG5dO1xuLy8gRXZlbnRzIGlzIGEgc3RhdGljIHByb3BlcnR5IG9uIHRoZSByb3V0ZXIsIHRoZSByb3V0ZXIgZG9lc24ndCBoYXZlIHRvIGJlIGluaXRpYWxpemVkIHRvIHVzZSBpdFxuT2JqZWN0LmRlZmluZVByb3BlcnR5KHNpbmdsZXRvblJvdXRlciwgXCJldmVudHNcIiwge1xuICAgIGdldCAoKSB7XG4gICAgICAgIHJldHVybiBfcm91dGVyLmRlZmF1bHQuZXZlbnRzO1xuICAgIH1cbn0pO1xuZnVuY3Rpb24gZ2V0Um91dGVyKCkge1xuICAgIGlmICghc2luZ2xldG9uUm91dGVyLnJvdXRlcikge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gXCJObyByb3V0ZXIgaW5zdGFuY2UgZm91bmQuXFxuXCIgKyAnWW91IHNob3VsZCBvbmx5IHVzZSBcIm5leHQvcm91dGVyXCIgb24gdGhlIGNsaWVudCBzaWRlIG9mIHlvdXIgYXBwLlxcbic7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpbmdsZXRvblJvdXRlci5yb3V0ZXI7XG59XG51cmxQcm9wZXJ0eUZpZWxkcy5mb3JFYWNoKChmaWVsZCk9PntcbiAgICAvLyBIZXJlIHdlIG5lZWQgdG8gdXNlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBiZWNhdXNlIHdlIG5lZWQgdG8gcmV0dXJuXG4gICAgLy8gdGhlIHByb3BlcnR5IGFzc2lnbmVkIHRvIHRoZSBhY3R1YWwgcm91dGVyXG4gICAgLy8gVGhlIHZhbHVlIG1pZ2h0IGdldCBjaGFuZ2VkIGFzIHdlIGNoYW5nZSByb3V0ZXMgYW5kIHRoaXMgaXMgdGhlXG4gICAgLy8gcHJvcGVyIHdheSB0byBhY2Nlc3MgaXRcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc2luZ2xldG9uUm91dGVyLCBmaWVsZCwge1xuICAgICAgICBnZXQgKCkge1xuICAgICAgICAgICAgY29uc3Qgcm91dGVyID0gZ2V0Um91dGVyKCk7XG4gICAgICAgICAgICByZXR1cm4gcm91dGVyW2ZpZWxkXTtcbiAgICAgICAgfVxuICAgIH0pO1xufSk7XG5jb3JlTWV0aG9kRmllbGRzLmZvckVhY2goKGZpZWxkKT0+e1xuICAgIHNpbmdsZXRvblJvdXRlcltmaWVsZF0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgZm9yKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5Kyspe1xuICAgICAgICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByb3V0ZXIgPSBnZXRSb3V0ZXIoKTtcbiAgICAgICAgcmV0dXJuIHJvdXRlcltmaWVsZF0oLi4uYXJncyk7XG4gICAgfTtcbn0pO1xucm91dGVyRXZlbnRzLmZvckVhY2goKGV2ZW50KT0+e1xuICAgIHNpbmdsZXRvblJvdXRlci5yZWFkeSgoKT0+e1xuICAgICAgICBfcm91dGVyLmRlZmF1bHQuZXZlbnRzLm9uKGV2ZW50LCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGZvcih2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKXtcbiAgICAgICAgICAgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZXZlbnRGaWVsZCA9IFwib25cIiArIGV2ZW50LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgZXZlbnQuc3Vic3RyaW5nKDEpO1xuICAgICAgICAgICAgY29uc3QgX3NpbmdsZXRvblJvdXRlciA9IHNpbmdsZXRvblJvdXRlcjtcbiAgICAgICAgICAgIGlmIChfc2luZ2xldG9uUm91dGVyW2V2ZW50RmllbGRdKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgX3NpbmdsZXRvblJvdXRlcltldmVudEZpZWxkXSguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHdoZW4gcnVubmluZyB0aGUgUm91dGVyIGV2ZW50OiBcIiArIGV2ZW50RmllbGQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCgwLCBfaXNlcnJvci5kZWZhdWx0KShlcnIpID8gZXJyLm1lc3NhZ2UgKyBcIlxcblwiICsgZXJyLnN0YWNrIDogZXJyICsgXCJcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn0pO1xuY29uc3QgX2RlZmF1bHQgPSBzaW5nbGV0b25Sb3V0ZXI7XG5mdW5jdGlvbiB1c2VSb3V0ZXIoKSB7XG4gICAgY29uc3Qgcm91dGVyID0gX3JlYWN0LmRlZmF1bHQudXNlQ29udGV4dChfcm91dGVyY29udGV4dC5Sb3V0ZXJDb250ZXh0KTtcbiAgICBpZiAoIXJvdXRlcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOZXh0Um91dGVyIHdhcyBub3QgbW91bnRlZC4gaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbmV4dC1yb3V0ZXItbm90LW1vdW50ZWRcIik7XG4gICAgfVxuICAgIHJldHVybiByb3V0ZXI7XG59XG5mdW5jdGlvbiBjcmVhdGVSb3V0ZXIoKSB7XG4gICAgZm9yKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5Kyspe1xuICAgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBzaW5nbGV0b25Sb3V0ZXIucm91dGVyID0gbmV3IF9yb3V0ZXIuZGVmYXVsdCguLi5hcmdzKTtcbiAgICBzaW5nbGV0b25Sb3V0ZXIucmVhZHlDYWxsYmFja3MuZm9yRWFjaCgoY2IpPT5jYigpKTtcbiAgICBzaW5nbGV0b25Sb3V0ZXIucmVhZHlDYWxsYmFja3MgPSBbXTtcbiAgICByZXR1cm4gc2luZ2xldG9uUm91dGVyLnJvdXRlcjtcbn1cbmZ1bmN0aW9uIG1ha2VQdWJsaWNSb3V0ZXJJbnN0YW5jZShyb3V0ZXIpIHtcbiAgICBjb25zdCBzY29wZWRSb3V0ZXIgPSByb3V0ZXI7XG4gICAgY29uc3QgaW5zdGFuY2UgPSB7fTtcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHVybFByb3BlcnR5RmllbGRzKXtcbiAgICAgICAgaWYgKHR5cGVvZiBzY29wZWRSb3V0ZXJbcHJvcGVydHldID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICBpbnN0YW5jZVtwcm9wZXJ0eV0gPSBPYmplY3QuYXNzaWduKEFycmF5LmlzQXJyYXkoc2NvcGVkUm91dGVyW3Byb3BlcnR5XSkgPyBbXSA6IHt9LCBzY29wZWRSb3V0ZXJbcHJvcGVydHldKSAvLyBtYWtlcyBzdXJlIHF1ZXJ5IGlzIG5vdCBzdGF0ZWZ1bFxuICAgICAgICAgICAgO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaW5zdGFuY2VbcHJvcGVydHldID0gc2NvcGVkUm91dGVyW3Byb3BlcnR5XTtcbiAgICB9XG4gICAgLy8gRXZlbnRzIGlzIGEgc3RhdGljIHByb3BlcnR5IG9uIHRoZSByb3V0ZXIsIHRoZSByb3V0ZXIgZG9lc24ndCBoYXZlIHRvIGJlIGluaXRpYWxpemVkIHRvIHVzZSBpdFxuICAgIGluc3RhbmNlLmV2ZW50cyA9IF9yb3V0ZXIuZGVmYXVsdC5ldmVudHM7XG4gICAgY29yZU1ldGhvZEZpZWxkcy5mb3JFYWNoKChmaWVsZCk9PntcbiAgICAgICAgaW5zdGFuY2VbZmllbGRdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBmb3IodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKyl7XG4gICAgICAgICAgICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzY29wZWRSb3V0ZXJbZmllbGRdKC4uLmFyZ3MpO1xuICAgICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cm91dGVyLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIm1vZHVsZSIsIlJvdXRlciIsImRlZmF1bHQiLCJ3aXRoUm91dGVyIiwidXNlUm91dGVyIiwiY3JlYXRlUm91dGVyIiwibWFrZVB1YmxpY1JvdXRlckluc3RhbmNlIiwiX2V4cG9ydCIsInRhcmdldCIsImFsbCIsIm5hbWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX3JvdXRlciIsIl9kZWZhdWx0IiwiX3dpdGhyb3V0ZXIiLCJfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiXyIsIl9yb3V0ZXJjb250ZXh0IiwiX2lzZXJyb3IiLCJzaW5nbGV0b25Sb3V0ZXIiLCJyb3V0ZXIiLCJyZWFkeUNhbGxiYWNrcyIsInJlYWR5IiwiY2IiLCJwdXNoIiwidXJsUHJvcGVydHlGaWVsZHMiLCJyb3V0ZXJFdmVudHMiLCJjb3JlTWV0aG9kRmllbGRzIiwiZXZlbnRzIiwiZ2V0Um91dGVyIiwibWVzc2FnZSIsIkVycm9yIiwiZm9yRWFjaCIsImZpZWxkIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJldmVudCIsIm9uIiwiZXZlbnRGaWVsZCIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic3Vic3RyaW5nIiwiX3NpbmdsZXRvblJvdXRlciIsImVyciIsImNvbnNvbGUiLCJlcnJvciIsInN0YWNrIiwidXNlQ29udGV4dCIsIlJvdXRlckNvbnRleHQiLCJzY29wZWRSb3V0ZXIiLCJpbnN0YW5jZSIsInByb3BlcnR5IiwiYXNzaWduIiwiaXNBcnJheSIsIl9fZXNNb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/router.js\n")); + +/***/ }), + +/***/ "./node_modules/next/dist/client/script.js": +/*!*************************************************!*\ + !*** ./node_modules/next/dist/client/script.js ***! + \*************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n handleClientScriptLoad: function() {\n return handleClientScriptLoad;\n },\n initScriptLoader: function() {\n return initScriptLoader;\n },\n default: function() {\n return _default;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _reactdom = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react-dom */ \"./node_modules/next/dist/compiled/react-dom/index.js\"));\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"./node_modules/next/dist/compiled/react/index.js\"));\nconst _headmanagercontext = __webpack_require__(/*! ../shared/lib/head-manager-context */ \"./node_modules/next/dist/shared/lib/head-manager-context.js\");\nconst _headmanager = __webpack_require__(/*! ./head-manager */ \"./node_modules/next/dist/client/head-manager.js\");\nconst _requestidlecallback = __webpack_require__(/*! ./request-idle-callback */ \"./node_modules/next/dist/client/request-idle-callback.js\");\nconst ScriptCache = new Map();\nconst LoadCache = new Set();\nconst ignoreProps = [\n \"onLoad\",\n \"onReady\",\n \"dangerouslySetInnerHTML\",\n \"children\",\n \"onError\",\n \"strategy\"\n];\nconst loadScript = (props)=>{\n const { src , id , onLoad =()=>{} , onReady =null , dangerouslySetInnerHTML , children =\"\" , strategy =\"afterInteractive\" , onError } = props;\n const cacheKey = id || src;\n // Script has already loaded\n if (cacheKey && LoadCache.has(cacheKey)) {\n return;\n }\n // Contents of this script are already loading/loaded\n if (ScriptCache.has(src)) {\n LoadCache.add(cacheKey);\n // It is possible that multiple `next/script` components all have same \"src\", but has different \"onLoad\"\n // This is to make sure the same remote script will only load once, but \"onLoad\" are executed in order\n ScriptCache.get(src).then(onLoad, onError);\n return;\n }\n /** Execute after the script first loaded */ const afterLoad = ()=>{\n // Run onReady for the first time after load event\n if (onReady) {\n onReady();\n }\n // add cacheKey to LoadCache when load successfully\n LoadCache.add(cacheKey);\n };\n const el = document.createElement(\"script\");\n const loadPromise = new Promise((resolve, reject)=>{\n el.addEventListener(\"load\", function(e) {\n resolve();\n if (onLoad) {\n onLoad.call(this, e);\n }\n afterLoad();\n });\n el.addEventListener(\"error\", function(e) {\n reject(e);\n });\n }).catch(function(e) {\n if (onError) {\n onError(e);\n }\n });\n if (dangerouslySetInnerHTML) {\n // Casting since lib.dom.d.ts doesn't have TrustedHTML yet.\n el.innerHTML = dangerouslySetInnerHTML.__html || \"\";\n afterLoad();\n } else if (children) {\n el.textContent = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n afterLoad();\n } else if (src) {\n el.src = src;\n // do not add cacheKey into LoadCache for remote script here\n // cacheKey will be added to LoadCache when it is actually loaded (see loadPromise above)\n ScriptCache.set(src, loadPromise);\n }\n for (const [k, value] of Object.entries(props)){\n if (value === undefined || ignoreProps.includes(k)) {\n continue;\n }\n const attr = _headmanager.DOMAttributeNames[k] || k.toLowerCase();\n el.setAttribute(attr, value);\n }\n if (strategy === \"worker\") {\n el.setAttribute(\"type\", \"text/partytown\");\n }\n el.setAttribute(\"data-nscript\", strategy);\n document.body.appendChild(el);\n};\nfunction handleClientScriptLoad(props) {\n const { strategy =\"afterInteractive\" } = props;\n if (strategy === \"lazyOnload\") {\n window.addEventListener(\"load\", ()=>{\n (0, _requestidlecallback.requestIdleCallback)(()=>loadScript(props));\n });\n } else {\n loadScript(props);\n }\n}\nfunction loadLazyScript(props) {\n if (document.readyState === \"complete\") {\n (0, _requestidlecallback.requestIdleCallback)(()=>loadScript(props));\n } else {\n window.addEventListener(\"load\", ()=>{\n (0, _requestidlecallback.requestIdleCallback)(()=>loadScript(props));\n });\n }\n}\nfunction addBeforeInteractiveToCache() {\n const scripts = [\n ...document.querySelectorAll('[data-nscript=\"beforeInteractive\"]'),\n ...document.querySelectorAll('[data-nscript=\"beforePageRender\"]')\n ];\n scripts.forEach((script)=>{\n const cacheKey = script.id || script.getAttribute(\"src\");\n LoadCache.add(cacheKey);\n });\n}\nfunction initScriptLoader(scriptLoaderItems) {\n scriptLoaderItems.forEach(handleClientScriptLoad);\n addBeforeInteractiveToCache();\n}\nfunction Script(props) {\n const { id , src =\"\" , onLoad =()=>{} , onReady =null , strategy =\"afterInteractive\" , onError , ...restProps } = props;\n // Context is available only during SSR\n const { updateScripts , scripts , getIsSsr , appDir , nonce } = (0, _react.useContext)(_headmanagercontext.HeadManagerContext);\n /**\n * - First mount:\n * 1. The useEffect for onReady executes\n * 2. hasOnReadyEffectCalled.current is false, but the script hasn't loaded yet (not in LoadCache)\n * onReady is skipped, set hasOnReadyEffectCalled.current to true\n * 3. The useEffect for loadScript executes\n * 4. hasLoadScriptEffectCalled.current is false, loadScript executes\n * Once the script is loaded, the onLoad and onReady will be called by then\n * [If strict mode is enabled / is wrapped in component]\n * 5. The useEffect for onReady executes again\n * 6. hasOnReadyEffectCalled.current is true, so entire effect is skipped\n * 7. The useEffect for loadScript executes again\n * 8. hasLoadScriptEffectCalled.current is true, so entire effect is skipped\n *\n * - Second mount:\n * 1. The useEffect for onReady executes\n * 2. hasOnReadyEffectCalled.current is false, but the script has already loaded (found in LoadCache)\n * onReady is called, set hasOnReadyEffectCalled.current to true\n * 3. The useEffect for loadScript executes\n * 4. The script is already loaded, loadScript bails out\n * [If strict mode is enabled / is wrapped in component]\n * 5. The useEffect for onReady executes again\n * 6. hasOnReadyEffectCalled.current is true, so entire effect is skipped\n * 7. The useEffect for loadScript executes again\n * 8. hasLoadScriptEffectCalled.current is true, so entire effect is skipped\n */ const hasOnReadyEffectCalled = (0, _react.useRef)(false);\n (0, _react.useEffect)(()=>{\n const cacheKey = id || src;\n if (!hasOnReadyEffectCalled.current) {\n // Run onReady if script has loaded before but component is re-mounted\n if (onReady && cacheKey && LoadCache.has(cacheKey)) {\n onReady();\n }\n hasOnReadyEffectCalled.current = true;\n }\n }, [\n onReady,\n id,\n src\n ]);\n const hasLoadScriptEffectCalled = (0, _react.useRef)(false);\n (0, _react.useEffect)(()=>{\n if (!hasLoadScriptEffectCalled.current) {\n if (strategy === \"afterInteractive\") {\n loadScript(props);\n } else if (strategy === \"lazyOnload\") {\n loadLazyScript(props);\n }\n hasLoadScriptEffectCalled.current = true;\n }\n }, [\n props,\n strategy\n ]);\n if (strategy === \"beforeInteractive\" || strategy === \"worker\") {\n if (updateScripts) {\n scripts[strategy] = (scripts[strategy] || []).concat([\n {\n id,\n src,\n onLoad,\n onReady,\n onError,\n ...restProps\n }\n ]);\n updateScripts(scripts);\n } else if (getIsSsr && getIsSsr()) {\n // Script has already loaded during SSR\n LoadCache.add(id || src);\n } else if (getIsSsr && !getIsSsr()) {\n loadScript(props);\n }\n }\n // For the app directory, we need React Float to preload these scripts.\n if (appDir) {\n // Before interactive scripts need to be loaded by Next.js' runtime instead\n // of native